In the summer of 2021, BitMEX provided a demonstration of a working Bitcoin Proof of Reserves and Proof of Liabilities system. Today we provide another snapshot, as per our Bitcoin reserves on 9th Nov 2022.
Overview
A basic overview of the results of the exercise is provided below:
Reserves | Liabilities | |
Snapshot time | 9 Nov 2022 | 9 Nov 2022 |
Snapshot block height | 762,408 | n/a |
Balance | 75,914.7 Bitcoin | 75,758.3 Bitcoin |
Proof of Reserves
The Proof of Reserves process is reasonably simple. There is no fancy Merkle tree or any other unnecessary cryptographic complexities. All BitMEX has done here is publish a basic list of the reserves. The list contains all the Bitcoin we have under our custody on behalf of our clients, it is as simple as that. The file is 199MB large and can be downloaded here:
More concisely, the list contains Bitcoin addresses and the Bitcoin balance held at each address at the snapshot point. The list also contains the execution scripts for each UTXO under custody; these execution scripts include the BitMEX public keys. This therefore proves that the company is able to access all the funds, assuming the company has access to the private keys associated with the public keys. It is proved every day that BitMEX does indeed have access, when the company conducts withdrawals. Therefore, the list can be considered as a proof of company reserves and proof that the funds are spendable.
Reconciliation to the Bitcoin Blockchain
As mentioned above, in a way proving the reserves is easy, because all you need to do is download the reserves file and inspect it. However, BitMEX also provides a tool to reconcile all those UTXOs with the Bitcoin blockchain. A step by step guide, explaining how to conduct this process, is outlined here.
As the screenshot below demonstrates, the BitMEX Proof of Reserves was successfully reconciled to the Bitcoin blockchain, as at 9 Nov 2022.
Screenshot of Proof of Reserves Result
Video of Proof of Reserves Process – 8 Nov 2022
Proof of Liabilities
BitMEX is also making available the Proof of Liability dataset, as at 9 Nov 2022:
A step by step guide, explaining how to conduct the Proof of Liability process, is outlined here. This process is a little more complicated than the Proof of Reserves, because of the need to protect user privacy. Therefore various complex processes are conducted, such as randomly splitting and shuffling balances around in different leaves of a liability Merkle tree. You can read more about it here.
Today, as an example exercise, we demonstrated that the BitMEX insurance fund balance of 36,781 Bitcoin is included in the liability Merkle tree.
Screenshot of Proof of Liabilities Result
Tools
The tools used to conduct this process are open source and available here:
https://github.com/BitMEX/proof-of-reserves-liabilities
Further Work
We are not done yet. We still aim to develop significant improvements to the scheme in the coming months. These improvements include:
- Automatic publication of the reserve and liability data on a daily or weekly basis.
- Providing each BitMEX client with a nonce, such that they can check the inclusion of their balance in the Proof of Liability Merkle tree. Once this step is complete, BitMEX will have one of the most robust and advanced Proof of Reserves and Proof of Liabilities systems ever produced.