How do I verify OKX's ownership and balance of the wallet address?

Published on Sep 26, 2023Updated on Apr 12, 202413 min read479

This article will guide you through the process of how to verify OKX's ownership and balance of the wallet address via OKX's reserve snapshot file and open source reserve verification tool.

What should I prepare before verification?

  1. Open the verification tool, select the zip file to download
    You can see the following two tools in the folder:
    • VerifyAddress: verify ownership of reserve address.
    • CheckBalance: verify reserves address balance (Note: rpc.json needs to be configured, in order to configure node RPC or OKLink open API and other related information.)
      CT-web-POR-preparation folderYou can see VerifyAddress and CheckBalance in the folder
  2. Open the audit files and download the Proof of Reserves
  3. Store the downloaded Proof of Reserves and verification tool in the same folder

How do I verify OKX's ownership of wallet reserves address?

OKX snapshot data contains addresses, "I am an OKX address" messages and signatures, as well as BTC multi-signature redemption scripts. You can operate using the below steps to confirm that OKX owns these addresses.

  • The BTC wallet adopts two signature methods: single signature and multi-signature
    • Multi-signature adopts 2/3 signature, and each piece of data contains two signatures, which are signed by two private keys among the three private keys held by OKX. By verifying the two signatures, it can be ensured that OKX has at least two of the private keys, thus proving that OKX has ownership of the multi-signature address.
    • The BTC single-signature address passed message and signature results can prove OKX's ownership of the address.
  • ETH and USDT wallet
    • Passed message and signature results can prove OKX's ownership of the address.

You can confirm the ownership of the reserves address published by OKX with the open source or third-party tools provided.

How do I verify OKX's ownership of wallet reserves address via verification tools?

  1. Open the terminal program
    • Mac system: Terminal
    • Windows system: Command Prompt
  2. Run the command and locate the directory of the downloaded folder. In our case, enter the command cd ~/Downloads/proof-of-reserves
  3. Enter the following command in terminal (The file name can be replaced with another file that needs validation)
    • Mac: ./VerifyAddress --por_csv_filename=okx_por_20221122.csv
    • Windows: VerifyAddress.exe --por_csv_filename=okx_por_20221122.csv
      Note: if you are using Mac and encounter "cannot open the tools because the developer can't be verified", please go to System preferences > Security&Privacy > General > Click the lock to make changes > Allow apps downloaded from App Store and identified developers
  4. If the verification is passed, the terminal will return "Verify address signature end, all address passed"
    CT-web-POR-passed verification on terminal"Verify address signature end, all address passed" shows on terminal

How do I verify OKX's ownership of wallet reserves address via third-party tool?

To verify the ownership of the following types of addresses, third-party tools can be used to prove that the address belongs to OKX:

We'll take the BTC single-signature address as an example here:

  1. Download and open Audit files
  2. Copy a record from the file, including address, message, and signature
    CT-web-POR-copy recordCopy a record from the file
  3. Go to BTC signature verification tool, paste the address, message, and signature
  4. If the verification is passed, the result will be shown as below:
    CT-web-POR-verification resultVerification result

How do I verify OKX's ETH staking assets ownership?

For ETH staking assets, use the third party explorer(beaconcha.in) to verify OKX's ownership of these publickeys.

  1. Download and open ETH staking file.
  2. Copy any validator publickey
    CT-web-POR-copy validator publickeyCopy the validator publickey
  3. Go to beaconcha.in, paste the validator publickey
  4. Check if the "From address" and "Recipient address" match the addresses in the ETH staking file. The "From address" and "Recipient address" are signed by OKX confirming ownership, and can be verified using the instructions from above
    CT-web-POR-from addressFrom address
    CT-web-POR-recipient addressRecipient address

How do I verify the balance of OKX wallet reserves address?

  1. Compare the address balance of a specific crypto chain at the snapshot height time with the address balance in the snapshot file published by OKX to verify whether they are consistent.
  2. Compare the sum of address balances of a specific crypto chain at the snapshot height time with the sum of address balances in the snapshot file published by OKX to verify whether they are consistent.

To query the address balance at the snapshot height, you can either configure node rpc or use OKLink's open API.

How do I verify BTC specified address balance and total balance?

  1. Install the Bitcoin Core client, synchronize to the latest height, and then roll back the block to the height of the OKX snapshot
    1. Download Bitcoin Core here with version 0.21 or above
    2. Edit the configuration file of Bitcoin Core to enable access to the RPC node. Create ~/.bitcoin/bitcoin.conf file and open it with an editor or run the command of vi ~/.bitcoin/bitcoin.conf ,edit
      server=1
      rpcuser=OKX
      rpcpassword=OKXWallet
    3. Enter the bin directory,run ./bitcoind command,and start the node
    4. Wait for the node to synchronize to the latest height. It takes about 12 hours
    5. To query the balance from the OKX snapshot height, you need to roll back the node to that height after synchronizing to the latest height.
      1. Go to the BTC browser and search for the block hash of the next height after the snapshot height. Copy the block hash and enter it in the hash value part of the following command
      2. Run ./bitcoin-cli invalidateblock00000000000000000005829017993a7a21e4b7c731c95b9cb979c01294a7bd27 command
        Note: '00000000000000000005829017993a7a21e4b7c731c95b9cb979c01294a7bd27' - this is an example, please update this parameter as the hash value of the next block at the height of the BTC block in the proof of reserves file that you downloaded.
      3. Wait for the node to roll back to the snapshot height. You can run./bitcoin-cli getblockcount command to check whether the rollback is completed, or you can view the node output log judgment

CT-web-POR-Node output logNode output log

  1. Configure the parameters

    1. Open rpc.json file
    2. Configure btc-related RPC parameters in the rpc.json file and save the file
      CT-web-POR-configure the parametersExample: configure the parameters
  2. Verify whether the balance of an on-chain address is consistent with the balance shown in the snapshot file by using the CheckBalance tool.

    1. Open the terminal program
      • Mac system: Terminal
      • Windows system: Command Prompt
    2. Run the command and locate the directory of the downloaded folder. In our case, enter the command cd ~/Downloads/proof-of-reserves

Verify the balance of a single address

  1. Enter the following command in terminal (The file name can be replaced with another file that needs validation)
    • Mac: ./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
      Note: If you are using Mac and encounter "cannot open the tools because the developer can't be verified", please go to System preferences > Security&Privacy > General > Click the lock to make changes > Allow apps downloaded from App Store and identified developers
  2. The balance of a single address is displayed based on the returned result
    CT-web-POR-The balance of a single addressThe balance of a single address is displayed based on the returned result
  3. Compare the OKX balance published in the file and returned result to see if it's consistent

Verify the balance of all addresses

  1. Enter the following command in terminal (The file name can be replaced with another file that needs validation)
    • Mac: ./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
      Note: If you are using Mac and encounter "cannot open the tools because the developer can't be verified", please go to System preferences > Security&Privacy > General > Click the lock to make changes > Allow apps downloaded from App Store and identified developers
  2. The balance of all addresses is displayed based on the returned result
    CT-web-POR-The balance of all addressesThe balance of all addresses is displayed based on the returned result
  3. Compare the OKX balance published in the file and returned result to see if it's consistent

How do I verify ETH/USDT specified address balance and total balance?

OKX has released wallet addresses on Ethereum, Optimism, Arbitrum, Polygon, Avalanche, and other blockchains, as well as the corresponding balances of ETH or USDT. Using open source tools, you can check the balance of these addresses.
For verification, you can opt to use the default RPC, a third-party RPC, or the OKLink API.

  • Use the default rpc without modifying rpc.json, you can directly go to the verification step
  • Use third-party node rpc (such as: Infura, Alchemy) - you can view in the appendix
  • Use OKLink's API for verification - you can view in the appendix

Use the tool CheckBalance to verify whether the balance on the on-chain address is consistent with the balance shown in the snapshot file

  1. Open the terminal program
    • Mac system: Terminal
    • Windows system: Command Prompt
  2. Run the command and locate the directory of the downloaded folder. In our case, enter the command cd ~/Downloads/proof-of-reserves

Verify the balance of a single address

  1. For example, if you'd like to verify whether the balance of the ETH address 0xc5451b523d5fffe1351337a221688a62806ad91a at the specified height is consistent with the balance displayed in the snapshot file (E.g. okx_por_20221122.csv), you need to execute the following command on the terminal:
    • Mac: ./CheckBalance --mode="single_address" --coin_name="eth" --address="0xc5451b523d5fffe1351337a221688a62806ad91a" --por_csv_filename=okx_por_20221122.csv
    • Windows: CheckBalance.exe --mode="single_address" --coin_name="eth" --address="0xc5451b523d5fffe1351337a221688a62806ad91a" --por_csv_filename=okx_por_20221122.csv

Note:

  • If you need to query other currencies, replace the "coin_name" and "address" with the appropriate values
  • If you are using Mac and encounter "cannot open the tools because the developer can't be verified", please go to System preferences > Security&Privacy > General > Click the lock to make changes > Allow apps downloaded from App Store and identified developers
  1. The balance of the query address of ETH at the specified height is displayed based on the returned result
    CT-web-POR-The balance of the query address of ETHThe balance of the query address of ETH at the specified height
  2. Compare the proof of reserves published by OKX and the output results, the balance of the address and the balance in the proof of reserves, you can see that they are consistent, proving the balance of this address that OKX had at the time of the snapshot.

Verify the sum of all address balances of certain crypto

  1. For example, if you want to verify whether the balance of all ETH addresses at the specified height is consistent with the balance shown in the snapshot file(E.g. okx_por_20221122.csv), you need to execute the following command on the terminal:
    • Mac: ./CheckBalance --mode="single_coin_total_balance" --coin_name="eth" --por_csv_filename=okx_por_20221122.csv
    • Windows: CheckBalance.exe --mode="single_coin_total_balance" --coin_name="eth" --por_csv_filename=okx_por_20221122.csv

Note:

  • If you need to query other currencies, replace the "coin_name" with supported values such as BTC, ETH, ETH-ARBITRUM, ETH-OPTIMISM, USDT-ERC20, USDT-TRC20, USDT-POLY, USDT-AVAXC, USDT-ARBITRUM, USDT-OPTIMISM
  • If you are using Mac and encounter "cannot open the tools because the developer can't be verified", please go to System preferences > Security&Privacy > General > Click the lock to make changes > Allow apps downloaded from App Store and identified developers
  1. The balance of all addresses of ETH at the specified height is displayed based on the returned result
    CT-web-POR-The balance of all addresses of ETHThe balance of all addresses of ETH at the specified height
  2. Compare the proof of reserves published by OKX and the output results, the balance of all addresses and the balance in the proof of reserves are consistent, which can prove the sum of balances that OKX has at the time of the snapshot.

Appendix

Use third-party node RPC (eg: Infura, Alchemy)

Configure the RPC parameters of each chain archive node in the rpc.json file, as shown in the following figure:
Get the evm archive node

  • Install the archive node manually. It may take some time to synchronize. Please refer to here
  • Use third-party nodes: InfuraAlchemy
    CT-web-POR-example of alchemyExample: Alchemy provides ethereum archive node service
  1. Login to OKLink
  2. Go to profile > API
  3. Select Create API under On-chain Data to create apiKey
    CT-web-POR-open API in the rpc.json fileConfigure parameters related to OKLink open API in the rpc.json file

OKLink is a blockchain big data company that provides an open interface to query the address balance of a specified height in the blockchain. You can also obtain the public API from OKLink to verify the address balance published by OKX.