Coin Voting / Shielded Airdrop / Proof of Balance

Another way to do it is to have the note commit to a fixed-point representation of \frac{\mathsf{v}}{\mathsf{compoundedValue}}. For example, suppose that we start out with \mathsf{compoundedValue} as 100000000, representing 1.0 in fixed point. Each time we read the value from an Orchard note we multiply it by \frac{\mathsf{compoundedValue}}{100000000}, and each time we write the value we multiply it by \frac{100000000}{\mathsf{compoundedValue}}. The effect is essentially the same as before, except that now we don’t have to keep track of the compounded value as part of the commitments. All existing notes automatically have the correct value at the activation block for this change.

(I haven’t checked that this is sufficient precision, so treat this with a pinch of salt with regard to the details.)

2 Likes