Bridge module
Bridge module is responsible for storing the information about threshold signature producers (parties) public keys, their RPC addresses and supported token pairs. All threshold signature producers have to fetch information about other parties from this module using the corresponding RPC queries.
State
Params
Bridge module params contains next fields:
- Module admin address - module admin is responsible for making changes in parties lists and thresholds, also only him can add new info about chains, tokens and transfers
- Parties list - parties list is the list of active validators which are parts of TSS protocol.
- Tss threshold - minimum required number of signers.
Definition:
// Params defines the parameters for the module.
message Params {
string module_admin = 1;
repeated Party parties = 2;
uint32 tss_threshold = 3;
}
Example:
{
"params": {
"module_admin": "bridge1...",
"parties": []
}
}
Chain
Chain defines necessary chain properties used during bridging process.
Definition:
message Chain {
string id = 1;
ChainType type =2;
// bridge_address is the address of the bridge contract on the chain
string bridge_address = 3;
// operator is the address of the operator of the bridge contract
string operator = 4;
}
Example:
{
"id": "0",
"type": "BITCOIN",
"bridge_address": "addr...",
"operator": "addr...."
}
Referral
Referral defines referral properties that include the referral address to process withdrawal and the commission rate.
Definition:
message Referral {
// stores a 16-bit unsigned integer
uint32 id = 1;
string withdrawal_address = 2;
string commission_rate = 3;
}
Example:
{
"id": "0",
"withdrawal_address": "bridge1qqqqqnqaea03090u62sd7e42jfv2lhllsckms0",
"commission_rate": "0.1"
}
Referral Rewards
ReferralRewards defines referral rewards properties that include the referral id, token id, amount to claim and total collected amount.
Definition
message ReferralRewards {
uint32 referral_id = 1;
uint64 token_id = 2;
string to_claim = 3;
string total_claimed_amount = 4;
}
Example
{
"referral_id": 1,
"token_id": 1,
"to_claim": "10",
"total_claimed_amount": "100"
}
Token
Token defines necessary token properties like id or decimals used during bridging process.
Definition:
message TokenInfo {
string address = 1;
uint64 decimals = 2;
string chain_id = 3;;
uint64 token_id = 4;
bool is_wrapped = 5;
string min_withdrawal_amount = 6;
}
message TokenMetadata {
string name = 1;
string symbol = 2;
string uri = 3;
string dex_name = 4;
}
message Token {
uint64 id = 1;
TokenMetadata metadata = 2 [(gogoproto.nullable) = false];
// info is the token information on different chains
repeated TokenInfo info = 3 [(gogoproto.nullable) = false];
string commission_rate = 4;
}
Example:
{
"id": "0",
"commission_rate": "0.1",
"metadata": {
"name": "TESTNET",
"symbol": "TEST",
"uri": "",
"dex_name": ""
},
"info": [
{
"address": "0x0000000000000000000000000000000000000000",
"decimals": "18",
"chain_id": "00000",
"token_id": "1",
"is_wrapped": true,
"min_withdrawal_amount": "0"
},
{
"address": "0x0000000000000000000000000000000000000000",
"decimals": "18",
"chain_id": "00000",
"token_id": "1",
"is_wrapped": false,
"min_withdrawal_amount": "0"
}
]
}
Transaction
Transaction defines bridge transaction details.
Definition:
message Transaction {
string deposit_chain_id = 1;
string deposit_tx_hash = 2;
uint64 deposit_tx_index = 3;
uint64 deposit_block = 4;
string deposit_token = 5;
string deposit_amount = 6;
string depositor = 7;
string receiver = 8;
string withdrawal_chain_id = 9;
string withdrawal_tx_hash = 10;
string withdrawal_token = 11;
string signature = 12;
bool is_wrapped = 13;
string withdrawal_amount = 14;
string commission_amount = 15;
string tx_data = 16;
int32 referral_id = 17;
}
Example:
{
"deposit_chain_id": "00000",
"deposit_tx_hash": "0x0000000000000000000000000000000000000000",
"deposit_tx_index": "0",
"deposit_block": "0",
"deposit_token": "0x0000000000000000000000000000000000000000",
"deposit_amount": "00000",
"depositor": "0x0000000000000000000000000000000000000000",
"receiver": "0x0000000000000000000000000000000000000000",
"withdrawal_chain_id": "00000",
"withdrawal_tx_hash": "",
"withdrawal_token": "0x0000000000000000000000000000000000000000",
"signature": "0x0000000000000000000000000000000000000000",
"is_wrapped": true,
"withdrawal_amount": "0",
"commission_amount": "0",
"tx_data": "",
"referral_id": 0
}
TransactionSubmission
message TransactionSubmissions{
string tx_hash = 1;
repeated string submitters = 2;
}
Example:
{
"tx_hash": "0x0000000000000000000000000000000000000000",
"submitters": [
"bridge1..."
]
}
Messages
Chains
InsertChain
InsertChain - adds new chain data to core.
Message example:
message MsgInsertChain {
string creator = 1;
Chain chain = 2 [(gogoproto.nullable) = false];
}
DeleteChain
DeleteChain-deletes chain data from core.
Message example:
message MsgDeleteChain {
string creator = 1;
string chain_id = 2;
}
Tokens
InsertToken
InsertToken - inserts token data to core.
Message example:
message MsgInsertToken {
string creator = 1;
Token token = 2 [(gogoproto.nullable) = false];
}
UpdateToken
UpdateToken - updates queried token metadata on core.
Message example:
message MsgUpdateToken {
string creator = 1;
uint64 token_id = 2;
TokenMetadata metadata = 3 [(gogoproto.nullable) = false];
}
DeleteToken
DeleteToken - deletes token data from core.
Message example:
message MsgDeleteToken {
string creator = 1;
uint64 token_id = 2;
}
Transactions
SubmitTransactions
SubmitTransactions - stores bridge transactions data to core.
Message definition:
message MsgSubmitTransactions {
option (cosmos.msg.v1.signer) = "submitter";
string submitter = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
repeated core.bridge.Transaction transactions = 2 [(gogoproto.nullable) = false];
}
RemoveTransaction
RemoveTransaction - removes bridge transaction data from core.
Message definition:
message MsgRemoveTransaction{
string creator = 1;
string deposit_chain_id = 2;
string deposit_tx_hash = 3;
uint64 deposit_tx_index = 4;
}
TokenInfo
AddTokenInfo
AddTokenInfo - adds new token info to existing one on core.
Message example:
message MsgAddTokenInfo {
string creator = 1;
TokenInfo info = 3 [(gogoproto.nullable) = false];
}
RemoveTokenInfo
Message example:
message MsgRemoveTokenInfo {
string creator = 1;
uint64 token_id = 2;
string chain_id = 3;
}
Referrals
SetReferral
Message definition:
message MsgSetReferral {
string creator = 1;
Referral referral = 2 [(gogoproto.nullable) = false];
}
RemoveReferral
Message definition:
message MsgRemoveReferral {
string creator = 1;
uint32 id = 2;
}
SetReferralRewards
Message definition:
message MsgSetReferralRewards {
string creator = 1;
ReferralRewards rewards = 4 [(gogoproto.nullable) = false];
}
RemoveReferralRewards
Message definition
message MsgRemoveReferralRewards {
string creator = 1;
uint32 referrer_id = 2;
uint64 token_id = 3;
}
Parties
SetParties
Message example:
message MsgSetPartiesList {
string creator =1;
repeated Party parties = 2;
}
Threshold
SetTssThreshold
Message example:
message MsgSetTssThreshold {
string creator =1;
uint32 amount = 2;
}
CLI
Messages
Chains
InsertChain
InsertChain - adds new chain data to core.
bridgeless-cored tx bridge chains insert bridge1... chain.json
Example of chain.json:
{
"id": "0",
"type": 0,
"bridge_address": "0x0000000000000000000000000000000000000000",
"operator": "0x0000000000000000000000000000000000000000"
}
DeleteChain
DeleteChain - deletes chain data by chain id from core.
bridgeless-cored tx bridge chains remove bridge1... 1
Referrals
SetReferral
SetReferral - adds new referral data to core.
bridgeless-cored tx bridge referral set bridge1... referral-id=0 referral-withdrawal-address=bridge1... referral-commission-rate=5
RemoveReferral
RemoveReferral - removes referral data by referral id from core.
bridgeless-cored tx bridge referral remove bridge1... 0
SetReferralRewards
SetReferralRewards - adds new referral rewards data to core.
bridgeless-cored tx bridge referral-rewards set bridge1... referral-id=1 token-id=1 to-claim=10abridge total-collected-amount=100abridge
RemoveReferralRewards
RemoveReferralRewards - removes referral rewards data by referral id and token id from core.
bridgeless-cored tx bridge referral-rewards remove bridge1... 1 1
Tokens
InsertToken
InsertToken - inserts token data to core.
bridgeless-cored tx bridge tokens insert bridge1... token.json
Example of token.json:
{
"id": 1,
"commission_rate": "0.1",
"metadata": {
"name": "TESTNET",
"symbol": "TEST",
"uri": "https://example.com"
},
"info": [
{
"address": "0x0000000000000000000000000000000000000000",
"decimals": 18,
"chain_id": "00000",
"token_id": 1,
"is_wrapped": true
},
{
"address": "0x0000000000000000000000000000000000000000",
"decimals": 18,
"chain_id": "00000",
"token_id": 1,
"is_wrapped": false
}
]
}
UpdateToken
UpdateToken - updates queried token metadata on core.
bridgeless-cored tx bridge tokens update bridge1... token.json
DeleteToken
DeleteToken - deletes token data by token id from core.
bridgeless-cored tx bridge tokens remove bridge1... 1
Transactions
SubmitTransactions
SubmitTransactions - stores bridge transactions data to core.
bridgeless-cored tx bridge transactions submit bridge1... tx.json
TokenInfo
AddTokenInfo
AddTokenInfo - adds new token info to existing one on core.
bridgeless-cored tx bridge tokens add-info bridge1... info.json
RemoveTokenInfo
bridgeless-cored tx bridge tokens remove-info bridge1... 1 [token-id] 1 [chain-id]
Parties
SetParties
bridgeless-cored tx bridge parties set default bridge1... bridge1...,bridge1...
SetTssThreshold
bridgeless-cored tx bridge threshold set-tss-threshold bridge1... 5
Query
Params
bridgeless-cored query bridge params
Response example:
params:
module_admin: bridge1...
parties:
- address: bridge1...
- address: bridge1...
tss_threshold: 0
Chains
QueryChains
bridgeless-cored query bridge chains
Response example:
chains:
- bridge_address: m4...
id: "1"
operator: m4...
type: BITCOIN
- bridge_address: Zx...
id: "2"
operator: Zx...
type: ZANO
- bridge_address: 0x...
id: "3"
operator: 0x...
type: EVM
- bridge_address: 0x...
id: "4"
operator: 0x...
type: EVM
QueryChainById
bridgeless-cored query bridge chain 1
Response example:
chain:
bridge_address: m4...
id: "1"
operator: m4...
type: BITCOIN
Referrals
GetReferralById
bridgeless-cored query bridge referrals 1
Response example:
referral:
commission_rate: "0.1"
id: "1"
withdrawal_address: bridge1qqqqqnqaea03090u62sd7e42jfv2lhllsckms0
GetQueryGetReferrals
bridgeless-cored query bridge referrals
Response example:
referrals:
- commission_rate: "0.1"
id: "1"
withdrawal_address: bridge1qqqqqnqaea03090u62sd7e42jfv2lhllsckms0
GetReferralRewardsByToken
bridgeless-cored query bridge referral-rewards 1 1
Response example:
referral_rewards:
referral_id: "1"
to_claim: "10"
token_id: "1"
total_claimed_amount: "100"
GetQueryGetReferralsRewardsById
bridgeless-cored query bridge referrals-rewards
Response example:
referrals_rewards:
- referral_id: "1"
to_claim: "10"
token_id: "1"
total_claimed_amount: "100"
Tokens
QueryAllTokens
bridgeless-cored query bridge tokens
Response example:
tokens:
- commission_rate: "0.5"
id: "1"
info:
- address: 0x0000000000000000000000000000000000000000
chain_id: "00000"
decimals: "18"
is_wrapped: true
token_id: "1"
- address: "0x0000000000000000000000000000000000000000"
chain_id: "00000"
decimals: "18"
is_wrapped: false
token_id: "1"
metadata:
name: TESTNET
symbol: TEST
uri: https://example.com
QueryTokenById
bridgeless-cored query bridge token 1
Response example:
tokens:
- commission_rate: "0.5"
id: "1"
info:
- address: 0x0000000000000000000000000000000000000000
chain_id: "00000"
decimals: "18"
is_wrapped: true
token_id: "1"
- address: "0x0000000000000000000000000000000000000000"
chain_id: "00000"
decimals: "18"
is_wrapped: false
token_id: "1"
metadata:
name: TESTNET
symbol: TEST
uri: https://example.com
QueryTokenPairs
bridgeless-cored query bridge token-pairs 1 0x0000000000000000000000000000000000000000 2
Response example:
address: 0x0000000000000000000000000000000000000000
chain_id: "2"
decimals: "18"
is_wrapped: true
token_id: "1"
TokenInfo
QueryTokenInfo
bridgeless-cored query bridge token-info 1 0x...
Response example:
info:
address: 0x0000000000000000000000000000000000000000
chain_id: "00000"
decimals: "18"
is_wrapped: true
token_id: "1"
Transactions
QueryAllTransactions
bridgeless-cored query bridge transactions
Response example:
transactions:
- commission_amount: "0"
deposit_amount: "00000"
deposit_block: "0"
deposit_chain_id: "0000"
deposit_token: "0x0000000000000000000000000000000000000000"
deposit_tx_hash: 0x0000000000000000000000000000000000000000
deposit_tx_index: "0"
depositor: 0x0000000000000000000000000000000000000000
is_wrapped: true
receiver: 0x0000000000000000000000000000000000000000
signature: 0x0000000000000000000000000000000000000000
tx_data: ""
withdrawal_amount: "0"
withdrawal_chain_id: "0"
withdrawal_token: 0x0000000000000000000000000000000000000000
withdrawal_tx_hash: ""
QueryTransactionById
bridgeless-cored query bridge transaction 0x/2/0x
Response example:
transactions:
- commission_amount: "0"
deposit_amount: "00000"
deposit_block: "0"
deposit_chain_id: "0000"
deposit_token: "0x0000000000000000000000000000000000000000"
deposit_tx_hash: 0x0000000000000000000000000000000000000000
deposit_tx_index: "0"
depositor: 0x0000000000000000000000000000000000000000
is_wrapped: true
receiver: 0x0000000000000000000000000000000000000000
signature: 0x0000000000000000000000000000000000000000
tx_data: ""
withdrawal_amount: "0"
withdrawal_chain_id: "0"
withdrawal_token: 0x0000000000000000000000000000000000000000
withdrawal_tx_hash: ""
QueryAllTransactionsSubmissions
bridgeless-cored query bridge transactions-submissions
Response example:
txs_submissions:
- submitters:
- bridge1....
tx_hash: 0x0000000000000000000000000000000000000000
QueryAllTransactionsSubmissions
bridgeless-cored query bridge transaction-submissions 0x0000000000000000000000000000000000000000
Response example:
txs_submissions:
- submitters:
- bridge1....
tx_hash: 0x0000000000000000000000000000000000000000