What a Quorum Certificate Is: One Signature and a Bitmap of Who Signed

The problem it solves

A quorum agreed. Now prove it to somebody who was not there.

The naive proof is every vote: one signature per participant, carried in every message that refers to the decision, growing with the committee and repeated forever.

A quorum certificate is that proof compressed into a single object.

What ours contains, field by field

the hash of the block it certifies the round it was formed in one aggregate signature, which is every signer's signature combined a bitmap saying which committee members are in that combination

The bitmap is the part people underrate. It turns "enough of them agreed" into exactly which ones, countable without asking anybody. A certificate that only proved a threshold was met would be strictly weaker, because a reader could not tell a healthy quorum from a bare one.

The size, which is the whole argument

Add the fields up. Thirty-two bytes for the hash, eight for the round, ninety-six for the signature, and one byte of bitmap for every eight committee members.

four validators: about 137 bytes twenty-one validators: about 139 bytes

Now the naive version. Ninety-six bytes per signature, one per signer:

four validators: 384 bytes twenty-one validators: 2,016 bytes

The certificate barely grows. That is what the aggregation is for, and it is the reason this family of protocols can contemplate a committee of twenty-one at all.

And the encoding hands some of it back

On the wire these objects are JSON, and a signature is serialized as hexadecimal text.

So a ninety-six-byte signature travels as a hundred and ninety-two characters, and a forty-eight-byte key as ninety-six. The structure is constant-size; the encoding roughly doubles whatever the structure achieved.

That is a fair trade for a development network, where readability while debugging is worth more than bytes. It is worth knowing which of the two numbers you are quoting, because the structural one is the one people put in diagrams and the encoded one is the one that goes over the network.

There is a second certificate, for rounds that fail

When a round produces no block, participants vote to abandon it, and those votes aggregate into a timeout certificate: the round, one aggregate signature, and the same style of signer bitmap.

It carries one extra field, and it is the interesting one: the highest ordinary certificate any of its signers had seen.

That is how the next leader learns where to continue from. A stalled round does not lose the chain's place, because the certificate that ends it carries the last known good point forward.

And the timeout message is tagged. What a participant signs is the word "timeout" joined to the round number, so a timeout signature cannot be mistaken for a vote on a block.

Where certificates are not

Neither kind is published. A block returns a proposer and a round; no signature, no signer bitmap, no certificate of any sort.

CONTROL: the proposer and the round arrive in the same response that omits them, so this is the shape of the interface rather than a failed request.

So everything above is a reading of source. None of it can be confirmed by anybody outside this team, and a page describing certificates should say that before a reader assumes otherwise.

And at this size the compression is buying nothing yet

Four validators, in development mode, in one process. The saving between 137 bytes and 384 is real and is not a problem anybody has.

The design is sized for the committee that does not exist yet: a target of twenty-one drawn from up to a hundred, which is a specification and is not deployed.

Building the compact form before you need it is the right order. It does mean the benefit described on this page is a property of the design rather than an outcome of this deployment.

What you can check yourself

solidus_getBlock at any height and look for a signature or a signer list

There is none. Then count the distinct proposers across a dozen heights, and note that counting who proposed is not counting who agreed, and only the second is what a certificate would tell you.

Keep reading

What a Quorum Certificate Is: One Signature and a Bitmap of Who Signed · Solidus