On first run: make proto-update-deps make proto-tools To build: make

Early MVP

Happy path implementations


  • An orchestrator may want to submit multiple claims with a msg (withdrawal batch update + MultiSig Set update )
  • Nonces are not unique without a context (withdrawal nonce and MultiSig Set update can have same nonce (=height))
  • A nonce is unique in it's context and never reused
  • Multiple claims by an orchestrator for the same ETH event are forbidden
  • We know the ETH event types beforehand (and handle them as ClaimTypes)
  • For an observation status in Attestation the power AND count thresholds must be exceeded
  • Fraction type allows higher precision math than %. For example with 2/3

A good start to follow the process would be the x/peggy/handler_test.go file

Outgoing TX Pool

  • Unique denominator for peggy vouchers in cosmos (🚧 cut to 15 chars and without a separator due to sdk limitations in v0.38.4)
  • Voucher burning 🔥 (minting in test ⛏️ )
  • Store/ resolve bridged ETH denominator and contract
  • Persistent transaction pool
  • Transactions sorted by fees (on a second index)
  • Extended test setup
  • We have only 1 chainID and 1 ETH contract

Bundle Outgoing TX into Batches

  • OutgoingTxBatch type with OutgoingTransferTx and TransferCoin
  • Logic to build batch from pending TXs based on fee desc order
  • Logic to cancel a batch and revert TXs back to pending pool
  • Incremental and unique IDs for batches to be used for nonces
  • VoucherDenom as first class type

Not covered/ implemented

  • unhappy cases
  • proper unit + integration tests
  • message validation
  • Genesis I/O
  • Parameters
  • authZ: EthereumChainID whitelisted
  • authZ: bridge contract address whitelisted


Path Synopsis
Package params defines the simulation parameters in the simapp.
Package params defines the simulation parameters in the simapp.
Package types is a reverse proxy.
Package types is a reverse proxy.