『学概念找员外』准备金证明

比特币交易所或者其他提供比特币管理服务的机构,可以使用一种称为准备金证明(proof of reserve)的密码学技术来向储户证明他们留存了一部分储备金。例如,按照储蓄额的25%留存,从而消除投资人的担心。

准备金证明包括两方面的内容:首先是证明你有多少准备金。这比较容易,交易所只需发起一笔向自己转账的交易,转账的金额等于其公布的准备金金额即可。如果交易所声称留存了100000个比特币作为准备金,那么它们会发起一笔100000个比特币的转账交易,收款人就是交易所本身,然后向客户说明这笔交易的有效性。之后,它们会用同一个私钥去为一条查询指令签名,这个查询指令是公正的第三方随意发出的字符串。这样就可以证明出具准备金证明的人至少知晓该私钥(即使他不是私钥的拥有者)。

这里应注意到两点:首先,严格地说,准备金证明并无法证明交易所真正拥有这些准备金,只能说明真正拥有这笔比特币的人愿意参与准备金证明的过程。换句话说,准备金证明只是证明了某人(交易所)可以控制这一笔钱,或者某人(交易所)所熟悉的人可以控制这一笔钱。其次,准备金是可能被瞒报的,一个交易所可能留存了150000个比特币的准备金,但只向人们证明它留存了100000个比特币的准备金。因此,准备金证明不能证明准备金的上限金额,而只能证明其下限金额,即证明某人(交易所)“至少”有多少准备金。

目前,交易所只证明了留存的准备金规模,为了证明准备金留存比例,还需要证明其吸收的存款规模。知道了准备金规模和存款规模,那么将这两个数相除就得到了准备金留存比例。我们接下来会展示一种方法,可以确保交易所不会瞒报存款规模(但可以多报),这样,由于交易所向人们证明了准备金“至少”是多少,存款规模“至多”是多少,这样,在计算准备金比例时,分子偏小而分母偏大,因此,我们可以得到准备金比例的保守估计。

对于比特币交易所而言,如果不考虑储户隐私的话,可以将所有的存款记录公布,即公布所有储户的姓名和金额,这样,人们就可以计算交易所的储蓄规模(即交易所的负债规模),而且,如果交易所瞒报数据,那么某些储户将发现自己并不在公布名单内或者发现自己的储蓄额少了,这时,储户就会将此曝光,因此,交易所不可能瞒报存款规模。但是,交易所可以在存款记录中加入一些虚构的客户,这样,由于公布的数据真假掺和,在一定程度上可以保护储户的隐私,只是这么做会使交易所的总负债被高估。这种情况下,只要没有收到储户投诉其储蓄被少报或漏报,人们就可以相信,交易所公布的负债规模肯定不低于实际的负债规模。

当然,以上做法是以牺牲储户隐私为代价的。实际上,我们会用梅克尔树来证明存款规模。梅克尔树就是一棵哈希值构成的二叉树,每个指针不仅告诉我们去哪里找到一个信息,而且还告诉我们这个信息的哈希值。交易所想要证明其负债,可以先构建一棵二叉树,二叉树的每个叶节点都代表一个储户,之后我们还需要让储户可以核实交易所申明的负债规模,要实现这点,我们需要为每个节点添加一个字段(下文简称为存款金额字段),这个字段显示其最近的两个子节点的存款金额之和。

你可能感兴趣的:(『学概念找员外』准备金证明)