MultisigCommitteeProtocol
MultisigCommitteeProtocol Objects
class MultisigCommitteeProtocol(typing.Protocol)
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:
multisig-committee = (vector multisig-member)
u16 ; threshold
There is also a legacy encoding for this type defined as:
legacy-multisig-committee = (vector legacy-multisig-member)
u16 ; threshold
derive_address
def derive_address() -> Address
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).
members
def members() -> typing.List[MultisigMember]
The members of the committee
scheme
def scheme() -> SignatureScheme
Return the flag for this signature scheme
threshold
def threshold() -> int
The total signature weight required to authorize a transaction for the
address corresponding to this MultisigCommittee.
validate
def validate() -> None
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