Notes
- Uses Wormhole chain IDs (NOT EVM chain IDs). E.g. Ethereum=2, BSC=4, Polygon=5, Avalanche=6, Arbitrum=23, Optimism=24, Base=30
- Two-step process: (1)
transferTokenson source, (2)completeTransferon destination with signed VAA - If
arbiterFee> 0, any relayer can submit the VAA and earn the fee. Otherwise, recipient must self-redeem - Bridged tokens are wrapped versions (e.g. “Wormhole-wrapped USDC”) unless using CCTP integration
- 19 guardians must reach 2/3+1 consensus for message finality (typically 1-15 minutes)
- Query
messageFee()on CoreBridge to know how much native token to attach
Its names in a program
On Ethereum,Wormhole is a namespace: its contracts need no import.
Deployments
ABI
WormholeCoreBridgeABI
import WormholeCoreBridgeABI from "./protocols/wormhole/WormholeCoreBridgeABI.json"; Speaks for: coreBridge.
publishMessage(uint32 nonce, bytes payload, uint8 consistencyLevel) payable returns (uint64 sequence)messageFee() view returns (uint256)
WormholeTokenBridgeABI
import WormholeTokenBridgeABI from "./protocols/wormhole/WormholeTokenBridgeABI.json"; Speaks for: tokenBridge.
transferTokens(address token, uint256 amount, uint16 recipientChain, bytes32 recipient, uint256 arbiterFee, uint32 nonce) payable returns (uint64 sequence)completeTransfer(bytes encodedVm)wrappedAsset(uint16 tokenChainId, bytes32 tokenAddress) view returns (address)
Next steps
- Protocols: the other protocols, by what they do.
- Protocols and tokens: calling a contract by its namespace, or through its ABI.
- Glossary: the words these pages use, in plain terms.
