This package implements a full block generator component, to be used by participants of the blind-bid protocol in the SBA* consensus. It is internally made up of two distinct components, a score generator, and a candidate generator.
Block Generator
is the first of the two full-node types eligible to participate in the consensus (the other being the Provisioner
). To become a Block Generator
, a full-node has to submit a Bid Transaction
. The Block Generator
is eligible to participate in one phase - the block generation where the Block Generators
participates in a non-interactive lottery to be able to forge a candidate block.
The block generation makes use of bulletproof
-based zero-knowledge cryptography in order to prove the correct computation of a score associated with a block candidate
which gets validated and selected by Provisioners during the score selection phase carried out by the selection
package.
The Blind Bid
algorithm is outlined in the following steps
- A universal counter
N
is maintained for all bidding transactions in the lifetime. - Seed
S
is computed and broadcasted. - Bidder selects secret
K
. - Bidder sends a bidding transaction with data
M = H(K)
. - For every bidding transaction with d coins and data M an entry
X = H(d,M,N)
is added toT
. ThenN
is increased. - Potential bidder computes
Y =H(S,X)
, scoreQ=F(d,Y)
, and identifierZ =H(S,M)
. - Bidder selects a bid root
RT
and broadcasts proofπ = Π(Z, RT, Q, S; K, d, N)
.