you should check out some of the earlier work done here:

https://github.com/olalonde/proof-of-solvency#assets-proof

to be honest, if any exchange supported that proof, it would be more
than enough.

there's really no way to prevent a smash-and-grab, but this does
prevent a slow-leak


On Mon, Jul 5, 2021 at 5:10 PM Billy Tetrud via bitcoin-dev
<bitcoin-dev@lists.linuxfoundation.org> wrote:
>
> I had the idea recently for proof of reserves done in a way that can be used 
> to verify reserves are sufficient on an ongoing basis. I'm curious if there 
> are any current approaches out there to proof of reserves that are similar.
>
> The idea is to have users create actual private keys using a seed in pretty 
> much the normal way. Users would generate a public key from this seed to 
> represent their account, and would give the public key to the custodian to 
> represent their account in a public record of account balances.
>
> When a user's account is credited, the custodian would update a map of 
> addresses (created from the public key of each account) to balances - this 
> map could be structured into a merkle tree in the usual "merkle approach". 
> The custodian would also store funds on one or more HD wallets (each with 
> many addresses) and create a proof that they own each HD wallet. The proof 
> could be as simple as a single signature created with the xpub for the 
> wallet, which would be sufficient for proving ownership over the whole 
> list/tree of addresses.
>
> These two structures (the map and the HD wallet) would be combined and 
> hashed, and the hash published in an on chain transaction (possibly along 
> with a URI where the full data can be found), on something like a daily 
> basis. Software for each user could continuously validate that their account 
> has a balance that matches what it's supposed to have, and could also verify 
> that owned addresses have funds that have at least as many coins as promised 
> to accounts. If these things aren't verifiable (either because the balances 
> total to more than the HD wallet contains, or because of data 
> unavailability), people can raise hell about it.
>
> To give user's additional proving ability, a receipt system could be added. 
> Users could request a receipt for any balance update. Eg the user would 
> create a message with a timestamp, their custodial "address", and the new 
> balance. The user would sign this receipt and send it to the custodian, who 
> would also sign it and send it back. This way, if something goes wrong, a 
> user can use this signed receipt to show that the custodian did in fact 
> promise a new updated balance at a particular time (which would cover the 
> case that the custodian records the wrong value in their map). Conversely, 
> the receipt would be useful to honest custodians as well, since they could 
> show the user's signed receipt request in the case a user is trying to lie 
> about what balance they should have. There is still the case that the 
> custodian simply refuses to return a signed receipt, in which case the user's 
> only recourse is to yell about it immediately and demand a receipt or a 
> refund.
>
> Why record it on chain? Doing that gives a clear record of proof of reserves 
> that can be verified later by anyone in the future. It prevents a custodian 
> from being able to change history when it suits them (by creating a new 
> records with false timestamps in the past). Many of these records could be 
> aggregated together and recorded in the same transaction (with a single 
> hash), so a single transaction per day could record the records of all 
> participating custodians. If all custodians are using a standard system, one 
> can cross verify that addresses claimed by one custodian aren't also claimed 
> by another custodian.
>
> Even tho the user is responsible for their keys in order to properly verify, 
> losing the keys isn't that big of a deal, since they could simply create a 
> new seed and give a new public key to the custodian - who would have other 
> identifying information they could use to validate that they own the account. 
> So it places less responsibility on the user, while still introducing people, 
> in a light-weight way, to self custody of keys.
>
> Having a record like this every day would reduce the possibility of 
> shenanigans like taking a short term loan of a large amount of 
> cryptocurrency. Sure, they could take a 10 minute loan once per day, but it 
> would also be possible to trace on-chain transactions so you could tell if 
> such a thing was going on. I wonder if there would be some way to include the 
> ability to prove balances held on the lightning network, but I suspect that 
> isn't generally possible.
>
> In any case, I'm curious what people think of this kind of thing, and if 
> systems with similar properties are already out there.
>
>
>
>
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

Reply via email to