Skip to main content

MultisigAggregatedSignature

MultisigAggregatedSignature

class MultisigAggregatedSignature

Aggregated signature from members of a multisig committee.

BCS

The BCS serialized form for this type is defined by the following ABNF:

multisig-aggregated-signature = (vector multisig-member-signature)
u16 ; bitmap
multisig-committee

There is also a legacy encoding for this type defined as:

legacy-multisig-aggregated-signature = (vector multisig-member-signature)
roaring-bitmap ; bitmap
legacy-multisig-committee
roaring-bitmap = bytes ; where the contents of the bytes are valid
; according to the serialized spec for
; roaring bitmaps

See https://github.com/RoaringBitmap/RoaringFormatSpec for the specification for the serialized format of RoaringBitmaps.

init(signatures:committee:)

convenience init(signatures: [UserSignature], committee: MultisigCommittee) throws

Construct a MultisigAggregatedSignature from a list of UserSignatures and a MultisigCommittee.

This:

  • validates committee via MultisigCommittee::validate;
  • converts each UserSignature into a MultisigMemberSignature;
  • derives the bitmap by locating each signature's public key in the committee, rejecting duplicates and signatures from non-members;
  • rejects empty signature lists and lists longer than the committee.

The caller must provide signatures in the same order as their corresponding members in committee: for committee [pk1, pk2, pk3, pk4, pk5], [sig1, sig2, sig5] is valid but [sig2, sig1, sig5] is not.

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.

bitmap()

func bitmap() -> UInt16

The bitmap that indicates which committee members provided their signature.

committee()

func committee() -> MultisigCommittee

signatures()

func signatures() -> [MultisigMemberSignature]

The list of signatures from committee 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: MultisigAggregatedSignature, other: MultisigAggregatedSignature) -> 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.