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 ObjectMultisigCommittee
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