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