Navigating the Challenges of Proof of Reserve in Cryptocurrency Businesses

cover
7 Oct 2024

Authors:

(1) Hamid Bateni, Nobitex Labs (hamid@europe.com);

(2) Keyvan Kambakhsh, Nobitex Labs (keyvankambakhsh@gmail.com).

Abstract and 1 Introduction

2 Proof of Liability and 2.1 Commitment

2.2 Merkle Tree

2.3 Leaves Structure

2.4 Proof Statement

3 Proof of Reserve

3.1 Ethereum

3.2 Bitcoin

4 Proof of Solvency

5 Future Works and References

3 Proof of Reserve

In the context of a cryptocurrency business, Proof of Reserve involves demonstrating that the business holds enough cryptocurrency assets to cover the balances it owes to its customers.

Proof of Reserve is a method by which a business can demonstrate that it holds the necessary reserves to meet its obligations. Currently, the most common approach involves revealing an address and moving funds to that address, and then proving ownership of the address by signing a message or preannouncing the address before transferring funds.

However, there are several problems with this approach:

As a business dealing with a large number of users, maintaining numerous crypto addresses can be cumbersome. Aggregating all funds into one or a few known addresses for the proof of reserve incurs significant costs. All of the business’s addresses become publicly known, affecting security and privacy. Third parties could potentially track all transactions and discover important data that could impact the business’s security. To achieve a private proof of reserve, we have identified two potential approaches, each with their own pros and cons:

• a. The business still needs to transfer their funds to prove their reserve.

• b. In Solidity, we only have access to the last 256 block hashes, which makes proof generation difficult.

We then came up with the idea of using the state of each blockchain instead of privately proving a specific transaction. This approach solves the problems of the previous approach but it’s tricky and differs from one blockchain to another. In the following sections, we will discuss how we can use the state to create such a proof in Ethereum and then in Bitcoin.

Proof of Reserve involves two key steps:

  1. Demonstrating ownership of an address: This step involves proving that a particular address used in the Proof of Reserve process is indeed owned by the business. This is important to ensure that the assets being accounted for in the Proof of Reserve are actually controlled by the business and not by a third party.

  2. Proving a specific balance in the owned address: Once ownership of the address is established, the next step is to prove that this address holds a specific balance of a particular asset. This confirms that the business holds the necessary reserves to meet its obligations.

We will discuss the proof of address ownership in the Proof of Solvency section. In the following section, we will explore how we can prove that a specific address has at least a minimum balance.

This paper is available on arxiv under CC BY-NC-ND 4.0 DEED license.