How to Verify OKX Wallet Address Ownership and Balances

·

This guide details the process for independently verifying the ownership and balances of wallet addresses associated with OKX's Proof of Reserves (PoR). By leveraging open-source tools and publicly available data, users can gain transparency into the exchange's reserve holdings.

Prerequisites for Verification

Before starting, ensure you have the following items ready:

The snapshot file contains critical data, including wallet addresses, a signed message ("I am an OKX address"), and corresponding signatures. For Bitcoin, it also includes data for multi-signature scripts.

Understanding Proof of Reserves Verification

The verification process confirms two main things:

  1. Address Ownership: That the published addresses are genuinely controlled by OKX.
  2. Balance Accuracy: That the asset balances held in those addresses at the time of the snapshot match what OKX has published.

OKX employs different cryptographic methods depending on the blockchain:

How to Verify OKX's Ownership of Reserve Addresses

You can confirm address ownership using either the provided open-source tools or trusted third-party verification websites.

Method 1: Using the Open-Source Verification Tool

This method batch-verifies all addresses in the snapshot file using the VerifyAddress tool.

  1. Open a terminal program:

    • macOS: Open the "Terminal" application.
    • Windows: Open "Command Prompt".
  2. Navigate to the download directory. Use the cd command to change to the directory where you saved the tools and PoR file. For example:

    cd ~/Downloads/proof-of-reserves
  3. Run the verification command. Execute the command specific to your operating system (replace the filename with your actual PoR file):

    • macOS:

      ./VerifyAddress --por_csv_filename=okx_por_20221122.csv
    • Windows:

      VerifyAddress.exe --por_csv_filename=okx_por_20221122.csv
  4. Handle macOS security warnings (if applicable): If you see a "...cannot be opened because the developer cannot be verified" error on macOS, go to System Preferences > Security & Privacy > General and click "Allow Anyway" for the tool.
  5. Check the output. A successful verification will display the message: "Signature verification completed, all addresses passed successfully".

Method 2: Using a Third-Party Verification Tool

For individual address verification, you can use established third-party tools.

General Steps for Third-Party Verification:

  1. Open your PoR CSV file.
  2. Locate a specific address and copy its "Address", "Message", and "Signature" fields.
  3. Paste these three pieces of data into the corresponding fields on the chosen third-party verification website.
  4. Initiate the verification. A successful result will confirm the message was signed by the private key of that address.

Verifying Ownership of OKX's ETH Staking Assets

For Ethereum validator nodes, ownership is verified by checking the withdrawal credentials.

  1. Open the eth_staking.csv file from the PoR download.
  2. Copy any validator's public key.
  3. Visit a beacon chain explorer like beaconcha.in and search for the public key.
  4. In the validator details, confirm that the "Withdrawal Address" and "Fee Recipient Address" match the addresses published by OKX in its proof of reserves documentation. These addresses are signed by OKX, proving ownership.

How to Verify Balances of OKX's Reserve Wallet Addresses

Balance verification ensures the on-chain balance of an address at the exact snapshot block height matches the balance published by OKX. The CheckBalance tool automates this process by querying blockchain data.

Configuring Blockchain Data Sources

The CheckBalance tool can pull data from different sources, configured in the rpc.json file:

👉 Explore reliable data providers for balance verification

Verifying a Specific BTC Address Balance

This process involves checking the balance of a single Bitcoin address at the snapshot height.

  1. Ensure you are in the correct directory in your terminal (cd ~/Downloads/proof-of-reserves).
  2. Run the verification command. Replace the example address and filename with your own.

    • macOS:

      ./CheckBalance --mode="single_address" --coin_name="btc" --address="3A1JRKqfGGxoq2qSHLv85u4zn935VR9ToL" --por_csv_filename=okx_por_20221122.csv
    • Windows:

      CheckBalance.exe --mode="single_address" --coin_name="btc" --address="3A1JRKqfGGxoq2qSHLv85u4zn935VR9ToL" --por_csv_filename=okx_por_20221122.csv
  3. The tool will output the on-chain balance it queried. Compare this value to the balance listed for that address in the OKX PoR file. They should be identical.

Verifying the Total BTC Balance

This command verifies the sum of all BTC addresses in the PoR file matches the total on-chain balance.

  1. Run the command for total balance verification:

    • macOS:

      ./CheckBalance --mode="single_coin_total_balance" --coin_name="btc" --por_csv_filename=okx_por_20221122.csv
    • Windows:

      CheckBalance.exe --mode="single_coin_total_balance" --coin_name="btc" --por_csv_filename=okx_por_20221122.csv
  2. Compare the total balance computed by the tool with the total balance published by OKX.

Verifying ETH and USDT Balances

The process for Ethereum and USDT on various chains (Ethereum, Arbitrum, Optimism, etc.) is identical to the BTC process but requires specifying the correct coin_name.

Example: Verify a single ETH address

Example: Verify total ETH balance

After running the command, compare the output result with the data in the OKX PoR file. Consistency between them proves the accuracy of the published balances.

Frequently Asked Questions (FAQ)

What is Proof of Reserves (PoR)?

Proof of Reserves is an auditing method used by cryptocurrency exchanges to prove they hold enough assets to cover all customer balances. It involves cryptographically verifying the ownership and balances of the exchange's wallet addresses at a specific point in time.

Why is verifying PoR important?

Verification provides transparency and builds trust. It allows users to independently confirm that the exchange is solvent and not misusing customer funds, reducing counterparty risk.

I'm not technical. Can I still verify this?

While the detailed technical process requires command-line tools, you can rely on the fact that the data and tools are publicly available for auditors and technically-inclined community members to verify. Many users simply check that well-known community figures or auditing firms have confirmed the PoR.

What if the verification fails?

If the open-source tool returns an error or a balance mismatch, first double-check that you are using the correct snapshot file and command syntax. Ensure your RPC configuration in rpc.json is correct. If the problem persists, it may indicate an issue, and you should seek clarification from OKX support.

How often does OKX publish Proof of Reserves?

OKX has committed to providing monthly Proof of Reserves. You should always use the most recent PoR snapshot file for your verification, as wallet addresses and balances can change over time.

Does PoR verify all risks associated with an exchange?

No. While PoR verifies asset ownership and custody at a snapshot in time, it does not audit liabilities (what the exchange owes). A full audit would also need to verify that customer liabilities do not exceed the reserves. PoR also does not assess the exchange's operational security, management, or business risks.