第38篇 笔记-比特币白皮书

本文内容来自网络。

比特币:一种点对点的电子现金系统

纯粹的电子现金系统压根不需要第三方金融机构,直接就实现从买家到卖家的在线支付(此为中本聪核心观点之一,比特币机制主要目的是废掉类似支付宝、亚马逊之类的中间商)。

首先通过无敌的数字加密技术解决了上述方案中的一部分问题。其次通过对等网络的妙招,解决了“双花”(double-spending)问题。

第三就是我将单个的区块,用链串接起来,形成了一条完备的区块记录链。这些区块链中可能会有分支,但只有最长的那条链得到所有节点的共识。比特币世界的消息们可以四处随便窜,矿工节点们则是想来就来,想走就走,但一旦加入,就要按我老中的规矩来,必须在最长的那一条链下面干活。

在现实中,买卖双方当面支付、钱物两清,简洁而明确。但目前在互联网上依赖于类似支付宝这样的第三方机构来处理电子支付。这种基于信任的模式,其实天生缺陷。

例如:奸诈的买家拿到了货却利用种种漏洞抵赖(这是一种信任缺失);又或是卖家卖出高仿假冒货品而买家无法有效申辩(此是又一种信任缺失)。凡此种种,于此机制下,网络中的欺诈行为无法根除。

比特币网络创造了一个伟大的不需要信任的机制,这是一个基于密码学的无敌安全的电子支付系统,不需要第三方做担保,任何两个交易者均能实现可靠交易。我这发明中的不可逆交易机制将保护卖方免受欺诈,而常规的托管机制又可以很容易地保护买方。在本文中,我还提出了“双花”问题的解决方案。

1. 比特币就是数字签名链

各位看官请铭记:比特币就是数字签名链。或者说,你现在可以把1个比特币(BTC)看作一沓写着交易记录的小纸条(transaction),这些小纸条永不损坏,字迹永不磨灭,也不可更改。

它的第一张上写着“某时发行此1BTC,拥有者张三”。此后岁月斗转,这1BTC每经一次转手,就增加一张小纸条。现在看上图,一个BTC的转移支付操作可理解如下:

  • 由转让者张三新写一张“小纸条”(transaction),并在纸条上端写好接收者的“姓名”:王五(Public Key);

  • 张三定睛细看,认真验证纸条上的交易信息、接收者姓名,确认无误后,在纸条下端盖下一个转让有效的“私印”(Signature),但此私印上的名字却不是转让者的姓名张三,而是他的“别号”:张幺娃(Privage Key);

  •  把这张最新的“小纸条”放到“小纸条堆”的最下面;

  • 这1个BTC的拥有者换成了王五。

至此,收款人还不能验证和解决双花问题。不过只要所有人均知晓所有的交易,便不再需要第三方,也不再会有双花,所以我创造了一个机制——公开宣布交易(publicly announced,此为中本聪的核心观点之二:通过公开透明的交易数据灭杀第三方机构)。

此机制实现了:

  1. 让参与者(各个矿工节点)按时序在各个时段接收全网广播的交易信息;

  2. 这些交易信息传到各个矿工节点,经验证确认后被接受。

2. 区块链:就是一册册电子账本组成的总账本

我的解决方案从时间戳服务开始。首先对预备广播的最新区块数据(基于block的一组item)进行哈希算法加密,然后盖上一个时间戳,之后向全网广播这个区块数据。每次进行时间戳操作时,必须把上一个区块的(经哈希算法加密过的)数据摘要也加到这个新区块当中,这样就形成了一个链。

3. 工作证明机制:解决了网络上少数服从多数的伪命题

为了避免向全网广播“盖好时间戳的最新区块数据”的这一个操作,会像网上发帖那样大水漫灌,我借鉴了Adam Back提出的Hashcash方法[3],搞了个工作证明机制。

我的工作证明说白了就是小小的投名状,想发起广播者,首先要参加一次数字猜谜,第一个猜对的就能向全网发起广播。这数字猜谜游戏有点难,要基于SHA-256算法和指定的nonce字段进行各种倒腾,不过验证是否猜对很容易。

数字猜谜活动每10分钟搞一次,一旦猜谜胜出,就叫做完成一次工作证明(成功挖矿一次)。

工作证明机制也解决了网络上少数服从多数的伪命题。如果多数是基于一个IP地址一票通过,那么任何能够分配多个IP的人都有可能推翻它。工作证明本质上是一个CPU一票(现在是一个挖矿池一票了)。

最长的一条链表示这是多数人的决定,这条链上投入的工作证明最大。如果大部分的算力由诚实节点控制,诚实链将增长最快,并超过任何竞争链。要修改一个过去的区块数据,攻击者必须重做该区块数据以及其后所有区块的工作证明,并赶超诚实节点工作的区块链,我掐指推算过了,这其实是不可能的。

随着时间的推移,我猜想人们可能会为了加快解谜而不断提升硬件能力,因为要想快速解谜就得配置强劲的硬件平台,其中CPU的计算能力最为重要(后来升级成了GPU能力,现在则是矿池的能力了)。

当然不用担心,在我的机制设定中,工作证明的难度会动态的调整。

现在人类已经把硬件升级到了极致,工作证明的难度也随之达到了极致,一般的CPU、GPU早就淘汰了,他们已经用巨型矿池来猜谜了。当年教主您只需花费1美分的电费挖到1BTC,现在2019年,挖到1BTC需要的电费是3000美元。

4. 运行网络步骤

运行网络的步骤如下:

  1. 新的交易(注意不是区块,是交易,例如A转了2BTC给B)将广播到所有矿工节点;

  2. 每个矿工节点将最新收集到的交易信息打包到一个预备区块NB中(大致等同于上述的时间戳服务);

  3. 然后每个矿工节点基于区块NB的预备数据,开始全力挑战此时段的工作证明(即数字猜谜,此处简化业务逻辑见下图);

  4. 当一个节点完成一次工作证明时,它立即将上述2中预备好的“盖好时间戳的最新区块数据”广播给所有节点;

  5. 只有当这个(被广播的)区块数据中所有交易都有效且尚未被记录过,各矿工节点才接受这个成功解谜者所广播的最新区块;

  6. 网络上的矿工节点们确认“该区块”有效后有如下操作:1)在自己保管的区块链(账本)末尾添加“该区块”;2)刚才自己准备的没用上的预打包区块作废,基于此刻最新的交易数据、关联区块的数据摘要等重新预备打包又一个新区块。

5. 比特币中的非对称加密算法机制

中本聪对于密码学与加密算法的纯熟应用,是比特币系统中最让人称道的天才之一。此中的非对称加密算法机制,主要包含:私钥、公钥、数字签名三个关键技术点和配套的非对称加密算法。

先说说信息加密,在人类社会的发展历程中,对信息加密和破密的第一刚需就是军队。在古罗马时代人类为了加密已经可以熟练使用“密钥”机制。所谓密钥,就是可以对原始数据进行加密,也可以对加密数据进行解密的东东。

例如“baby”这个单词,我们采用密钥为1的向后错位加密算法(b向后错1位是c,a向后错1位是b...),那么加密后就变成了“cbcz”,解密时用密钥1向前反推即可。在漫长的历史中,人类围绕单密钥的算法演变原来越复杂,到二战时英德双方在基于单密钥的电报加密和破密方面斗智斗勇,精彩纷呈,并直接改变了二战的进程。

非对称加密算法于1976年发明,经过不断优化演变,目前号称人类最安全的加密算法,非对称加密主要的业务机制是

1)加解密使用密钥,密钥即可用于加密,也可用于解密;

2)现在有配对的两个密钥,称为私钥A和公钥B,此为非对称;

3)用私钥A加密的信息,可以用配对公钥B解密;

4)用公钥B加密的信息,可以用配对私钥A解密;

5)目前人类的算力,理论上还不能破解非对称加密。

6. 奖励机制

“货币发行由人民群众说了算”

奖励一,每时段新区块的创建者(亦即猜谜成功者)可即时发行一次指定额度的新货币(最开始是50BTC,每4年减半,现在2019年是12.5BTC),同时指定这笔硬币属于自己,这也是每个区块中的第一笔交易(CoinBase),具体操作是当运行到上节网络的步骤“2”处,预备新区块数据时,矿工们在交易数据区第一行先写上“因某猜谜有功,得奖50BTC”,若猜谜成功,这就被所有矿工节点记录在案了——梦想成真!否则就是一次自嗨。)

这既激励了矿工节点们的热情,又不需央行就可发行BTC,还可轻松实现货币流通。(中本聪的核心观点之三:货币发行由人民群众说了算。

奖励二,交易佣金。交易时,交易发起者可以自主设定交易的手续费(佣金)额度。该佣金是将此交易信息添加到新增区块中的奖励(记账佣金)。只有被成功记录到完整区块链上的交易,才算是获得了所有矿工节点对其的共识,也才最终有效。(此奖励其实只有每个时段的猜谜优胜者获得)

这些奖励有助于鼓励节点保持诚实。如果一个攻击者试图窃取他人的BTC,或者妄想自己生成伪币,他或许能够装配出一台比超级强力的硬件设备。

但他会发现遵守规则更有利可图,因为在我的规则下,拥有强劲硬件能力更利于他通过规则,快速解题,发行新货币,而不是破坏制度获利。(这是中本聪又一伟大的创造,通过博弈、投名状、思想动员等等,让敌人主动变成了自己人——恍惚间回到了淮海战役的华野纵队?)

比特币白皮书所述的简化业务逻辑如下图,当然实际的比特币比这复杂精细一些。

猜你喜欢

转载自blog.csdn.net/wonderBlock/article/details/108313165