双花问题
假设已有了一个管理真实财产所有权的点对点系统。我们通过系统中的独立计算机节点,而不是中心化的数据库来对包含所有权信息的账本进行更新,每一个节点都有一份对这个账本的备份。一旦账本中一间房屋的所有权从一个人转移到另一个人,整个系统上的所有账本都需要进行同步,以保证更新到最新的状态。然而,在节点之间传递信息并更新各节点上的账本都需要时间,直到系统的最后一个节点收到最新的信息,并且完成对自己账本的更新之后,系统才可达到一个稳定的状态。也就是说,有的节点会比其他节点更早得知最新一次所有权转移的信息,而这就给那些提前获取账本更新信息的节点留下了一个利用这一信息来作恶的机会。
让我们设想一个下面的情景:A将房屋卖给B,房屋从A到B的所有权变更会被记录在去中心化点对点系统的一个账本中,维护这个账本的节点需要将这条信息告知它所知道的其他所有的节点,并进一步通过这些节点让这条信息扩散出去,直到所有节点都知道从A到B的房屋所有权变更为止。但是,这时A迅速访问了存有另一个账本的节点,并且将他刚转让给B的房屋的所有权在这个账本中记录为转让给了C。如果发生这件事的时候这个节点还没有得知A已经将房屋所有权转让给了B,该节点就会记录下A将房屋的所有权转让给了C,并为此次转让提供证明。此时就意味着A利用去中心化系统中同步信息需要时间这个潜在漏洞,将自己房屋出售了两次,而事实上B和C是不能够同时拥有房屋的,他们之中只有一人能够成为房屋的合法拥有者。A的所作所为导致的问题,我们称之为双花问题。
如何解决双花问题
解决复制数字商品引起的双花问题
因为“加密货币”或其他数字资产的可复制性,所带来的双花问题事实上和所有权的特性有关。如果不限定实现方法的话,任何可接受的将数字商品映射到其所有者的方法都可以解决这个问题。即时是一本纸质的中央账本或电子账本,不管它的系统结构如何,都可以确保“加密货币”同一时间只能被花费一次,从而确保账本始终正确工作。
解决去中心化的点对点分布式账本中潜在的双花问题
在这种使用场景下,系统架构和应用领域是确定了的。去中心化的点对点分布式账本经常被认为是源于区块链的经典案例,“区块链”就可以看作是去中心化的点对点分布式账本中潜在双花问题的解决方案。
解决分布式点对点系统中违反完备性的双花问题
在这种情景下,我们能够确定系统架构,但是应用领域不一定是确定的。因此,对于这个层面的双花问题,我们应关注在实现并且确保去中心化点对点系统的完备性,而不去关注系统具体的用途。然而一个去中心化点对点系统的用途会带来其对应的“完备性”的定义,比如我们比较一个简单的文件共享应用,和一个对数字资产所有权进行管理的应用,两者对完备性特征会有不同需求。因此,如果在明确应用的特殊要求和目标的情况下,我们无法回答区块链相关技术是否是实现并确保系统完备性的正确工具,这也就意味着可能在其他一些去中心化的点对点系统应用场景下,其他的诸如通过设计数据结构和特殊算法等方法,更适合用来实现并确保系统的完备性。