Closed nicolasburtey closed 1 year ago
Use blockcerts algorithm to create the Merkle tree proposed in step 3
or just use the blockcert library
Should be looked at: https://github.com/jakecraige/provisions
@nicolasburtey can we close this?
I think so but we should copy the documentation/link maybe to the poof of sats repo in a RESEARCH.md (or another better name)
this will be implemented in other layers (bria, cala) so closing this ticket.
Reach out on slack if you're interested in the bounty
Proof of reserve is key for the success of bitcoin. To understand why, some useful reading: https://niccarter.info/wp-content/uploads/Proof-of-Reserves-.pdf
https://github.com/olalonde/proof-of-assets https://blockstream.com/2019/02/04/en-standardizing-bitcoin-proof-of-reserves/
Some idea of how this could be rolled out progressively:
Step 1 (proof of liabilities): Proof of reserve with public account listing. This is what Coinfloor is currently doing. one hash per user, so that each user can verify that their balance has been included correctly
Step 2 (proof of reserve): For every UTXO on our onchain wallet, sign a message showing the wallet own the UTXO For lnd wallet, more research is being needed: https://github.com/lightningnetwork/lnd/issues/5391 (TODO: look at how this should be published?)
Step 3 (better proof of liabilities): Instead of publishing the whole list of hashed user with amount, use a merkle tree and only published the merkle root. This would require adding an API so that the user can send his hash, and can receive the merkle path and the balance so that the client can verify that their balance has been included themselves
Step 4 (zero knowledge proof: improve the privacy by not disclosing the total amount): This is the difficult part. Step 2 and 3 involves that the total amount is published to the world (or the user at least). This would be preferable to have a proof that the total assets is >= than the total liabilities without having to disclose the total balance.