Skip to main content

MultisigCommittee

type MultisigCommittee

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 MultisigCommittee struct {
// contains filtered or unexported fields
}

func LiftFromExternalMultisigCommittee

func LiftFromExternalMultisigCommittee(handle uint64) *MultisigCommittee

func MultisigCommitteeFromBcs

func MultisigCommitteeFromBcs(bcs []byte) (*MultisigCommittee, error)

Create this type from BCS encoded bytes.

func MultisigCommitteeFromJson

func MultisigCommitteeFromJson(json string) (*MultisigCommittee, error)

Create this type from JSON encoded string.

func NewMultisigCommittee

func NewMultisigCommittee(members []*MultisigMember, threshold uint16) (*MultisigCommittee, error)

Construct a `MultisigCommittee` and verify it via `validate`.

This rejects committees that: - have a zero `threshold`; - contain zero or more than ten members; - contain a member with weight 0; - have a `threshold` greater than the sum of all member weights; - contain duplicate public keys.

Note that the order of the members is significant towards deriving the `Address` governed by this committee.

func (*MultisigCommittee) DebugString

func (_self *MultisigCommittee) DebugString() string

func (*MultisigCommittee) DeriveAddress

func (_self *MultisigCommittee) DeriveAddress() *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)`.

func (*MultisigCommittee) Destroy

func (object *MultisigCommittee) Destroy()

func (*MultisigCommittee) Eq

func (_self *MultisigCommittee) Eq(other *MultisigCommittee) bool

func (*MultisigCommittee) Members

func (_self *MultisigCommittee) Members() []*MultisigMember

The members of the committee

func (*MultisigCommittee) Ne

func (_self *MultisigCommittee) Ne(other *MultisigCommittee) bool

func (*MultisigCommittee) Scheme

func (_self *MultisigCommittee) Scheme() SignatureScheme

Return the flag for this signature scheme

func (*MultisigCommittee) Threshold

func (_self *MultisigCommittee) Threshold() uint16

The total signature weight required to authorize a transaction for the address corresponding to this `MultisigCommittee`.

func (*MultisigCommittee) Validate

func (_self *MultisigCommittee) Validate() error

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