The documentation of the command is as follows

Command usage: 
  get_reserve_proof (all|<amount>) [<message>]

Command description: 

  Generate a signature proving that you own at least this much, 
  optionally with a challenge string <message>.
  If 'all' is specified, you prove the entire sum of all of your
  existing accounts' balances.

  Otherwise, you prove the reserve of the smallest possible amount
  above <amount> available in your current account.

Does this command prove that the owned outputs are unspent? Mathematically, how does it work?


Yes. It is supposed to be a more privacy-preserving alternative to the previous method of proving the wallet balance to an auditor by giving out the view key and signed key images. (In my opinion, the watch-only wallet feature should only be used for cold signing purposes; i.e. the view key should never be given out to others.) Similar to the previous method, this method also sends out a set of signed key images to the auditor. The biggest difference is that the view key is not given out, and the wallet owner can explicitly control how many key images to include in the set (i.e. to prove for different amounts). In contrast, the previous method of giving out the view key will inevitably allow the auditor to see all the incoming transfers, in the past and forever into the future, which is probably undesirable.

This is the C++ data structure for each item in the set saved in the proof (see src/wallet/wallet2.h):

struct reserve_proof_entry
  crypto::hash txid;
  uint64_t index_in_tx;
  crypto::public_key shared_secret;
  crypto::key_image key_image;
  crypto::signature shared_secret_sig;
  crypto::signature key_image_sig;

In addition to the signature for the key image, it also contains the shared secret D = a*R with a and R being the view secret key and the tx public key, respectively, along with a signature proving that the signer knows a such that D=a*R without revealing a.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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