wormhole/event_database/schema-docs/bigtable_event_schema.md

4.8 KiB

Wormhole event BigTable schema

Row Keys

Row keys contain the MessageID, delimited by colons, like so: EmitterChain:EmitterAddress:Sequence.

  • EmitterAddress left padded with 0s to 32 bytes, then hex encoded.

  • Sequence left padded with 0s to 16 characters, so rows are ordered in the sequence they occured. BigTable Rows are sorted lexicographically by row key.

BigTable can only be queried for data in the row key. Only row key data is indexed. You cannot query based on the value of a column; however you may filter based on column value.

Column Families

BigTable requires that columns are within a "Column family". Families group columns that store related data. Grouping columns is useful for efficient reads, as you may specify which families you want returned.

The column families listed below represent data unique to a phase of the attestation lifecycle.

  • MessagePublication holds data about a user's interaction with a Wormhole contract. Contains data from the Guardian's VAA struct.

  • QuorumState stores the signed VAA once quorum is reached.

  • TokenTransferPayload stores the decoded payload of transfer messages.

  • AssetMetaPayload stores the decoded payload of asset metadata messages.

  • NFTTransferPayload stores the decoded payload of NFT transfer messages.

  • TokenTransferDetails stores information about the transfer.

  • ChainDetails stores chain-native data supplimented from external source(s).

Column Qualifiers

Each column qualifier below is prefixed with its column family.

MessagePublication

  • MessagePublication:Version Version of the VAA schema.
  • MessagePublication:GuardianSetIndex The index of the active Guardian set.
  • MessagePublication:Timestamp Timestamp when the VAA was created by the Guardian.
  • MessagePublication:Nonce Nonce of the user's transaction.
  • MessagePublication:Sequence Sequence from the interaction with the Wormhole contract.
  • MessagePublication:EmitterChain The chain the message was emitted on.
  • MessagePublication:EmitterAddress The address of the contract that emitted the message.
  • MessagePublication:InitiatingTxID The transaction identifier of the user's interaction with the contract.
  • MessagePublication:Payload The payload of the user's message.

QuorumState

  • QuorumState:SignedVAA the VAA with the signatures that contributed to quorum.

TokenTransferPayload

  • TokenTransferPayload:PayloadId the payload identifier of the payload.
  • TokenTransferPayload:Amount the amount of the transfer.
  • TokenTransferPayload:OriginAddress the address the transfer originates from.
  • TokenTransferPayload:OriginChain the chain identifier of the chain the transfer originates from.
  • TokenTransferPayload:TargetAddress the destination address of the transfer.
  • TokenTransferPayload:TargetChain the destination chain identifier of the transfer.

AssetMetaPayload

  • AssetMetaPayload:PayloadId the payload identifier of the payload.
  • AssetMetaPayload:TokenAddress the address of the token. left padded with 0s to 32 bytes.
  • AssetMetaPayload:TokenChain the chain identifier of the chain the transfer originates from.
  • AssetMetaPayload:Decimals the number of decimals of the token.
  • AssetMetaPayload:Symbol the ticker symbol of the token.
  • AssetMetaPayload:Name the name of the token.

NFTTransferPayload

  • NFTTransferPayload:PayloadId the payload identifier of the payload.
  • NFTTransferPayload:OriginAddress the address the transfer originates from.
  • NFTTransferPayload:OriginChain the chain identifier of the chain the transfer originates from.
  • NFTTransferPayload:Symbol the symbol of the nft.
  • NFTTransferPayload:Name the name of the nft.
  • NFTTransferPayload:TokenId the token identifier of the nft.
  • NFTTransferPayload:URI the URI of the nft.
  • NFTTransferPayload:TargetAddress the destination address of the transfer.
  • NFTTransferPayload:TargetChain the destination chain identifier of the transfer.

TokenTransferDetails

  • TokenTransferDetails:Amount the amount transfered.
  • TokenTransferDetails:NotionalUSD the notional value of the transfer in USD.
  • TokenTransferDetails:OriginSymbol the symbol of the token sent to wormhole.
  • TokenTransferDetails:OriginName the name of the token sent to wormhole.
  • TokenTransferDetails:OriginTokenAddress the address of the token sent to wormhole.

ChainDetails

  • ChainDetails:SenderAddress the native address that sent the message.
  • ChainDetails:ReceiverAddress the native address that received the message.
  • ChainDetails:ResultingTokenAddress the address of the token on the target chain.
  • ChainDetails:ResultingTokenSymbol the symbol of the token that was the final result of the transfer.
  • ChainDetails:ResultingTokenName the name of the token that was the final result of the transfer.