任何加密货币开发人员最关心的问题之一是双重支出问题。这是指个人多次消费该加密货币的余额的发生率,从而有效地在支出记录和该可用加密货币的数量之间以及分配方式之间产生了差异。

双重支出问题是现金没有的问题。如果您用一张10美元的钞票支付三明治费用,并将该钞票交给三明治制造商,则您将无法在其他地方花费10美元。但是,使用数字货币(如比特币)进行的交易完全以数字方式发生。这意味着可以复制交易详细信息并重新广播,这样同一位BTC可以由一个所有者多次使用。下面,我们将研究加密货币开发人员如何确保不会发生双重支出。

重要要点

数字货币概念引起的一个技术问题是,有人可以复制数字货币并同时在两个或多个地方使用它。 通过使用称为工作量证明(PoW)的共识机制,可以在基于比特币的基于区块链的加密货币中避免这种“双花”问题。 该PoW由分散的``矿工''网络执行,不仅可以确保区块链分类账上过去交易的保真度,还可以检测并防止双重支出。

了解区块链

支持像比特币这样的数字货币的区块链无法阻止其双重支出。相反,涉及相关加密货币的所有不同交易均被发布到区块链,在区块链中它们分别进行验证和确认过程的保护。对于比特币和许多其他加密货币,以这种方式确认的交易将变得不可逆转;它们公开发布并永久保存。

比特币是解决双重支出问题的第一种主要数字货币。为此,它实施了这种确认机制并维护了一个通用的总账系统。通过这种方式,比特币区块链保留了时间戳交易的记录,该记录可以追溯到2009年加密货币的成立。

用比特币术语来说,“块”是永久记录数据的文件。所有最近的交易都被写入块中,就像在交易所上的股票交易分类账一样。每隔几分钟就会将来自区块的信息添加到分类账中;网络上的所有节点都维护区块链分类账的副本。用户只能浏览区块链中的比特币并仅按数量查看交易。有关任何交易中买卖双方身份的详细信息均受高级加密保护,这也可以保护分类帐免遭外部来源的篡改。当区块链分类账更新时,所有比特币钱包也是如此。

处理双倍支出

假设您有1个BTC,然后尝试在两次单独的交易中花费两次。您可以通过将相同的BTC发送到两个单独的比特币钱包地址来尝试执行此操作。然后,这两个交易都将进入未确认的交易池。第一笔交易将通过确认机制批准,然后验证到后续区块中。但是,第二笔交易将被确认过程确认为无效,并且不会被验证。如果同时从池中提取这两项交易以进行确认,则确认数最高的交易将被包括在区块链中,而另一笔交易将被丢弃。

尽管这有效地解决了双重支出问题,但并非没有问题。例如,第二笔(失败的)交易的预期接收者不会参与交易本身的失败,但是该人将不会收到他或她所预期的比特币。许多商家等待至少6笔交易确认(这意味着在有问题的交易之后6个后续交易区块已添加到区块链中)。在这一点上,商人可以安全地认为该交易是有效的。

该系统中还存在其他漏洞,可能允许双花攻击。例如,如果攻击者以某种方式能够控制至少51%的网络力量,则他或她可以投入双倍的费用。如果攻击者以某种方式能够控制这么多的计算能力,则他或她可以撤销交易并创建一个单独的私有区块链。但是,比特币的快速增长实际上确保了这种攻击是不可能的。(有关更多信息,请注意当心这五个比特币骗局)

工作证明和“采矿”说明

现在,让我们多一点技术。用户检测篡改的方式(例如在实践中尝试双花)是通过散列(长串的数字)作为工作量证明(PoW)。通过哈希函数(给定的数据使用SHA-256)放入一组给定的数据,它将仅生成一个哈希。但是,由于“雪崩效应”,即使对原始数据的任何部分进行微小的更改,也将导致完全无法识别的哈希。无论原始数据集的大小如何,给定函数生成的散列都将具有相同的长度。哈希是一种单向函数:它不能用于获取原始数据,只能用于检查生成哈希的数据是否与原始数据匹配。

对于现代计算机而言,仅生成一组比特币交易的任何哈希值都是微不足道的,因此,为了将流程转变为“工作”,比特币网络设置了一定的“难度”。调整此设置,以便大约每10分钟就“挖掘”一个新块-通过生成有效的哈希将其添加到区块链中。通过为散列建立“目标”来完成设置难度:目标越低,有效哈希的集合就越小,并且生成哈希的难度就越大。实际上,这意味着以一个长字符串零开始的哈希:例如,块#429818的哈希为000000000000000004dd3426129639082239efd583b5273b1bd75e8d78ff2e8d。该区块包含2,012笔交易,涉及1,000多个比特币,以及前一个区块的标头。如果用户通过0.0001比特币更改了一笔交易金额,则产生的哈希将无法识别,网络将拒绝欺诈行为。

由于给定的一组数据只能生成一个哈希,矿工如何确保他们在目标下方生成哈希他们通过添加一个整数来更改输入,该整数称为现时数(“一次使用数字”)。一旦找到有效的哈希,它将被广播到网络,并将该块添加到区块链。

采矿是一个竞争过程,但更多的是彩票而不是比赛。平均而言,某人每隔十分钟就会产生可接受的工作证明,但任何人都将猜测是谁。矿工聚集在一起以增加其开采区块的机会,这产生了交易费用,并在有限的时间内奖励了新创建的比特币。

工作量证明使更改区块链的任何方面变得极为困难,因为这种更改将需要重新挖掘所有后续块。由于完成散列功能所需的机器和能力非常昂贵,这也使用户或用户池难以垄断网络的计算能力。