Skip to main content

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