Skip to main content

MultisigCommittee

Namespace: IotaSdk

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
public class MultisigCommittee : IMultisigCommittee, System.IEquatable`1[[IotaSdk.MultisigCommittee, IotaSdk, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.IDisposable

Inheritance Object → MultisigCommittee
Implements IMultisigCommittee, IEquatable<MultisigCommittee>, IDisposable
Attributes NullableContextAttribute, NullableAttribute

Constructors​

MultisigCommittee(UInt64)​

public MultisigCommittee(ulong pointer)

Parameters​

pointer UInt64

MultisigCommittee(MultisigMember[], UInt16)​

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.

public MultisigCommittee(MultisigMember[] members, ushort threshold)

Parameters​

members MultisigMember[]

threshold UInt16

Methods​

Destroy()​

public void Destroy()

Dispose()​

public void Dispose()

DeriveAddress()​

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).

public Address DeriveAddress()

Returns​

Address

Members()​

The members of the committee

public MultisigMember[] Members()

Returns​

MultisigMember[]

Scheme()​

Return the flag for this signature scheme

public SignatureScheme Scheme()

Returns​

SignatureScheme

Threshold()​

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

public ushort Threshold()

Returns​

UInt16

Validate()​

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
public void Validate()

Exceptions​

SdkFfiException

Equals(MultisigCommittee)​

public bool Equals(MultisigCommittee? other)

Parameters​

other MultisigCommittee?

Returns​

Boolean

Equals(Object)​

public override bool Equals(object? obj)

Parameters​

obj Object?

Returns​

Boolean