# README
INTERX
INTERX is an interchain engine, proxy, load balancer & security gateway service for communication between backend and frontend.
It will connect to the node using the GRPC endpoint as well as the RPC endpoint (Tendermint RPC
).
Releases
All files in the KIRA releases are always signed with cosign and listed with a corresponding SHA256
checksum. You should NEVER install anything on your machine unless you verified integrity of the files!
To learn more about how to install cosign and verify integrity of files click here
Setup
Prerequisites
Essential dependencies and tools required to build INTERX can be found here. Make sure you run prerequisites-commands successfully before you continue with local development or further installation.
Installation from Github
Binary (interxd
) will be installed in the $GOBIN
directory, please make sure to add it to your system PATH
.
cd $HOME && rm -fvr ./interx && INTERX_BRANCH="<branch-name-or-hash>" && \
git clone https://github.com/KiraCore/interx.git -b $INTERX_BRANCH && \
cd ./interx && chmod -R 777 ./scripts && \
make install && echo "SUCCESS" || echo "FAILED"
How to start
Simple start:
interxd init
interxd start
interxd init
Generate configuration file.
Parameters:
config
- The interx configuration file path. (default = "./config.json")serve_https
- https or http. (default = false)grpc
- The grpc endpoint of the sekaid. (default = "dns:///0.0.0.0:9090")rpc
- The tendermint rpc endpoint of the sekaid (default = "http://0.0.0.0:26657")port
- The interx port. (default = "11000")signing_mnemonic
- The mnemonic file path or word seeds for interx singing service. (deafult = auto generated word seeds)status_sync
- The time in seconds and INTERX syncs node status. (deafult = 5)cache_dir
- The interx cache directory path. (deafult = "cache")max_cache_size
- The maximum cache size. (default = "2GB")caching_duration
- The caching clear duration in seconds. (deafult = 5)download_file_size_limitation
- The maximum download file size. (default = "10MB")faucet_mnemonic
- The mnemonic file path or word seeds for faucet service. (deafult = auto generated word seeds)faucet_time_limit
- The claim time limitation in seconds. (default = 20)
interxd start
Start interx service.
Parameters:
config
- The interx configuration file path. (default = "./config.json")
Configuration
Configurations are available using config.json
.
mnemonic
The 24-words seed string or the file path to the mnemonic file. This is for generating interx priv/pub keys which will be used for response signing.
"mnemonic": "swap exercise equip shoot mad inside floor wheel loan visual stereo build frozen always bulb naive subway foster marine erosion shuffle flee action there"
"mnemonic": "interx.mnemonic"
cache
Cache configurations.
status_sync
Interx has a feature to sync node status.
status_sync
refers the time in seconds and INTERX syncs node status every status_sync
seconds.
"status_sync": 5
cache_dir
Interx has a caching feature.
cache_dir
refers the cache directory.
"cache_dir": "cache"
max_cache_size
Interx has a gabage collection feature.
max_cache_size
refers the maximum cache size. If cache size is over maximum cache size, it will remove random caches. (it remains 90% of maximum cache size)
"max_cache_size": "2 GB"
caching_duration
Interx has a gabage collection feature.
caching_duration
refers the caching clear duration in seconds
"caching_duration": 10
download_file_size_limitation
Interx has a download feature.
download_file_size_limitation
refers the maximum download file size.
"download_file_size_limitation": "10 MB"
faucet
Interx has a faucet feature.
mnemonic
mnemonic
refers the 24-words seed string or the file path to the mnemonic file.
It will be used to generate faucet account priv/pub keys and address.
"mnemonic": "equip exercise shoot mad inside floor wheel loan visual stereo build frozen potato always bulb naive subway foster marine erosion shuffle flee action there"
"mnemonic": "faucet.mnemonic"
faucet_amounts
faucet_amounts
refers the faucet amount for each tokens.
"faucet_amounts": {
"stake": 100000,
"validatortoken": 100000,
"ukex": 100000
},
faucet_minimum_amounts
faucet_minimum_amounts
refers the faucet minimum amount for each tokens.
"faucet_minimum_amounts": {
"stake": 100,
"validatortoken": 100,
"ukex": 100
},
fee_amounts
fee_amounts
refers the fee amount for faucet feature.
For stake
token faucet, we can use different coins for fee. E.g. we can use ukex
for stake
token faucet.
"fee_amounts": {
"stake": "1000ukex",
"validatortoken": "1000ukex",
"ukex": "1000ukex"
}
time_limit
time_limit
refers the claim time limitation in seconds.
Users can re-request faucet after time_limit
seconds.
"time_limit": 20
rpc
rpc
refers the RPC endpoint configurations.
API
API
refers the configurations for each endpoint.
GET
GET
refers the configurations for each GET
endpoint.
"GET": {
"/api/cosmos/status": {
"rate_limit": 0.1,
"auth_rate_limit": 1,
"caching_duration": 30
},
"/api/cosmos/bank/supply": {
"disable": true,
"auth_rate_limit": 1,
"caching_disable": true,
"caching_duration": 30
}
},
disable
disable
refers the options to disable the endpoint.
"disable": true
rate_limit
rate_limit
refers the rate limit for each endpoint.
"rate_limit": 0.1
auth_rate_limit
auth_rate_limit
refers the auth rate limit for each endpoint.
"auth_rate_limit": 1
caching_disable
caching_disable
refers the option to disable caching feature for each endpoint.
"caching_disable": true
caching_duration
caching_duration
refers the customized caching duration time in seconds for each endpoint.
"caching_duration": 30
POST
POST
refers the configurations for each POST
endpoint.
This is the same as GET
configurations.
"POST": {
"/api/cosmos/txs": {
"disable": false,
"rate_limit": 0.1
}
}
Networking
Communication between Sekai and INTERX
INTERX connects to sekai using following ports.
9090
: Connect to the GRPC endpoint for the node.26657
: Connect to the Tendermint RPC endpoint for the node.
Communication between INTERX and the frontend
-
INTERX uses
http
protocol by default. It's possible to confighttp
setting usingSERVE_HTTP
(default = true) env variable. -
INTERX uses
11000
port by default. It's possible to configport
setting usingPORT
(deafult = 11000) env variable.
Communication
/api/kira/metadata
Query functions metadata for sekai
.
/api/interx/metadata
Query functions metadata for interx
.
/api/rpc_methods
Query available RPC methods interx
provides.
/api/status
QueryStatus is a function to query the node status.
/api/cosmos/auth/accounts/{address}
QueryAccount is a function to query the account info.
Parameters
address
: (string
) The account address.
Example
GET http://0.0.0.0:11000/api/cosmos/auth/accounts/kira1gaadckc6g8ne62dzmscgyqkx3sd5p26wrapekd
/api/cosmos/bank/balances/{address}
QueryBalance is a function to query the account balances.
Parameters
address
: (string
) The account address.
Example
GET http://0.0.0.0:11000/api/cosmos/bank/balances/kira1gaadckc6g8ne62dzmscgyqkx3sd5p26wrapekd
/api/cosmos/txs/{hash}
QueryTransactionHash is a function to query transaction details from transaction hash.
Parameters
hash
: (string
) The transaction hash. (e.g. 0x20.....)
Example
/api/faucet
Faucet is a function to claim tokens to the account for free. Returns the available faucet amount when 'claim' and 'token' is unset.
Parameters
claim
: (string
,optional
) The claim address.token
: (string
,optional
) The claim token.
Example
GET http://0.0.0.0:11000/api/faucet GET http://0.0.0.0:11000/api/faucet?claim=kira1kdnep4lm3z6yd3pah0rzfu3dvudgwfjejs9ans&token=stake
/api/withdraws
Withdraws is a function to query withdraw transactions of the account.
Parameters
account
: (string
) The Kira account address.type
: (string
,optional
) The transaction type.max
: (int
,optional
) The maximum number of the results. (1 ~ 1000)last
: (string
,optional
) The last transaction hash.
Example
/api/deposits
Deposits is a function to query deposit transactions of the account.
Parameters
account
: (string
) The Kira account address.type
: (string
,optional
) The transaction type.max
: (int
,optional
) The maximum number of the results. (1 ~ 1000)last
: (string
,optional
) The last transaction hash.
Example
GET http://0.0.0.0:11000/api/deposits?account=kira1h9s2k2s9624kdghp5ztcdgnausg77rdj9cyat6&type=Send
/api/kira/gov/data_keys
QueryDataReferenceKeys is a function to query data reference keys with pagination.
Parameters
limit
: (number
) The limit of the query results. (like page size)offset
: (number
) The offset of the query results. (like page number)count_total
: (bool
,optional
) The option to return total count of data reference keys.
Example
GET http://0.0.0.0:11000/api/kira/gov/data_keys?limit=2&offset=0&count_total=true
/api/kira/gov/data/{key}
QueryDataReference is a function to query data reference by a key.
Parameters
key
: (string
) The data reference key.
Example
GET http://0.0.0.0:11000/api/kira/gov/data/data_reference_key
/download/{module}/{key}
Download is a function to download a data reference or arbitrary data.
Parameters
module
: (string
) The module name. (e.g. DRR for data reference registry.)key
: (string
) The reference key. (It saves reference data with hashed name. e.g. 2CEE6B1689EDDDD6F08EB1EAEC7D3C4E.)
Example
GET http://0.0.0.0:11000/download/DRR/2CEE6B1689EDDDD6F08EB1EAEC7D3C4E
/api/cosmos/txs
Broadcast is a function to broadcast signed transaction.
Parameters
tx
: (object
) The signed transaction to be broadcasted.mode
: (string
) The transaction broadcast mode. (block, sync, async)
Example
POST http://0.0.0.0:11000/api/cosmos/txs
{
"tx": {
"body": {
"messages": [
{
"@type": "/cosmos.bank.v1beta1.MsgSend",
"from_address": "kira1rsgnkecqgq575ynn6rczd96kc23uwtruqx9m0m",
"to_address": "kira1h9s2k2s9624kdghp5ztcdgnausg77rdj9cyat6",
"amount": [
{
"denom": "ukex",
"amount": "250"
}
]
}
],
"memo": "",
"timeout_height": "0",
"extension_options": [],
"non_critical_extension_options": []
},
"auth_info": {
"signer_infos": [
{
"public_key": {
"secp256k1": "Alm0A4BIQyUWy8KXjP1BRMePguZWgFKQa5hzzwRlu3I8"
},
"mode_info": {
"single": {
"mode": "SIGN_MODE_DIRECT"
}
},
"sequence": "0"
}
],
"fee": {
"amount": [],
"gas_limit": "200000"
}
},
"signatures": [
"0BsM4jdGj/qqgtzMaVZkhDZguX6ol6hL18KxR17yr60MqW9yMNMA8bCwonLEPjSL0PgCzVCll5V9tlfAlKak1g=="
]
},
"mode": "block"
}
Additional Infomation
Validator properties
property | type | description |
---|---|---|
moniker | string | Identifies your name as seen on the leaderboard table |
description | string | Longer description of your node |
website | string | URL to the validator website |
avatar | string | URL to image or gif |
social | string | URL to any social profile such as tweeter or telegram |
contact | string | Email address or URL to a submission form |
validator-node-id | string | node id of your validator node (required if you want your node to be present in the network visualizer) |
sentry-node-id | string | comma separated list of sentry node ids (required if you want your nodes to be present in the network visualizer) |
Caching Configurations of RPC methods
/api/rpc_methods
contains caching information for all endpoints
- caching_blocks: integer defining number of blocks that the response data will be preserved
- caching_time: integer defining time in seconds that the response data will be preserved for
- caching_enabled: boolean if caching is enabled or not
Here
0
represents no caching,-1
represents infinit caching,positive integer
represetns the caching time or number of blocks Remember this settings when you set/update manually fromconfig.json
.
Additionally config.json
file contains cache-size-limit
config param which represents the cache size limit in bytes. If cache reaches the limit, it will randomly delete folders/files.
How to update caching configurations
All caching configurations are set in config.json
file.
config.json
file includes rpc_methods
field and there you can set/update caching config of each endpoint.