I'm reading paper of Greg Maxwell's Confidential Transactions, I understand the example about Pederson commitment and Range Proof, which assume the amount is interger (example of proof amount range in [0, 32) ). What I can't figure out is how commitment and Range Proof work when the amounts are expressed using "decimal floating point where the digits are multipiled by a base 10 exponent"(just as the paper mentioned). It's means the amounts is floating point number,like 2.3728BTC ? How can a floating number multiple a point in EC? I thinks there are something important I missed out. Could anybody explain or give a example here to make it clear?

1 Answer 1


When we're talking about an amount like 133.7 BTC, we're actually talking about 13370000000 satoshis (13.37 billion units).

If you're using 32-bit rangeproofs in Confidential Transactions, you're limited to a range of 1 through 2^32-1 satoshi (42.94967295 BTC). To use a number as large as 133.7 BTC, you would need 34 bits at least (making the proofs larger and slower to create and verify).

What the section you're quoting is about is that CT supports scaling this number by a power of 10. Basically, the proof can (in the clear, for now) indicate that it is not dealing with satoshi units, but with millions of satoshis. Now a 32-bit proof can deal with ranges of 0.01 BTC through 42949672.95 BTC.

So the term "floating point" here simply refers to the fact that we're representing the number as 13370*10^6 satoshis rather than as 13370000000 satoshis. It does not mean we're dealing with fractional units.

Note: multiplying an EC point with a fractional number is technically possible in some cases, but not really used here.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.