One of the key components in Bedrock design is the nonce, which ensures uniqueness and unlinkability across transactions. In this report, we analyze the nonce structure, its role in commitment derivation, efficiency trade-offs in reducing its size, and potential concerns regarding permissionless notes.
Each note in Bedrock is defined as:
$(state,v,U,nonce,ZoneID)$
where:
The commitment of a note is computed as:
$cm = hash(\text{NOMOS\_NOTE\CM}||state||v||U||nonce||nf{pk}||ZoneID) \in \{0,1\}^{256}$
This cryptographically binds the note’s contents while maintaining privacy. The nullifier is derived as:
$nf = hash(\text{NOMOS\_NOTE\NF}||cm||nf{sk})$
ensuring that once a note is spent, it cannot be double-spent.