MultisigCommittee
MultisigCommittee
class 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:
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
init(members:threshold:)
convenience init(members: [MultisigMember], threshold: UInt16) throws
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
thresholdgreater 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.
debugDescription
var debugDescription: String { get }
A textual representation of this instance, suitable for debugging.
Calling this property directly is discouraged. Instead, convert an
instance of any type to a string by using the String(reflecting:)
initializer. This initializer works with any type, and uses the custom
debugDescription property for types that conform to
CustomDebugStringConvertible:
struct Point: CustomDebugStringConvertible {
let x: Int, y: Int
var debugDescription: String {
return "(\(x), \(y))"
}
}
let p = Point(x: 21, y: 30)
let s = String(reflecting: p)
print(s)
// Prints "(21, 30)"
The conversion of p to a string in the assignment to s uses the
Point type's debugDescription property.
deriveAddress()
func 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).
members()
func members() -> [MultisigMember]
The members of the committee
scheme()
func scheme() -> SignatureScheme
Return the flag for this signature scheme
threshold()
func threshold() -> UInt16
The total signature weight required to authorize a transaction for the
address corresponding to this MultisigCommittee.
validate()
func validate() throws
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
!=(_:_:)
static func != (lhs: Self, rhs: Self) -> Bool
Returns a Boolean value indicating whether two values are not equal.
Inequality is the inverse of equality. For any values a and b, a != b
implies that a == b is false.
This is the default implementation of the not-equal-to operator (!=)
for any type that conforms to Equatable.
- Parameters:
- lhs: A value to compare.
- rhs: Another value to compare.
==(_:_:)
static func == (self: MultisigCommittee, other: MultisigCommittee) -> Bool
Returns a Boolean value indicating whether two values are equal.
Equality is the inverse of inequality. For any values a and b,
a == b implies that a != b is false.
- Parameters:
- lhs: A value to compare.
- rhs: Another value to compare.