在任何国家,伪造钞票或银行票据都是严重的犯罪行为,但因利润巨大而吸引了众多犯罪,因此钞票及银行票据采用了唯一编码、水印及荧光纤维等各类防伪手段来确保无法伪造,或让伪造成本高得令人望而生畏。
数字商品可以不受限制地进行复制,这使得同一笔“加密货币”被同时多次使用成为可能,就像类似用印刷机不断仿制银行票据。
数字资产容易复制而难以鉴别的特点,在一个去中心化的点对点分布式账本中,非常容易伪造或产生双花问题,这个潜在漏洞将会是威胁系统完备性的最大敌人。
所谓双花问题就是:同一笔钱在同一个时间不能给予两个不同的人。复制“加密货币”,并且将其同时多次消费的能力使得“加密货币”变得无效且没有价值。
让我们设想一个下面的情景:
A将房屋卖给B,房屋从A到B的所有权变更会被记录在去中心化点对点系统的一个账本中,维护这个账本的节点需要将这条信息告知它所知道的其他所有的节点,并进一步通过这些节点让这条信息扩散出去,直到所有节点都知道从A到B的房屋所有权变更为止。
但是,这时A迅速访问了存有另一个账本的节点,并且将他刚转让给B的房屋的所有权在这个账本中记录为转让给C。
如果发生这件事的时候这个节点还没有得知A已经将房屋的所有权转让给了B,该节点就会记录下A将房屋的所有权转让给了C,并为此次转让提供证明。
此时就意味着A利用去中心化系统中同步信息需要时间这个潜在漏洞,将自己的房屋出售了两次,而事实上B和C是不能够同时拥有房屋的,他们之中只有一人能够成为房屋新的合法拥有者。A的所作所为导致的问题,我们称之为双花问题。
“双花”就是因复制数字商品引起的问题,只会存在于去中心化的点对点分布式账本中可能存在的问题,是完全分布式点对点系统中违反完备性的一个例子。
分布式点对点系统中违反完备性带来的双花问题
去中心化的点对点系统并不局限在管理所有权这一个应用场景中,但是无论在什么场景中,节点之间花费时间同步信息更新数据所带来的潜在问题始终存在,这和具体的应用场景无关。
因此,双花问题可以看作去中心化点对点系统中数据一致性的问题。因为数据的一致性是系统完备性的重要组成部分,故而我们可以说双花问题是影响系统完备性的具体例子。
中本聪的解决方案
当使用比特币时,买家和卖家对交易记录进行数字签名(盲签)。
我们并没有只盯着双重消费拉警报、抓骗子,只是判断哪笔交易有效。交易接收者必须要等待几个区块,才能确保有足够的时间来完成判断。骗子们可以随心所欲地尝试多次用掉同一笔钱,而他们所能得到的只是几个区块内的一笔有效交易,而其他的几笔全都无效。再过一段时间,一旦主链上有了一笔钱的花销,针对这笔钱的新花销会立即被拒绝。
即使一笔早期支付还没有进入区块链,如果这笔交易已经存在于所有节点的交易池,那么这笔钱的第二次支付也会被所有已经包含第一笔支付的节点所拒绝。
如果新的区块链被接纳,然后停止添加当前链接的区块,把所有交易从L池移到A池(也包括自工作开始后收到或创建的交易),从A池中清除新链所包含的交易记录,然后重新开始工作尝试延长新链。
是的。每当新交易进来时就刷新,所以L池基本上总是包含A池中的所有交易。
显然,中本聪提出的解决方案非常简单,每一个比特币都有唯一的编码,只能被消费一次,无论你把数字货币花出去几次,只有被大部分节点所承认的那次才是真正的消费,其他的消费记录会被拒绝。
这的确是一个天才的想法,要实现起来非常简单,真正解决了去中心化点对点分布式账本中潜在的双花问题,也因此构建了区块链技术的基本框架。
热门跟贴