package gravity.v1

Mouse Melon logoGet desktop application:
View/edit binary Protocol Buffers messages

service Msg

msgs.proto:11

Msg defines the state transitions possible within gravity

service Query

query.proto:15

Query defines the gRPC querier service

message Attestation

attestation.proto:38

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: GenesisState

message BatchFees

pool.proto:13

Used in: QueryBatchFeeResponse

message BridgeValidator

types.proto:8

BridgeValidator represents a validator's ETH address and its power

Used in: MsgValsetUpdatedClaim, Valset

enum ClaimType

attestation.proto:12

message ERC20ToDenom

types.proto:41

This records the relationship between an ERC20 token and the denom of the corresponding Cosmos originated asset

Used in: GenesisState

message ERC20Token

attestation.proto:50

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: OutgoingLogicCall, OutgoingTransferTx

message GenesisState

genesis.proto:127

GenesisState struct

message IDSet

pool.proto:9

IDSet represents a set of IDs

message LastObservedEthereumBlockHeight

types.proto:34

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

message MsgConfirmBatch

msgs.proto:149

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: GenesisState, QueryBatchConfirmsResponse

message MsgConfirmLogicCall

msgs.proto:167

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: GenesisState, QueryLogicConfirmsResponse

message MsgSetOrchestratorAddress

msgs.proto:68

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: GenesisState

message MsgValsetConfirm

msgs.proto:91

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: GenesisState, QueryValsetConfirmResponse, QueryValsetConfirmsByNonceResponse

message OutgoingLogicCall

batch.proto:28

OutgoingLogicCall represents an individual logic call from gravity to ETH

Used in: GenesisState, QueryLastPendingLogicCallByAddrResponse, QueryOutgoingLogicCallsResponse

message OutgoingTransferTx

batch.proto:19

OutgoingTransferTx represents an individual send from gravity to ETH

Used in: GenesisState, OutgoingTxBatch, QueryPendingSendToEthResponse

message OutgoingTxBatch

batch.proto:10

OutgoingTxBatch represents a batch of transactions going from gravity to ETH

Used in: GenesisState, QueryBatchRequestByNonceResponse, QueryLastPendingBatchRequestByAddrResponse, QueryOutgoingTxBatchesResponse

message Params

genesis.proto:91

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: GenesisState, QueryParamsResponse

enum SignType

ethereum_signer.proto:7

SignType defines messages that have been signed by an orchestrator

message Valset

types.proto:16

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: GenesisState, QueryCurrentValsetResponse, QueryLastPendingValsetRequestByAddrResponse, QueryLastValsetRequestsResponse, QueryValsetRequestResponse