Get desktop application:
View/edit binary Protocol Buffers messages
Msg defines the state transitions possible within gravity
(message has no fields)
MsgSendToEth This is the message that a user calls when they want to bridge an asset it will later be removed when it is included in a batch and successfully submitted tokens are removed from the users balance immediately ------------- AMOUNT: the coin to send across the bridge, note the restriction that this is a single coin not a set of coins that is normal in other Cosmos messages FEE: the fee paid for the bridge, distinct from the fee paid to the chain to actually send this message in the first place. So a successful send has two layers of fees for the user
(message has no fields)
MsgRequestBatch this is a message anyone can send that requests a batch of transactions to send across the bridge be created for whatever block height this message is included in. This acts as a coordination point, the handler for this message looks at the AddToOutgoingPool tx's in the store and generates a batch, also available in the store tied to this message. The validators then grab this batch, sign it, submit the signatures with a MsgConfirmBatch before a relayer can finally submit the batch -------------
(message has no fields)
(message has no fields)
(message has no fields)
MsgSendToCosmosClaim When more than 66% of the active validator set has claimed to have seen the deposit enter the ethereum blockchain coins are issued to the Cosmos address in question -------------
(message has no fields)
BatchSendToEthClaim claims that a batch of send to eth operations on the bridge contract was executed.
(message has no fields)
This informs the Cosmos module that a validator set has been updated.
(message has no fields)
ERC20DeployedClaim allows the Cosmos module to learn about an ERC20 that someone deployed to represent a Cosmos asset
(message has no fields)
This informs the Cosmos module that a logic call has been executed
(message has no fields)
(message has no fields)
This call allows the sender (and only the sender) to cancel a given MsgSendToEth and recieve a refund of the tokens
(message has no fields)
This call allows anyone to submit evidence that a validator has signed a valset, batch, or logic call that never existed. Subject contains the batch, valset, or logic call.
(message has no fields)
Query defines the gRPC querier service
Deployments queries deployments
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
(message has no fields)
Attestation is an aggregate of `claims` that eventually becomes `observed` by all orchestrators EVENT_NONCE: EventNonce a nonce provided by the gravity contract that is unique per event fired These event nonces must be relayed in order. This is a correctness issue, if relaying out of order transaction replay attacks become possible OBSERVED: Observed indicates that >67% of validators have attested to the event, and that the event should be executed by the gravity state machine The actual content of the claims is passed in with the transaction making the claim and then passed through the call stack alongside the attestation while it is processed the key in which the attestation is stored is keyed on the exact details of the claim but there is no reason to store those exact details becuause the next message sender will kindly provide you with them.
Used in:
Used in:
BridgeValidator represents a validator's ETH address and its power
Used in:
,This records the relationship between an ERC20 token and the denom of the corresponding Cosmos originated asset
Used in:
ERC20Token unique identifier for an Ethereum ERC20 token. CONTRACT: The contract address on ETH of the token, this could be a Cosmos originated token, if so it will be the ERC20 address of the representation (note: developers should look up the token symbol using the address on ETH to display for UI)
Used in:
,GenesisState struct
IDSet represents a set of IDs
LastObservedEthereumBlockHeight stores the last observed Ethereum block height along with the Cosmos block height that it was observed at. These two numbers can be used to project outward and always produce batches with timeouts in the future even if no Ethereum block height has been relayed for a long time
MsgConfirmBatch When validators observe a MsgRequestBatch they form a batch by ordering transactions currently in the txqueue in order of highest to lowest fee, cutting off when the batch either reaches a hardcoded maximum size (to be decided, probably around 100) or when transactions stop being profitable (TODO determine this without nondeterminism) This message includes the batch as well as an Ethereum signature over this batch by the validator -------------
Used as request type in: Msg.ConfirmBatch
Used as field type in:
,MsgConfirmLogicCall When validators observe a MsgRequestBatch they form a batch by ordering transactions currently in the txqueue in order of highest to lowest fee, cutting off when the batch either reaches a hardcoded maximum size (to be decided, probably around 100) or when transactions stop being profitable (TODO determine this without nondeterminism) This message includes the batch as well as an Ethereum signature over this batch by the validator -------------
Used as request type in: Msg.ConfirmLogicCall
Used as field type in:
,MsgSetOrchestratorAddress this message allows validators to delegate their voting responsibilities to a given key. This key is then used as an optional authentication method for sigining oracle claims VALIDATOR The validator field is a cosmosvaloper1... string (i.e. sdk.ValAddress) that references a validator in the active set ORCHESTRATOR The orchestrator field is a cosmos1... string (i.e. sdk.AccAddress) that references the key that is being delegated to ETH_ADDRESS This is a hex encoded 0x Ethereum public key that will be used by this validator on Ethereum
Used as request type in: Msg.SetOrchestratorAddress
Used as field type in:
MsgValsetConfirm this is the message sent by the validators when they wish to submit their signatures over the validator set at a given block height. A validator must first call MsgSetEthAddress to set their Ethereum address to be used for signing. Then someone (anyone) must make a ValsetRequest, the request is essentially a messaging mechanism to determine which block all validators should submit signatures over. Finally validators sign the validator set, powers, and Ethereum addresses of the entire validator set at the height of a ValsetRequest and submit that signature with this message. If a sufficient number of validators (66% of voting power) (A) have set Ethereum addresses and (B) submit ValsetConfirm messages with their signatures it is then possible for anyone to view these signatures in the chain store and submit them to Ethereum to update the validator set -------------
Used as request type in: Msg.ValsetConfirm
Used as field type in:
, ,OutgoingLogicCall represents an individual logic call from gravity to ETH
Used in:
, ,OutgoingTransferTx represents an individual send from gravity to ETH
Used in:
, ,OutgoingTxBatch represents a batch of transactions going from gravity to ETH
Used in:
, , ,The slashing fractions for the various gravity related slashing conditions. The first three refer to not submitting a particular message, the third for submitting a different claim for the same Ethereum event unbond_slashing_valsets_window The unbond slashing valsets window is used to determine how many blocks after starting to unbond a validator needs to continue signing blocks. The goal of this paramater is that when a validator leaves the set, if their leaving creates enough change in the validator set to justify an update they will sign a validator set update for the Ethereum bridge that does not include themselves. Allowing us to remove them from the Ethereum bridge and replace them with the new set gracefully. valset_reward Valset rewards are the amount of tokens this chain issues to relayers of validator sets. These can be any ERC20 token in the bridge, but it's strongly advised that chains use only Cosmos originated tokens, which the bridge effectively mints on Ethereum. If you run out of the token you are using for validator set rewards valset updates will fail and the bridge will be vulnerable to highjacking. For these paramaters the zero values are special and indicate not to attempt any reward. This is the default for bootstrapping.
Used in:
,SignType defines messages that have been signed by an orchestrator
Valset is the Ethereum Bridge Multsig Set, each gravity validator also maintains an ETH key to sign messages, these are used to check signatures on ETH because of the significant gas savings
Used in:
, , , ,the reward token in it's Ethereum hex address representation