In the evolving world of cryptocurrency, transparency and trust are paramount. One way leading platforms demonstrate accountability is through Proof of Reserves (PoR) — a cryptographic method that allows users to verify an exchange's wallet ownership and confirm that user funds are fully backed. This guide walks you through how to verify OKX’s ownership of wallet addresses and validate on-chain balances using publicly available data and open-source tools.
Whether you're a security-conscious investor or a blockchain enthusiast, this step-by-step tutorial equips you with the knowledge to independently audit OKX’s reserve claims.
🔧 Pre-Verification Setup
Before diving into verification, ensure you have the following components ready:
Download the Proof of Reserves Verification Tool
Obtain the official open-source tool from GitHub:
https://github.com/okx/proof-of-reserves/releases/latest
After downloading, unzip the file. The package contains two core utilities:VerifyAddress— Validates ownership of reserve addressesCheckBalance— Confirms balance accuracy at a specific blockchain height
- Download the Reserve Snapshot File
Get the latest PoR CSV file directly from OKX:
https://www.okx.com/join/8265080zh-hans-eu/proof-of-reserves/download - Organize Your Files
Place both the verification tool and the snapshot CSV in the same folder for easy access. Choose Your Verification Path
- To verify address ownership, proceed to the section on Verifying Wallet Ownership.
- To confirm on-chain balances, go to Verifying Address Balances.
👉 Start your own audit of exchange reserves today with trusted tools and transparent data.
🔐 Verifying OKX Wallet Address Ownership
OKX publishes signed messages tied to each reserve address, enabling cryptographic proof that it controls those wallets. These signatures, combined with blockchain verification, offer strong evidence of ownership.
Bitcoin (BTC) Wallets
BTC addresses use two types of signature schemes:
Single-Signature (Single-Sig)
Each entry includes:- A wallet address
- A signed message: "I am an OKX address"
- A digital signature
You can verify this using any standard ECDSA signature checker.
Multi-Signature (Multi-Sig, 2-of-3)
For enhanced security, some BTC wallets use multi-sig setups. The snapshot includes:- Two valid signatures out of three possible private keys
- Redemption script (redeemScript)
Verifying both signatures proves OKX controls at least two keys — sufficient to spend funds.
Ethereum (ETH), USDT, and EVM-Compatible Chains
For ETH and tokens like USDT on Ethereum and EVM-based networks (e.g., Arbitrum, Optimism, Polygon), ownership is proven via:
- Signed message: "I am an OKX address"
- Public address
- Digital signature
These can be verified using Ethereum’s personal_sign or EIP-191 standard.
You may use either OKX’s open-source tool or third-party verifiers.
✅ Using the Official Verification Tool
Follow these steps to verify address ownership using VerifyAddress.
Step 1: Open Terminal
- Mac: Launch Terminal
- Windows: Use Command Prompt (cmd)
Step 2: Navigate to Tool Directory
If your files are in the Downloads folder under proof-of-reserves, run:
cd ~/Downloads/proof-of-reservesStep 3: Run Verification Command
On Mac:
./VerifyAddress --por_csv_filename=okx_por_20221122.csvOn Windows:
VerifyAddress.exe --por_csv_filename=okx_por_20221122.csv💡 Replace okx_por_20221122.csv with the actual filename you downloaded.Step 4: Review Output
If successful, the terminal will display:
Verify address signature end, all address passedThis confirms that all provided signatures are valid and match their respective addresses.
⚠️ Mac Security Note: If blocked by macOS Gatekeeper, go to System Settings > Privacy & Security > General, unlock settings, and allow apps from "App Store and identified developers."
🔍 Using Third-Party Tools for Ownership Verification
You can also validate ownership using external tools for:
- BTC single-sig addresses
- EVM-based chains (ETH, USDT-ERC20, etc.)
- TRON (TRX) addresses
Example: Verify BTC Single-Sig Address
- Open the downloaded PoR CSV file.
Copy one row’s:
- Address
- Message:
"I am an OKX address" - Signature
- Visit a trusted ECDSA verifier site.
- Paste all three fields.
- Submit — if validated, ownership is confirmed.
Similar processes apply for EVM chains using Ethereum signature checkers.
🧾 Verifying ETH Staking Asset Ownership
For staked ETH, OKX provides public validator keys instead of regular wallet addresses.
Steps to Verify:
- Download and open the latest PoR file.
- Copy a public key (e.g.,
0x...format). - Go to a blockchain explorer like Etherscan or Beacon Chain Explorer.
- Paste the key to view withdrawal credentials.
Confirm that:
- “From Address” and “Recipient Address” match entries in the PoR file.
- These addresses were signed by OKX using the same message protocol.
This proves OKX controls the withdrawal keys — essential for full ownership validation.
💰 Verifying OKX Reserve Balances
Balance verification ensures that the total assets reported by OKX exist on-chain at a specific block height.
There are two key checks:
- Individual address balances vs. snapshot
- Total sum of all addresses for a given asset
You’ll need to query blockchain data at the exact block height recorded in the PoR file.
🔁 Configuring Node Access or API
To fetch historical balances, configure one of the following in rpc.json:
- Local full/archive node (e.g., Bitcoin Core, Geth)
- Third-party service (e.g., Infura, Alchemy)
- OKLink Open API
👉 Access real-time and historical blockchain data securely with advanced APIs.
🪙 Verifying BTC Balances
Step 1: Set Up Bitcoin Core
- Download Bitcoin Core (version 0.21+).
Create
~/.bitcoin/bitcoin.confwith:server=1 rpcuser=OKX rpcpassword=OKXWallet- Start node:
./bitcoind - Wait for full sync (~12 hours).
Step 2: Roll Back to Snapshot Height
Use the block hash immediately after the snapshot height:
./bitcoin-cli invalidateblock <block_hash>Check rollback status:
./bitcoin-cli getblockcountStep 3: Configure rpc.json
Update BTC RPC settings:
"btc": {
"rpcUrl": "http://127.0.0.1:8332",
"rpcUser": "OKX",
"rpcPassword": "OKXWallet"
}Step 4: Run Balance Check
Single Address:
./CheckBalance --mode="single_address" --coin_name="btc" --address="3A1JRK..." --por_csv_filename=okx_por_20221122.csvTotal BTC Balance:
./CheckBalance --mode="single_coin_total_balance" --coin_name="btc" --por_csv_filename=okx_por_20221122.csvCompare output with CSV values — they should match exactly.
🌐 Verifying ETH / USDT Balances Across Chains
Supported chains include:
- Ethereum
- Arbitrum
- Optimism
- Polygon
- Avalanche C-Chain
- TRON
Step 1: Terminal Setup
Navigate to your tool directory:
cd ~/Downloads/proof-of-reservesStep 2: Single Address Check (e.g., ETH)
./CheckBalance --mode="single_address" --coin_name="eth" --address="0xc545..." --por_csv_filename=okx_por_20221122.csvStep 3: Total Balance Check
./CheckBalance --mode="single_coin_total_balance" --coin_name="eth" --por_csv_filename=okx_por_20221122.csvValid results show identical totals between on-chain data and OKX’s published file.
📚 Appendix: Advanced Configuration Options
Using Third-Party RPC Services (Infura, Alchemy)
Edit rpc.json with your provider’s endpoint:
"eth": {
"rpcUrl": "https://eth-mainnet.alchemyapi.io/v2/YOUR_API_KEY"
}Ensure you use archive nodes for accurate historical state queries.
Using OKLink API
- Log in to OKLink.
- Go to API Management > Create API Key.
Add key to
rpc.json:"oklinkApiKey": "your_api_key_here"
OKLink offers reliable access to historical balance data across multiple blockchains.
❓ Frequently Asked Questions (FAQ)
Q: Why is proof of reserves important?
A: It allows users to independently verify that an exchange holds sufficient assets to cover customer deposits, reducing risk of insolvency or fraud.
Q: Can I verify reserves without running a full node?
A: Yes! You can use third-party APIs like OKLink or Alchemy to retrieve historical blockchain data without syncing entire chains.
Q: What does a passed verification mean?
A: It confirms that OKX controls the private keys (ownership) and that reported balances existed on-chain at the snapshot time.
Q: Are multi-sig wallets more secure?
A: Yes — requiring multiple signatures increases resistance to theft or loss, especially when keys are stored separately.
Q: How often does OKX publish PoR reports?
A: Regularly — typically monthly — ensuring ongoing transparency and accountability.
Q: Is my personal data collected during verification?
A: No — all tools are open-source and run locally; no information is sent to OKX or third parties during verification.
By following this guide, you’ve taken control of your trust model — not relying on promises, but on provable on-chain facts. Transparency starts with verification, and now you have the tools to do it yourself.