Skip to main content

MultisigCommitteeInterface

type MultisigCommitteeInterface

A multisig committee

A `MultisigCommittee` is a set of members who collectively control a single `Address` on the IOTA blockchain. The number of required signatures to authorize the execution of a transaction is determined by `(signature_0_weight + signature_1_weight ..) >= threshold`.

BCS

The BCS serialized form for this type is defined by the following ABNF:

```text multisig-committee = (vector multisig-member) u16 ; threshold ```

There is also a legacy encoding for this type defined as:

```text legacy-multisig-committee = (vector legacy-multisig-member) u16 ; threshold ```

type MultisigCommitteeInterface interface {
// Derive an `Address` from this MultisigCommittee.
//
// A MultiSig address
// is defined as the 32-byte Blake2b hash of serializing the
// `SignatureScheme` flag (0x03), the threshold (in little endian), and
// the concatenation of all n flag, public keys and its weight.
//
// `hash(0x03 || threshold || flag_1 || pk_1 || weight_1
// || ... || flag_n || pk_n || weight_n)`.
DeriveAddress() *Address
// The members of the committee
Members() []*MultisigMember
// Return the flag for this signature scheme
Scheme() SignatureScheme
// The total signature weight required to authorize a transaction for the
// address corresponding to this `MultisigCommittee`.
Threshold() uint16
// Checks if the Committee is valid.
//
// A valid committee is one that:
// - Has a nonzero threshold
// - Has at least one member
// - Has at most ten members
// - No member has weight 0
// - the sum of the weights of all members must be at least the threshold
// - contains no duplicate members
Validate() error
}