This guide explains how to independently verify OKX's Proof of Reserves (PoR) by confirming ownership of wallet addresses and checking their on-chain balances using OKX's open-source verification tools.
Before You Begin: Preparation Steps
Download the latest Proof of Reserves file and the open-source verification tools from OKX's official website. Ensure you place both the downloaded PoR snapshot file (typically a CSV) and the verification tools package in the same folder on your computer.
The verification toolkit contains two primary utilities:
- VerifyAddress: Used to cryptographically confirm that OKX controls the reserve addresses listed in the snapshot.
- CheckBalance: Used to verify that the balances of those addresses on the blockchain match the balances published in the snapshot. This tool requires configuring a connection to a blockchain node.
Understanding Address Ownership Verification
A cryptocurrency exchange's Proof of Reserves demonstrates that it holds sufficient assets to cover all client balances. A crucial part of this is proving ownership of the wallet addresses holding those assets. OKX's snapshot includes addresses, a signed message ("I am an OKX address"), and corresponding digital signatures.
- For Bitcoin (BTC) Addresses: OKX uses both single-signature and multi-signature (multisig) addresses. For multisig addresses, the snapshot contains signatures from at least two of the three private keys controlled by OKX, proving their control over the funds.
- For Ethereum (ETH) and Tether (USDT) on EVM-compatible chains (Arbitrum, Optimism, etc.), as well as Tron (TRX), ownership is verified by validating the signed message against the public address.
This cryptographic proof allows anyone to verify that OKX controls the addresses without needing access to private keys.
Method 1: Verifying Address Ownership with Official Tools
You can verify OKX's ownership of the published addresses using the command-line tools provided by OKX.
Step-by-Step Verification Guide
Open Your Command Line Interface:
- macOS: Open the Terminal application.
- Windows: Open Command Prompt or PowerShell.
Navigate to the Tools Directory: Use the
cdcommand to change to the directory where you saved the tools and PoR file.cd ~/Downloads/proof-of-reservesExecute the Verification Command: Run the appropriate command for your operating system. Replace
okx_por_20221122.csvwith the actual filename you downloaded.macOS:
./VerifyAddress --por_csv_filename=okx_por_20221122.csvWindows:
VerifyAddress.exe --por_csv_filename=okx_por_20221122.csv
- Handle macOS Security Warning (if applicable): If you see a "...cannot be opened because the developer cannot be verified" message on macOS, go to System Preferences > Security & Privacy > General and click "Allow Anyway" for the tool.
- Review the Output: A successful verification will return a message like: "End signer verifies address, all addresses passed the verification."
Method 2: Verifying Address Ownership via Third-Party Tools
For individual addresses, you can also use third-party online tools to verify the signed message.
- Copy Verification Data: From the downloaded OKX PoR CSV file, copy the address, the message ("I am an OKX address"), and the associated signature for a specific address.
- Use a Verification Tool: Navigate to a reputable online message verification tool for the relevant blockchain (e.g., a Bitcoin or Ethereum message signer/verifier).
- Paste and Verify: Paste the copied address, message, and signature into the tool's fields. A successful verification will confirm the message was signed by the private key controlling that address.
Verifying Wallet Address Balances
Beyond ownership, it's essential to verify that the balances of these addresses on the blockchain match the values published in OKX's snapshot at the specified block height.
General Setup for Balance Checks
The CheckBalance tool requires access to blockchain data. You configure this by editing the rpc.json file included in the tools package to point to a reliable data source:
- Your Own Node: The most trustless option, but requires significant time and resources to sync.
- Third-Party RPC Providers: Services like Infura or Alchemy offer archived node data.
- OKLink API: OKX's blockchain data service provides an API for querying historical balances.
๐ Explore more strategies for connecting to blockchain data
Verifying BTC Address Balances
Setting Up a Bitcoin Node (Optional but Recommended for Full Self-Verification):
- Download and install Bitcoin Core (v0.21 or newer).
- Configure
bitcoin.confto enable RPC settings (server=1,rpcuser,rpcpassword). - Start
bitcoindand wait for full synchronization (can take over 12 hours). - Once synced, you may need to use
invalidateblockto rewind your node to the exact block height of the OKX snapshot for historical balance queries.
Running the Balance Check:
- Configure
rpc.json: Ensure the BTC section in therpc.jsonfile points to your node or another data source. - Open Command Line and navigate to the tools directory.
Check a Single Address Balance:
macOS:
./CheckBalance --mode="single_address" --coin_name="btc" --address="3A1JRKqfGgxoq2qSHLv85u4zn935VR9ToL" --por_csv_filename=okx_por_20221122.csvWindows:
CheckBalance.exe --mode="single_address" --coin_name="btc" --address="3A1JRKqfGgxoq2qSHLv85u4zn935VR9ToL" --por_csv_filename=okx_por_20221122.csv
Check Total BTC Balance:
macOS:
./CheckBalance --mode="single_coin_total_balance" --coin_name="btc" --por_csv_filename=okx_por_20221122.csvWindows:
CheckBalance.exe --mode="single_coin_total_balance" --coin_name="btc" --por_csv_filename=okx_por_20221122.csv
- Compare Results: The tool will output the on-chain balance. Verify that this value matches the balance for that address (or the sum of all addresses) in the OKX PoR CSV file.
Verifying ETH and USDT Address Balances
The process for Ethereum, USDT, and other EVM-based chains is similar but uses different coin_name values (e.g., eth, usdt-erc20, usdt-arbitrum).
- Configure
rpc.json: Set the RPC URLs for the chains you want to check (Ethereum Mainnet, Arbitrum, etc.) or configure your OKLink API key. Check a Single Address Balance:
./CheckBalance --mode="single_address" --coin_name="eth" --address="0xc5451b523d5fffe1351337a221688a626806ad91a" --por_csv_filename=okx_por_20221122.csvCheck Total Balance for a Cryptocurrency:
./CheckBalance --mode="single_coin_total_balance" --coin_name="usdt-erc20" --por_csv_filename=okx_por_20221122.csv- The tool will query the configured data source and return the balance at the snapshot block height. Compare this value directly to the amount published by OKX.
Frequently Asked Questions
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 deposits. It involves publishing a cryptographically verifiable snapshot of their wallet addresses and balances, allowing users to independently verify solvency.
Why should I verify OKX's Proof of Reserves?
Verifying the PoR yourself adds a layer of trust and transparency. It ensures that the exchange is not misrepresenting its holdings and that your funds are fully backed by real assets, promoting a healthier and more secure ecosystem.
Do I need technical skills to perform this verification?
Basic comfort with using a command line interface is required. While the process is structured, it involves executing commands and potentially configuring files. The guide provides detailed steps for both macOS and Windows users to follow.
What if the balance check fails or shows an error?
First, double-check your setup. Ensure the rpc.json file is configured correctly with a valid RPC URL or API key. Confirm that your data source is an archival node capable of querying historical states. If the issue persists, the error message from the tool can often point to the specific problem.
How often does OKX publish new Proof of Reserves data?
OKX regularly publishes updated Merkle Tree-based Proof of Reserves. You can find the latest snapshot files and verification tools on their official website under the "Proof of Reserves" section. It's good practice to verify the most recent data.
Can I verify assets on chains like Solana or Polkadot?
The specific tools mentioned in this guide are designed for Bitcoin, Ethereum, and other supported EVM-compatible chains. For other blockchains, the verification process would depend on the tools and methods provided by OKX for those specific networks. Always refer to the official documentation.