如何验证欧易对钱包地址的拥有权和余额?

发布于 2023年9月26日更新于 2024年4月12日阅读时长 10 分钟470

此文章将讲述如何通过欧易公布的储备金快照文件及开源的储备金验证工具验证欧易对钱包地址的拥有权和余额。

验证前的准备工作

1. 下载储备金验证工具,双击解压下载的zip文件

文件内包含以下两个工具:

##

__Verify Address - 用于验证储备金地址所有权__, Check Balance - 用于验证储备金地址余额(备注:需要配置 rpc.json,用于配置节点RPC或者OKLink open API等相关信息。)

2. 下载储备证明文件

3. 把下载的储备证明文件和储备金验证工具存储到同一个文件夹里

4. 若需要验证储备金地址拥有权,参考【验证欧易钱包储备金地址的拥有权】章节进行操作;若需要验证储备金地址余额,参考【验证欧易钱包储备金地址余额】章节进行操作

1. 验证欧易钱包储备金地址的拥有权

欧易快照数据中包含地址、消息“I am an OKX address”和签名,以及BTC多签赎回脚本,通过下列步骤可以验证欧易储备金地址的拥有权。
1)BTC钱包采用单签和多签两种签名方式
  • 多签地址采用2/3签名,每条数据中包含两个签名,由欧易持有三把私钥中的两把私钥进行签名得到。通过验证两个签名,可以确保欧易至少掌握了其中两把私钥,从而证明欧易对该多签地址的拥有权
  • 单签地址通过消息和签名结果可验证欧易对该地址的拥有权。
2)ETH和USDT钱包
  • 通过消息和签名结果可以证明欧易对该地址拥有所有权。

您可通过欧易提供的开源工具或者第三方工具验证欧易对公布地址的拥有权。

1.1 使用储备金验证工具验证地址拥有权

1. 打开终端程序

  • Mac系统:终端应用
  • Windows系统:cmd应用

2. 运行指令并定位到下载的软件包的目录,在我们的例子中,文件储存在 Downloads 中,命名为 proof-of-reserves,所以输入 cd ~/Downloads/proof-of-reserves 命令

3. 于终端程序输入以下命令(文件名可以替换成其他需要验证的文件

Mac

./VerifyAddress --por_csv_filename=okx_por_20221122.csv

Windows

VerifyAddress.exe --por_csv_filename=okx_por_20221122.csv
注:如果您使用的是 Mac 系统,在此步骤中遇到安全设定的问题,可到 系统偏好设置 -> 安全性&隐私 -> 通用 ->点按锁按钮以进行更改 -> 允许从以下位置下载的 App:App Store和被认可的开发者 -> 给予工具权限

4. 如果验证结果通过,终端程序会返回 Verify address signature end, all address passed (如下图)

IMG_8310.JPG

1.2 使用第三方工具验证地址拥有权

针对下列类型的地址,您可以使用第三方工具验证该地址的所有权,证明查询的地址拥有权属于欧易

以BTC单签地址为例:

1. 首先,下载并打开储备证明文件

2.拷贝一条记录的地址、消息、签名 (如下图标注的部分)

3. 进入BTC验签工具网站,粘贴复制的地址、消息、签名

4. 如果验证通过,结果将如下图所示

1.3 验证欧易对 ETH 质押资产所有权

对于 ETH 质押资产,您可以使用第三方浏览器(beaconcha.in)来验证欧易对这些公钥的所有权。

第 1 步:下载并打开 ETH 质押文件
第 2 步:复制任意公钥地址(如下所示)
41
第 3 步:进入beaconcha.in,粘贴公钥地址
第 4 步:检查“From address”和“Recipient address”与 ETH 质押文件中的地址是否匹配。 “From address”和“Recipient address”由欧易签名确认所有权,您可以根据 1.1 和 1.2 中的说明对此进行验证。
42
43

2. 验证欧易钱包储备金地址余额

您可以通过以下步骤验证:

  1. 快照高度时刻的特定币种链上地址余额,与欧易公布的快照文件中地址余额进行对比,从而验证是否一致。
  2. 快照高度时刻的特定币种链上地址余额总和,与欧易公布的快照文件中地址余额总和进行对比,验证是否一致。

查询快照高度时刻地址余额时,可以配置节点rpc进行余额查询,或者配置OKLink的open API进行余额查询。

2.1 验证BTC指定地址余额和总余额

步骤一:安装Bitcoin Core客户端,同步到最新高度,然后将区块回滚到欧易快照时高度

安装Bitcoin节点
  1. 可在此处下载Bitcoin Core软件:https://bitcoincore.org/en/download/ ,请下载 0.21 或之后的版本
  1. 需要编辑Bitcoin Core的配置文件,以使节点RPC可访问。创建 ~/.bitcoin/bitcoin.conf 文件并用编辑器打开或运行 vi ~/.bitcoin/bitcoin.conf 命令,编辑
server=1
rpcuser=OKX
rpcpassword=OKXWallet
  1. 进入 bin 目录,运行 ./bitcoind 命令,启动节点
  1. 等待节点同步到最新高度,大约需要12个小时
同步到最新高度后,需要回滚节点到OKX快照高度,以查询快照高度余额,操作如下:
  • 运行 ./bitcoin-cli invalidateblock 00000000000000000005829017993a7a21e4b7c731c95b9cb979c01294a7bd27 命令(注:‘00000000000000000005829017993a7a21e4b7c731c95b9cb979c01294a7bd27’ - 这个参数是您下载的储备证明文件中BTC区块高度的下一个区块的hash值,这里只是一个示例。您需要根据下载的储备证明文件中BTC的区块高度查询到对应的hash值。
  • 等待节点回滚到快照高度,可以运行 ./bitcoin-cli getblockcount 命令查看是否回滚完成,也可以查看节点输出日志判断,如下图所示

步骤二:配置参数

  1. 打开rpc.json文件
  2. 配置btc相关的RPC参数并保存,以本机为例,如下图所示

步骤三:使用工具CheckBalance,验证地址链上余额是否跟快照文件中展示的余额一致

1. 打开终端程序

  1. Mac系统:终端应用
  2. Windows系统:cmd应用

2. 运行指令并定位到下载的软件包的目录,在我们的例子中,文件储存在 Downloads 中,命名为 proof-of-reserves,所以输入 cd ~/Downloads/proof-of-reserves 命令

验证单个地址余额

1. 在终端执行以下命令,如下图所示(地址和文件名可以替换成其他需要验证的地址和文件

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
注:如果您使用的是 Mac 系统,在此步骤中遇到安全设定的问题,可到 系统偏好设置 -> 安全性&隐私 -> 通用 ->点按锁按钮以进行更改 -> 允许从以下位置下载的 App:App Store和被认可的开发者 -> 给予工具权限

2. 根据返回结果,单个地址余额如下图所示

3. 对比欧易公布的储备金文件与输出结果,该结果一致

验证所有地址余额

1. 在终端执行以下命令,如下图所示(文件名可以替换成其他需要验证的文件

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
注:如果您使用的是 Mac 系统,在此步骤中遇到安全设定的问题,可到 系统偏好设置 -> 安全性&隐私 -> 通用 ->点按锁按钮以进行更改 -> 允许从以下位置下载的 App:App Store和被认可的开发者 -> 给予工具权限

2. 根据返回结果,所有地址余额输出结果如下图所示

3. 对比欧易公布的储备金文件与输出结果,该结果一致

2.2 验证ETH / USDT 指定地址余额和总币种所有地址余额

欧易公布了自己所拥有的ethereum、optimism、arbitrum、polygon、avalanche等链上的地址以及相关资产余额(ETH或USDT),您可以使用开源工具对相关地址的余额进行验证。

您可以选择使用官方默认的rpc,第三方rpc或者OKLink的API进行验证

  1. 使用默认rpc,不用修改rpc.json,可直接跳到验证步骤
  2. 使用第三方节点rpc (如:Infura,Alchemy)- 请查看附录
  3. 使用OKLink的API进行验证 - 请查看附录

使用工具CheckBalance,验证地址链上余额是否跟快照文件中展示的余额一致

验证步骤:

1. 打开终端程序

    • Mac系统:终端应用

    • Windows系统:cmd应用

2. 运行指令并定位到下载的软件包的目录,在我们的例子中,文件储存在Downloads中,命名为proof-of-reserves,所以输入 cd ~/Downloads/proof-of-reserves 命令

验证单个地址余额

1. 假设要验证ETH的0xc5451b523d5fffe1351337a221688a62806ad91a地址在指定高度的余额跟快照文件(比如okx_por_20221122.csv)中展示的余额是否一致,需要在终端执行以下命令

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

注:若查询其他币种,需要替换命令中的 "coin_name" 和 "address"

如果您使用的是 Mac 系统,在此步骤中遇到安全设定的问题,可到 系统偏好设置 -> 安全性&隐私 -> 通用 ->点按锁按钮以进行更改 -> 允许从以下位置下载的 App:App Store和被认可的开发者 -> 给予工具权限

2.根据返回结果,ETH 在指定高度的查询地址余额如下图所示

3.对比欧易公布的储备金文件与输出结果,区块高度的地址余额和储备金文件内的余额一致,因此可证明此欧易钱包地址在快照时在链上拥有此数量的余额。

验证单币种所有地址余额总和

1. 假设要验证ETH的所有地址在指定高度的余额跟快照文件(比如okx_por_20221122.csv)中展示的余额是否一致,需要在终端执行以下命令:

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

注:若查询其他币种,需要更换 "coin_name",支持以下值:

BTC,ETH,ETH-ARBITRUM,ETH-OPTIMISM,USDT-ERC20,USDT-TRC20,USDT-POLY,USDT-AVAXC,USDT-ARBITRUM,USDT-OPTIMISM

如果您使用的是 Mac 系统,在此步骤中遇到安全设定的问题,可到 系统偏好设置 -> 安全性&隐私 -> 通用 ->点按锁按钮以进行更改 -> 允许从以下位置下载的 App:App Store和被认可的开发者 -> 给予工具权限

2. 根据返回结果,ETH 在指定高度的所有地址余额总和如下图所示

3. 对比欧易公布的储备金文件与输出结果,ETH 所有地址余额和储备金文件内的余额一致,因此可证明此欧易钱包地址在快照时在链上拥有此数量的总余额

附录:

使用第三方节点RPC (如:Infura,Alchemy)

在rpc.json文件中配置各条链归档节点的rpc参数,如下图所示:

获取evm系归档节点
  • 手动安装归档节点。可能需要一定时间同步,参考https://geth.ethereum.org/docs/install-and-build/installing-geth
  • 使用InfuraAlchemy等第三方节点
例如:Alchemy提供了ethereum归档节点服务
https://www.alchemy.com/overviews/archive-nodes

使用OKLink的API进行验证:

  1. 登录OKLink
  2. 点击右上角的人形图标,会显示一个下拉菜单,选择API
  3. 点击链上数据部分的创建API按钮创建apiKey

在rpc.json文件中配置OKLink open API相关的参数,如下图所示

OKLink是一家区块链大数据公司,提供了公开的接口查询区块链指定高度的地址余额。您也可以从OKLink获取公开的API对欧易公布的地址余额做校验。