比特币白皮书
比特币白皮书
0x00摘要
一个真正意义上的点对点的在线电子交易系统,应该满足交易的双方在不需第三方金融机构介入的情况下进行。虽说数字签名技术,部分解决了这个问题,但是又需要面临,在离线交易过程中可能出现的“重复支付”(double-spending )问题。我们在这里给出了一种解决的办法,这种方法将网络时间戳通过hash转换,加入到一种基于hash的、持续伸展的“工作证明链”(以下简称工作链)中。攻击者除非能够将之前所做的工作再做一遍,否则无法更改这个工作证明链中已有的工作证明记录。也就是说,最长的工作链一方面证明了其见证了最多的交易记录,另一方面也说明了其所掌握的CPU计算能力(译注:HASH的计算能力)。只要大多数的CPU计算能力掌握在各个交易的个体手中,那么攻击者无法对该交易网络进行攻击。当然,这个交易系统也需要最基本的结构,个个节点也会最大范围的通知自己所记录的交易行为。由于最长的工作链存有所有的交易记录,所以每个节点可以在任意的时间脱离或者回到这个交易系统,而不会丢失其未曾见证的交易记录。
0x01说明
目前,互联网上的电子商务几乎完全依赖作为可信第三方的金融机构来处理电子支付。在大多数情况下,该交易模式可以应对,但它仍然受到基于信任模型的固有弱点的影响。比如,不可避免的调解纠纷,而调解成本又增加了交易成本,限制了最小的实际交易规模,并且切断了小型临时交易的可能性。尤其是,当需要运作而又无法正常的运作一笔“不可逆的交易”时,交易成本会大大的增加。由于该系统的提供信息有可能存在掺了假的或者过时的信息,所以交易的双方都需要花更多的成本在获取双方的信任上,进一步增加了交易的成本。这种交易机制在没有任何可信任的第三方见证的情况下,交易无法进行下去。
事实上,目前所需要的是一种基于密码证明而不是信任的电子支付系统,这个系统允许任何两个愿意相互交易的双方,在不需要可信任的第三方的情况下进行交易。一方面,由于在实施欺骗需要付出巨大的计算代价,从而保护了卖家免受欺诈;另一方面,使容易被采用的常规托管机制,来保护买家。在本文中,我们提出了一个解决重复支付问题的解决方案,这个方案使用分布式时间戳服务器来顺序生成基于交易时间的工作证明。并且只要该系统中的所有坏人节点的计算能力不超过系统内的其他节点,那么就能保证这个系统是安全的。(译注:51%攻击)
0x02交易
这里定义一种电子货币保存一系列的数字签名。在交易的过程中,交易中的付款方首先将之前的交易与付款方的公钥一同进行hash,最终添加到付款方所持有的电子货币中,并传给收款方,收款方使用付款方的公钥对该电子货币进行验证是否为收款方的身份。
问题在于,收款方无法确认付款方是否多花了钱。一般的解决方法是引入一个可信的第三方,或者说造币厂,对每一笔交易进行审查。具体过程是,每一笔交易发生时,付款方将所持有的货币传回给造币厂,造币厂则将这个货币摧毁,产生一个新的货币给收款方。这样以来,整个交易的过程安全性完全依赖于造币厂。
而我们需要一种让收款者知道付款方没有进行二次交易。为了这个目的,我们可以在交易的过程中认为,只有最早的那笔交易是算数的,这样避免了二次交易情况的发生。收款方通过遍历所有的交易来验证付款方发出交易请求而收款方没有收到这一情况。要想脱离造币厂的模型,交易必须被广而告之,并且需要一个系统来帮助所有的参与者决策交易的到达顺序,收款方在判断一个交易的到达时间时需要这个系统内的其他节点进行投票决定,少数服从多数。
0x03时间戳服务器
时间戳服务器是一切的开始,时间戳服务器工作原理是对一个block进行hash,并对其结果进行广播。建立时间戳服务器的意义主要是为了证明某一个数据在一个时间点一定存在。在组成一个链的时候,每一个时间戳的生成都会考虑到之前时间戳的信息。
参考
版权声明:本文由littleji.com创作并发表,转载请注明作者及出处,欢迎关注公众号:littleji_com
本文遵守CC BY0SA 4.0
if you have any questions, please leave a message behind or give an issue