储备和负债证明 — BitMEX 演示

概述

在最近发布一个新提议的保护用户隐私的基于储量证明的系统之后,我们现在准备提供一个运作演示。以 BitMEX 平台为例,基于比特币区块高度 693,062 的一次性快照进行演示。该区块于 2021 年 7 月 28 日生成。本文包含分步指南,以便任何人都可以在此快照点使用提供的示例账户详细信息验证 BitMEX 的储备,并验证负债快照中包含的负债。

下载储备和负债数据档案

截至 2021 年 7 月 29 日,BitMEX 已经公布了其在快照点的比特币储备和负债的详细信息,作为一次性的演示活动。储备档案是公司控制下的所有比特币的完整列表,愿意公布此列表显示了高度的开放性和透明度。展望未来,我们的最终计划是每月公布这些详细信息。

完整的储备和负债档案可以在这里下载:
https://public.bitmex.com/?prefix=data/porl/

储备证明

下面提供了一张 BitMEX 储备档案的截图。在文档顶部,可以看到快照点(区块 693,062)。比特币储备的总额也包括在内,11,009,053,026,106 聪或 110,090 个比特币。(由于交易平台的精度要求,BitMEX 总是以聪来进行所有计算)。鉴于 BitMEX 的虚名地址(vanity address),外部分析师一直对 BitMEX 的比特币储备有很好的了解,然而这是第一次公布如此详细的信息。

BitMEX 一直是一间非常透明的公司,将所有的比特币存储在一个多重签名方案下,使用三个静态公钥。这三个密钥也在档案的顶部提供。然后,这个 200 MB 的档案包含了一长串地址和每个被托管的 UTXO 执行脚本;这些执行脚本包括 BitMEX 的三个公钥。因此,假设公司能够访问与三个公钥相关的三个私钥,这证明了公司能够访问所有的资金,这也在公司每日进行提现时得到了证明。因此,该文件可以被视为公司储备的证明和可花费资金的证明。

BitMEX 储备档案截图

来源: BitMEX

该数据库包含约 300,000 个 UTXO。人们还可以使用此数据集查看 BitMEX 在向原生 SegWit 格式地址过渡方面的进展,最近的地址都使用新的 Bech32 格式。除上述外,BitMEX 还发布了一个工具,用于根据运行 Bitcoin Core 时获得的比特币区块链副本来验证此储备清单。关于如何进行这项运作的更多详细信息将在本报告下文提供。

负债证明

下面我们提供了解释如何验证您的负债是否包含在已发布的负债默克尔树中的分步指南。目前 BitMEX 尚未向客户提供必要的账户详细信息以进行该流程,但提供了 BitMEX 保险基金账户的详细信息。进行此操作时,您可以查看账户余额所在的叶子,并检查其是否包含在总额中。

负债证明 - 使用示例账户的分步指南

步骤名称细节
1下载负债档案142 MB 负债档案的完整链接可在此获取:https://s3-eu-west-1.amazonaws.com/public.bitmex.com/data/porl/liabilities-693062-20210728D100000.011463000-proof.dat
未来 BitMEX 计划每月发布此档案的更新版本。
2下载项目代码验证储备和负债的工具是开源的,可在此下载:
https://github.com/BitMEX/proof-of-reserves-liabilities
3打开终端如果您使用的是 Mac 或 Linux,则打开终端应用程序以运行必要的命令。
4进入目录您需要到您从 GitHub 下载软件包的目录。在我们的例子中,我们输入了以下命令:

CD ~/Downloads/proof-of-reserves-liabilities
5检查系统要求为了检查系统是否安装了正确的应用程序,请运行以下命令:
pip3 install -r requirements.txt
6执行负债证明最后一步是运行搜索帐户余额的负债档案的命令并打印输出。为了正确执行此操作,您需要参考您下载负债档案的位置并提供您的账户详细信息。在以下命令中,使用了示例账户详细信息。
python3 validate_liabilities.py --proof ~/Downloads/liabilities-693187-20210729D070000.019585000-proof.dat --account 18446744073709551615 --nonce b1ce17e68502491e5cb611fb4a133efb6aa1f27aa7dd3b9930e53bb8b0c16980

在上述操作中,账户 18446744073709551615 属于 BitMEX 的保险基金账户。如果系统上线,客户可能会得到自己账户的 ID。如下表所示,在此快照中,保险基金已经被分为四片叶子。所有四片叶子的总余额为 37,275 比特币。这就是您进行上述操作练习时应该看到的输出。

保险基金包含在负债中的证明

比特币
叶子 374,3743,453,878,06435
叶子 439,6122,646,057,535,44126,461
叶子 806,1911,052,573,964,59110,526
叶子 1,037,05225,426,278,001254
总计3,727,511,656,09737,275

来源: BitMEX

下面的视频也是负债证明操作练习的一个运作演示。可以看到计算机通过负债默克尔(Merkle)树进行搜索,并找到四片相关的叶子,证明余额包括在总额中。

负债证明的运作演示 – 视频

核对储备证明与区块链

如上所述,在某种程度上证明储备很容易,因为您只需要下载储备文件并对其进行检查。然而,BitMEX 还提供了一个工具以将所有这些 UTXO 与区块链进行核对,您可以通过运行 Bitcoin Core 获得该工具。下文概述了解释如何进行此过程的分步指南。

核对储备证明与主链 – 分步指南

步骤名称细节
1下载储备文件200MB 负债档案的完整链接可在此获取:https://s3-eu-west-1.amazonaws.com/public.bitmex.com/data/porl/reserves-693062-20210728D113027681725000.yaml

在未来,BitMEX 计划每个月发布这个文件的更新版本。
2下载并安装 Bitcoin Core该软件可在此获取:
https://bitcoincore.org/en/download/
请运行 0.21 或更高版本
3创建 RPC 账户您需要编辑 Bitcoin Core 配置文件以使您的计算机具有 RPC 访问权限。我们将 bitcoin.conf 文件设置如下:
server=1
rpcuser=BitMEX
rpcpassword=BitMEXResearch

4将 Bitcoin Core 同步到链尖然后您需要将 Bitcoin Core 同步到当前的链尖,这可能需要 10 小时左右。(然而许多尝试这项工作的人可能已经非常熟悉此程序)
5进入目录您需要到您从 GitHub 下载软件包的目录。在我们的例子中,我们输入了以下命令。
CD ~/Downloads/proof-of-reserves-liabilities
6执行储备证明命令最后一步是运行连接到 Bitcoin Core 的命令并执行操作。为了正确执行此操作,您必须参考您下载储备文件的位置,并提供您的 RPC 账户详细信息以访问 Bitcoin Core。请参阅我们在下面使用的命令:
python3 validate_reserves.py --proof ~/Downloads/reserves-693062-20210728D113027681725000.yaml --rpcauth BitMEX:BitMEXResearch --rpcport 8332
请注意,加载储备档案可能会占用相当多的时间,也许 10 分钟左右。
7让 Bitcoin Core 回到链尖在进行证明之后,我们必须运行以下命令以使 Bitcoin Core 重新连接回链尖。python3 validate_reserves.py --reconsider --rpcauth BitMEX:BitMEXResearch --rpcport 8332<

储备证明流程截图

整个过程大约需要 20 分钟,其中最具挑战性的部分是将 Bitcoin Core 回滚到快照区块高度以进行检查。这就是为什么上图显示 Bitcoin Core 处于回滚两天的状态。如上图所示,我们能够验证 BitMEX 在区块高度 693,062 时控制了 110,090 个比特币。

储备证明的运作演示 – 视频

就是这样,BitMEX 声称控制了超过 100,000 个比特币,现在您完全可以自己验证这一点,用开源软件核对区块链检查余额。