The cli_wallet includes functionality for sending blind transfers in which the values of the input and output amounts are “blinded.”
Note: In the case where a transaction produces two or more outputs, (e.g. an amount to the intended recipient plus “charge” back to the sender), a “range proof” must be supplied to prove that none of the outputs commit to a negative value.
proof: List of proof’s characters
A range proof info structure with exponent, mantissa, min and max values.
range_proof_sign
Proves with respect to min_value the range for Pedersen Commitment which has the provided blinding factor and value.
min_value: Positive 64-bit integer value
commit: 33-byte pedersen commitment
commit_blind: Sha-256 blind factor type for the correct digits
nonce: Sha-256 blind factor type for our non-forged signatures
base10_exp: Exponents base 10 in range [-1 ; 18] inclusively
min_bits: 8-bit positive integer, must be in range [0 ; 64] inclusively
actual_value: 64-bit positive integer, must be greater or equal min_value
A list of characters as proof in proof.
Verification
verify_sum
Verifies that commits + neg_commits + excess == 0.
commits_in: List of 33-byte Pedersen Commitments
neg_commits_in: List of 33-byte Pedersen Commitments
excess: Sum of two list of 33-byte Pedersen Commitments where sums the first set and subtracts the second
(Boolean) True in event of commits + neg_commits + excess == 0, otherwise false
verify_range
Verifies range proof for 33-byte Pedersen Commitment.
commit: 33-byte pedersen commitment
proof: List of characters
A structure with success, min and max values
verify_range_proof_rewind
Verifies range proof rewind for 33-byte Pedersen Commitment.
nonce: Sha-256 blind refactor type
commit: 33-byte pedersen commitment
proof: List of characters
A structure with success, min, max, value_out, blind_out and message_out values.