【关注收藏】
白皮书,顾名思义,是有着白色封面的报告或者重要文件,是一种立场明确。事实清楚,文字简练的没有任何文化色彩的文书。表达主体是官方的。比如:中美经贸磋商中方立场白皮书。百度与浪潮联合发布AI边缘计算白皮书。还有绿皮书:关于乐观前景的研究报告,蓝皮书:由第三方完成的综合研究报告,红皮书:关于危机警示的研究报告等。今天我们主要聊一下区块链技术基础上的数字代币的白皮书。给大家翻译了下主流代币BTC发行的白皮书,供大家研究。
区块链1.0比特币白皮书翻译版全文如下
比特币:一种对等电子现金系统
中本聪
satoshin@gmx.com
www.bitcoin.org
摘要。纯点对点版本的电子现金将允许在线支付直接从一方发送到另一方,而无需经过金融机构。数字签名提供了解决方案的一部分,但如果仍然需要可信的第三方来防止双重支出,那么主要的好处就会丧失。我们提出了一个使用对等网络来解决双支出问题的解决方案。网络时间戳通过将它们散列成一个持续的基于哈希的工作证明链来完成事务,形成一个记录,如果不重新进行工作证明,就无法更改该记录。最长的链不仅可以证明目击事件的顺序,而且可以证明它来自最大的CPU功率池。只要大部分CPU功率由不合作攻击网络的节点控制,它们就会产生最长的链和速度超过攻击者的空间。网络本身需要最小的结构。消息是在尽最大努力的基础上广播的,节点可以随意离开并重新加入网络,接受最长的工作链证明,以证明它们离开时发生了什么。
1.导言
互联网上的商业已经几乎完全依赖作为受信任的第三方的金融机构来处理电子支付。虽然该系统对大多数事务都运行良好,但它仍然存在基于信任模型的固有缺陷。完全不可逆的交易是不可能的,因为金融机构无法避免调解纠纷。调解成本增加了交易成本,限制了最低实际交易规模,并切断了小型临时交易的可能性,而丧失为不可逆服务支付不可逆付款的能力是一种更广泛的成本。由于有可能出现逆转,对信任的需求也随之扩大。商人必须提防他们的顾客,向他们寻求比他们所需要的更多的信息。一定比例的欺诈被认为是不可避免的。这些成本和支付不确定性可以通过使用实物货币亲自避免,但没有任何机制可以在没有可信方的情况下通过通信渠道进行支付。
我们需要的是一个基于密码证明而不是信任的电子支付系统,
允许任何双方自愿直接与对方进行交易,而不需要信任的第三方。在计算上无法逆转的交易将保护卖方免遭欺诈,而且可以很容易地实施常规代管机制来保护买方。在本文中,我们提出了一种解决双开销问题的方法,使用对等分布式时间戳服务器来生成事务的时间顺序的计算证明。只要诚实的节点集体控制比任何协作组的攻击节点更多的CPU功率,系统就是安全的。
2.交易
我们将电子硬币定义为数字签名链。每个所有者通过数字方式签署前一个交易的散列和下一个所有者的公钥,并将它们添加到硬币的末尾,从而将硬币转移到下一个所有者。受款人可以验证签名以验证所有权链。
当然,问题是收款人无法证实其中一位业主并没有花上两倍的钱。
硬币。一个常见的解决方案是引入一个可信的中央权威机构,即造币公司,负责检查每笔交易的双倍支出。每次交易后,硬币必须归还铸币厂发行新的硬币,并且只有直接从铸币厂发行的硬币才能被信任不会被加倍使用。这个解决方案的问题是,整个货币系统的命运取决于管理造币厂的公司,每一笔交易都要经过它们,就像银行一样。
我们需要一种方式让收款人知道以前的业主没有在更早的时候签署。
交易。就我们的目的而言,最早的交易才是最重要的,所以我们不关心以后尝试加倍支出的问题。确认没有事务的唯一方法是了解所有事务。在基于薄荷的模型中,造币公司知道所有的事务,并决定哪一个是第一个到达的。要在没有可信方的情况下完成这一任务,交易必须公开[1],我们需要一个系统,让参与者能够就接收交易的顺序达成一致。收款人需要证明在每次交易时,大多数节点都同意这是第一次收到。
3.时间戳服务器
我们提出的解决方案从时间戳服务器开始。时间戳服务器的工作方式是获取要被时间戳的项目块的散列,并广泛地发布散列,例如在报纸或Usenet POST[2-5]中。时间戳证明数据当时必须存在,显然是为了进入哈希。每个时间戳都包含其散列中的前一个时间戳,形成一个链,每个额外的时间戳都会增强前面的时间戳。
为了在点对点的基础上实现分布式时间戳服务器,我们需要使用类似于adam back的Hash现金[6]的工作证明系统,而不是报纸或usenet帖子。工作证明涉及扫描一个值,当散列时,例如使用SHA-256,散列以一些零位开始。所需的平均工作量是所需的零位数的指数,可以通过执行一个散列来验证。
对于时间戳网络,我们通过在块,直到找到给块的散列提供所需的零位的值为止。一旦CPU工作被花费以使其满足工作的证明,如果不重新执行该工作,则无法更改块。由于后面的块是链式的,所以更改块的工作将包括在之后重做所有的块。
工作证明也解决了多数决策中确定表示的问题。
如果多数是基于一个IP地址一票,它可能会被任何能够分配许多IP的人所颠覆。工作证明基本上是一次CPU一票。多数人的决定是以最长的链条来代表的,在这条链条上投入了最大的工作证明。如果大部分CPU功率由诚实的节点控制,那么诚实链将增长最快,并且超过任何竞争链。要修改过去的块,攻击者必须重做块及其之后的所有块的工作证明,然后赶上并超过诚实节点的工作。稍后我们将显示,随着后续块的添加,速度较慢的攻击者追赶的概率呈指数级减小。
为了补偿硬件速度的提高和对运行节点的不同兴趣,
工作证明困难是由移动平均目标每小时平均块数决定的。如果它们产生得太快,难度就会增加。
5.网络
运行网络的步骤如下:
1)向所有节点广播新事务。2)每个节点将新事务收集到块中。(3)每个节点都致力于为其块查找工作的困难证明。4)当一个节点找到工作证明时,它向所有节点广播该块。(5)只有当该块中的所有事务都是有效的而不是已经花费的情况下,节点才接受该块。(6)节点通过在
链,使用接受块的散列作为前一个哈希。
节点总是认为最长的链是正确的,并将继续工作。
扩展它。如果两个节点同时广播下一个块的不同版本,一些节点可以首先接收其中一个或另一个。在这种情况下,他们工作的第一个他们收到,但保存另一个分支,以防它变得更长。当找到下一个工作证明,一个分支变得更长时,领带就会被打破;在另一个分支上工作的节点将切换到更长的分支。新的事务广播不一定需要到达所有节点。只要他们到达
很多节点,它们很快就会进入一个块。块广播也可以容忍丢弃的消息。如果一个节点没有接收到一个块,它将在接收到下一个块时请求它,并意识到它丢失了一个块。
6.奖励
按照惯例,块中的第一个事务是一个特殊的事务,它启动块创建者拥有的新硬币。这增加了节点支持网络的动机,并提供了一种最初将硬币分发到流通中的方法,因为没有中央当局来发行这些硬币。不断增加一定数量的新硬币,类似于黄金开采者花费资源为流通增加黄金。在我们的例子中,CPU时间和电力是消耗的。
这种奖励也可以通过交易费用提供资金。如果事务的输出值为
差额小于它的输入值,它是一个交易费用,它被添加到包含交易的块的激励值中。一旦预定数量的硬币进入流通,这种奖励就可以完全转变为交易费用,并且完全没有通货膨胀。
激励可能有助于鼓励节点保持诚实。如果一个贪婪的攻击者
与所有诚实的节点相比,他拥有更多的CPU能力,他将不得不选择用它来偷回他的钱来欺骗人们,还是用它来制造新的硬币。他应该发现,遵守规则更有利可图,这种规则比其他人加起来更有利于他,而不是破坏体制和他自己财富的有效性。
7.回收磁盘空间
一旦硬币中的最新事务被掩埋在足够的块下,就可以丢弃已用掉的事务,以节省磁盘空间。为了方便这一点,在不破坏块的散列的情况下,事务被散列在Merkle Tree[7][2][5]中,其中只有根包含在块的散列中。然后,可以通过在树上的枝条上插根来压实旧的块状物体。内部散列不需要存储。
一个没有事务的块头大约是80个字节。如果我们假设块是
每10分钟生成一次,80字节*6*24*365=4.2MB/年。由于计算机系统通常在2008年销售2GB内存,摩尔定律预测当前的年增长率为1.2GB,即使必须将块头保存在内存中,存储也不应该是一个问题。
8.简化付款核查
可以在不运行完整网络节点的情况下验证支付。用户只需要保存最长工作链的块头的副本,他就可以通过查询网络节点来获得,直到他确信自己有最长的链为止,并获得将事务链接到它时间戳的块的Merkle分支。他不能亲自检查事务,但是通过将它链接到链中的一个位置,他可以看到一个网络节点已经接受了它,并且在它进一步确认网络已经接受之后添加了块。
因此,只要诚实的节点控制网络,验证就是可靠的,但更可靠。
如果网络被攻击者覆盖,则易受攻击。虽然网络节点可以为自己验证事务,但只要攻击者能够继续覆盖网络,简化的方法就可能被攻击者伪造的事务所欺骗。防范这种情况的一种策略是,当网络节点检测到无效块时,接受来自网络节点的警报,从而促使用户软件下载完整的块和警报事务以确认不一致性。经常收到付款的企业可能仍然希望运行自己的节点,以获得更独立的安全性和更快的验证。
9.合并和分割价值
虽然可以单独处理硬币,但要为每一笔转移中的每一分钱单独进行一笔交易将是很困难的。为了允许拆分和组合值,事务包含多个输入和输出。通常,会有来自较大的先前事务的单个输入,或者合并较小数量的多个输入,最多有两个输出:一个用于支付,另一个返回更改(如果有的话)返回发件人。
应该注意的是,如果一个事务依赖于多个事务,那么就会消失。
事务依赖于更多,在这里不是一个问题。从不需要提取事务历史的完整独立副本。
10.隐私
传统的银行模式通过限制有关各方和受信任的第三方对信息的访问来实现一定程度的隐私。公开宣布所有交易的必要性排除了这种方法,但是仍然可以通过破坏另一个地方的信息流来保持隐私:保持公钥匿名。公众可以看到有人在向其他人发送金额,但没有将交易链接到任何人的信息。这类似于证券交易所公布的信息水平,在这种情况下,个别交易的时间和规模,即“磁带”,是公开的,但没有告诉当事人是谁。
作为额外的防火墙,应该为每个事务使用一个新的密钥对来保存它们。
从连接到一个共同的所有者。对于多输入事务来说,某些链接仍然是不可避免的,这必然表明它们的输入是由同一个所有者拥有的。风险在于,如果密钥的所有者被发现,链接可能会显示属于同一所有者的其他事务。
11.计算
我们考虑攻击者试图比诚实链更快地生成备用链的情况。即使完成了这一任务,也不会使系统受到任意更改的影响,例如凭空创造价值,或者获取从未属于攻击者的金钱。节点不会接受无效的事务作为支付,诚实的节点永远不会接受包含它们的块。攻击者只能尝试更改自己的一项交易,以收回他最近花的钱。
诚实链和攻击者链之间的竞争可以被描述为二项式。
随机步行。成功事件是诚实的链被扩展了一个块,它的领导增加了+1,而失败事件是攻击者的链被扩展了一个块,使缺口缩小了-1。
攻击者从给定的赤字中追赶的概率类似于赌徒的概率
破产问题。假设一个拥有无限信用的赌徒一开始就有赤字,为了达到收支平衡,他可能会进行无数次尝试。我们可以计算出攻击者达到盈亏平衡的概率,或者攻击者追上诚实链的概率。
有一个计算公式。
假设p>q,则概率随攻击者必须追赶的块数的增加而呈指数下降。与他的胜算,如果他不作出一个幸运的向前推进,他的机会变得渺茫,因为他进一步落后。
我们现在考虑的是,新事务的接收方需要等待多长时间才能成为
充分肯定发送方不能更改事务。我们假设发送者是一个攻击者,他想让接收者相信他已经支付了一段时间,然后在一段时间后将其转换为自己。当这种情况发生时,接收者会收到通知,但发送者希望为时已晚。
接收方生成一个新的密钥对,并在此之前不久将公钥给发送方。
签名。这使得发送方无法提前准备一个块链,方法是不断地工作,直到他幸运地提前到足够远的地方,然后在那个时刻执行事务。一旦事务被发送,不诚实的发件人就开始秘密地在包含其事务的备用版本的并行链上工作。
接收方等待事务添加到块中,而z块已被添加到块中。
联系在一起。他不知道攻击者取得了多少进展,但假设诚实的块占用了每个块的平均预期时间,攻击者的潜在进展将是具有期望值的Poisson分布:
联系在一起。他不知道攻击者取得了多少进展,但假设诚实的区块取得了平均预期时间,攻击者的潜在进展将是一个具有期望值的Poisson分布:为了获得攻击者现在仍能赶上的概率,我们将Poisson密度乘以他从那时起可以赶上的概率:
通过一些结果,我们可以看到,随着z的增长,概率呈指数下降。
q=0.1
z=0 P=1.0000000
z=1 P=0.2045873z=2 P=0.0509779
z=3 P=0.0131722z=4 P=0.0034552
z=5 P=0.0009137z=6 P=0.0002428
z=7 P=0.0000647z=8 P=0.0000173
z=9 P=0.0000046z=10 P=0.0000012
q=0.3
z=0 P=1.0000000
z=5 P=0.1773523
z=10 P=0.0416605
z=15 P=0.0101008
z=20 P=0.0024804
z=25 P=0.0006132
z=30 P=0.0001522
z=35 P=0.0000379
z=40 P=0.0000095
z=45 P=0.0000024
z=50 P=0.0000006
求解P<0.1%.
12.结论
我们提出了一种不依赖信任的电子交易系统。我们从通常的数字签名硬币框架开始,它提供了强有力的所有权控制,但如果没有防止双重支出的方法,这是不完整的。为了解决这一问题,我们提出了一个使用工作证明的对等网络来记录事务的公共历史,如果诚实的节点控制了大部分CPU能力,这些事务在计算上就变得不切实际。该网络在非结构化的简单性方面是健壮的。节点同时工作,几乎没有协调。它们不需要被识别,因为消息不会被路由到任何特定的地方,只需要在最大努力的基础上传递。节点可以随意离开并重新加入网络,接受工作链的证明作为他们离开时所发生的事情的证据。他们使用自己的CPU能力投票,通过扩展有效块来表示对有效块的接受,通过拒绝对它们进行工作来拒绝无效块。任何必要的规则和激励措施都可以通过这一协商一致的机制来执行。
参考文献
“信任要求”,1999年5月在比荷卢举行的第20届信息论研讨会上发表。
“如何对数字文档进行时间戳”,载于“密码学杂志”,第3卷,第1期。
“提高数字时间戳的效率和可靠性,”
“序列2:通信、安全和计算机科学中的方法”,第329至334页,1993年。
“位字符串的安全名称”,载于第四届ACM会议记录
“计算机和通信安全”,第28-35页,1997年4月。
“哈希现金-拒绝服务的对策”,“公钥密码体制的协议”,载于proc.1980年安全与安全专题讨论会
“隐私”,IEEE计算机学会,第122至133页,1980年4月。
“概率论及其应用概论”,1957年。
综述,世界上没有一种程序不会被破解,任何一种程序都有漏洞,但是我完整的看完了这篇白皮书之后我才发现,那些奇才的忘我劲头是怎么来的,11节里的这种算法,这种逻辑真的是无懈可击。可能需要时间的沉淀吧。我相信一句话:万事万物皆有法,皆有因,也皆有果,世界只有1和0,一代表有,而零代表没有。1和0的不断循环往复就形成了世界的多样化,真的是一生二,二生三,三生万物。
【本文经区块链技术原创认证】
留言与评论(共有 0 条评论) |