交易篇想解答的问题就是:在没有第三方的情况下如何验证交易的真实性。后半部分说明比特币如何在现有电子现金初步解决方案的基础上,在没有第三方的情况下解决双重支付问题。
01 原文及翻译
原文:We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced, and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received.
翻译:我们需要一个方法让收款人知道之前的货币拥有者没有进行过双重支付。对于我们来说,只有最早的交易是算数,所以我们不在意后面有人尝试双重支付。要确认某一个交易是否真正发生过,最好的办法就是知道所有的交易。在铸币厂的模式中,铸币厂知道所有的交易,并且能决定交易排列的顺序(排在最前面的是真正算数的,没有被双重支付过)。而在没有第三方却依然想要达到以上效果,交易必须被公开发布,进而我们需要一个系统让所有参与人认同他们接受到的单一交易历史。收款人需要证据能够证明每一次交易发生的时间,大部分节点认同它是最先被接收的(没有被双重支付过)。
02 概念解析
双重支付:同一笔钱花了两次就是双重支付,是所有支付系统必须要解决的问题。对于实体支付,如使用纸币,并没有双重支付的问题,因为如果你要把支付出去的钱拿回来对方会报警,制造假币更是法律所禁止的事。但在电子支付中,电子现金只是信息,信息可以轻易地复制。如果电子现金能被复制多份,就能用多次。
交易发布:当一段时间内的交易完成之后,需要有人统一向所有参与人广播新一轮的交易,这就是交易的发布,或称为交易信息的广播。在银行系统中不存在这一步,所有的交易都是保密的,存放在银行的数据库中。
单一交易历史:指的是系统拥有统一的账本,无论系统内有多少参与者,所有参与者的账本都是统一的,在账本上记录了系统建成以来所有的交易历史信息。
03 设问答疑
①用人话总结一下比特币如何在没有第三方的情况下解决双重支付的问题?
建立一个人人都可以参与的网络,在这个网络里所有的交易全网公开,可以查证所有交易的时间先后顺序,同时利用计算资源对交易进行确认。
一旦所有交易公开,每个人手里都有同样的账本,我们就只要比对同一笔钱的交易记录就知道它是否被双重支付过,我们会认可最先完成的交易。比如我有10元,先给小明转10元,然后尝试双重支付再转10元给你,但是总账本上会记录我的10元已经到了小明账上,没有余额给你转账了,这样一来我的双重支付企图就可耻地失败了。
②以往的银行体系是一个强中心,是很多专业人士的心血,维护和运行需要国家级别的力量,而比特币是一个所有普通人都能参与的网络,后者为什么能实现同样的功能甚至做得更好呢?
原来是一个强中心,比特币将强中心的权力分化给各个节点,虽然各个节点也许有强弱,但相比之前的强中心,出现了更多的弱化中心,这就是所谓的“去中心化”。
原来银行统一管理账本数据库,银行可以对数据库做任何操作(创建、写入、读取、更新、删除)。而比特币系统中所有参与者都拥有账本,少数受利益驱动的参与者成为矿工,从事记账工作。比特币通过技术手段使得账本数据库仅有两个功能:写入、读取,没有更新功能。这使得没有第三方可以通过黑箱操作损害系统使用者的利益,这一点要比银行做得更好。
本质上,比特币是将银行的职能分解了,分配给系统中每一个有意愿的参与者,而意愿来自于对利益的追求而非情怀。所有人出于对个人利益的诉求在系统中本本分分,保证了系统的正常运行。