Skip to main content

Multisig ISM

The MultisigISM is one of the most commonly used ISM types. These ISMs verify that m of n Validators have attested to the validity of a particular interchain message.

Multisig Module Types

Based on the following module types, the relayer will encode the appropriately formatted metadata:

enum Types {
UNUSED,
ROUTING,
AGGREGATION,
LEGACY_MULTISIG,
MERKLE_ROOT_MULTISIG,
MESSAGE_ID_MULTISIG,
NULL, // used with relayer carrying no metadata
CCIP_READ
}

For the aforementioned module types, the following metadata formats are satisfied by the relayer for use by the ISMs:

MessageIdMultisigIsmMetadata

Type: Types.MESSAGE_ID_MULTISIG

Format of metadata:

  • 1st component (len == 32 bytes): Origin merkle tree address
  • 2nd component (len == 32 bytes): Signed checkpoint root
  • 3rd component (len == 4 bytes): Signed checkpoint index
  • 4th component (len == threshold * 65 bytes): Validator signatures

MerkleRootMultisigIsmMetadata

Type: Types.MERKLE_ROOT_MULTISIG

Format of metadata:

  • 1st component (len == 32 bytes) Origin merkle tree address
  • 2nd component (len == 4 bytes) Index of message ID in merkle tree
  • 3rd component (len == 32 bytes) Signed checkpoint message ID
  • 4th component (len == 1024 bytes) Merkle proof
  • 5th component (len == 4 bytes) Signed checkpoint index (computed from proof and index)
  • 6th component (len == threshold * 65 bytes): Validator signatures