Bridge Validator
The transactions and information that each each Validator verifies depends on the governance group to which it belongs. They perform verification based on the block data of each chain according to the
Verification Process
Verification of transactions with Vaults
Verifies that the transaction object data (transaction hash, block number, method, parameter, memo ... ) sent to a Vault matches the data passed to OrbitHub or BridgeContract.
Data to be verified
Block Confirmation. ( ex, ETH & KLAYTN : 24 block confirmation )
Verification that relayed data by operator and
Deposit
event data in transaction are the same.
Verification of transactions with Minters
Verifies that the transaction object data (transaction hash, block number, method, parameter, memo ...) sent to a Minter matches the data passed to OrbitHub or BridgeContract.
Data to be verified
Block Confirmation. ( ex, ETH & KLAYTN : 24 block confirmation )
Verification that relayed data by operator and
RequestSwap
event data in transaction are the same.
Verification for the execution of transactions to each destination chain is carried out in a transaction consensus process.
For Tendermint affiliates, consensus is required prior to signing transactions of fee and sequence information. Thus, Validators verify that the actual transaction signature transfer fee is appropriate and sequence can be executed.
Verification Hash
Used to prevent double spending
Swap & RequestSwap Hash
Used as verification hash to execute Minting or Release.
address hubContract
: Orbit Hub Contract Addressstring fromChain
: Chain Symbol requesting bridging.string toChain
: Chain Symbol to execute bridging.bytes fromAddr
: Address of the chain requesting bridging.bytes toAddr
: Address of chain to execute bridging.bytes token
: Token Information to be executed bridging.bytes32[] bytes32s
: Bytes32 data array used in the bridging consensus process.index 0 : Governance Identifier.
index 1 : Transaction Hash of fromChain.
uint[] uints
: Uint data array used in the bridging consensus processindex 0 : Token Amount to be executed bridging.
index 1 : Token Decimal to be executed bridging
index 2 ( optional ) : Unique Identifier for Requesting Bridging ( ex, depositId in ETH, KLAYTN )
Subscribe Orbitchain
Validator should subscribe OrbitChain's new block and detect SwapRelay event
Verification Detail for SmartContract based transaction
Supported chains : Ethereum, Klaytn, Icon
Events detail of Vault / Minter contracts
Pre-defined in launch-governance settings
address hubContract
: SwapRelay event must be from hubContract addressbytes32 bytes32s[0]
: verify Governance Identifier validator's own id.
Get transaction from Vault / Minter chain using
bytes32 bytes32s[1]
Parse event and compare params with SwapRelay event
string fromChain
string toChain
bytes fromAddr
bytes toAddr
bytes token
: Must be equal to amount, decimal and depositId in array order.uint[] uints[0:2]
Hash two variables from the beginning of an
bytes32[] bytes32s
Hash three variables from the beginning of an
uint[] uints
Verification Detail for Terra transaction
Mint token to other chains
Sample Transaction. HERE
Pre-defined in launch-governance settings
address hubContract
: SwapRelay event must be from hubContract addressbytes32 bytes32s[0]
: verify Governance Identifier validator's own id.
Get transaction from Terra node using
bytes32 bytes32s[1]
Verify transaction exist and succeeded
Filter messages that meet the message type bank/MsgSend and send to vault address
Verify vault address same with SwapRelay event's
bytes fromAddr
Verify filtered messages's token denom and amount of token same with SwapRelay event
bytes token
uint uints[0]
Parse memo in JSON format and compare with SwapRelay event
string toChain
bytes toAddr
uint uints[1]
value must 6Hash two variables from the beginning of an
bytes32[] bytes32s
Hash three variables from the beginning of an
uint[] uints
Release token to Terra address
Typically, verify release of tokens takes place in the minting chain.
But, don't support COSMWASM yet, additional step needed for build Terra transaction
Events will be validated
Verification transaction suggest
Get orbitchain suggestion data object using Governance Identifier, suggestIndex (use pre-defined gov id in launch-governance)
Get orbitchain swap data object(include swapDataArray) using Governance Identifier, suggest data's
uint uints[0]
Verify vault have sufficient funds. have more than swapDataArray's
uint uints[0]
Verify suggestion's gas properly estimated
Verify suggestion's fee properly estimated
Verify suggestion's sequence same with vault address's sequence
Build hash
Last updated