Hi!请登陆

比特币白皮书–中本聪

2022-6-29 57 6/29

抽象的。纯粹的点对点版本的电子现金将允许在线支付直接从一方发送到另一方,而无需通过金融机构。数字签名提供了部分解决方案,但如果仍然需要受信任的第三方来防止双重支出,那么主要的好处就会丧失。我们提出了一种使用点对点网络来解决双花问题的方法。网络通过将交易散列到一个持续的基于散列的工作证明链中来对交易进行时间戳记,形成一个在不重做工作证明的情况下无法更改的记录。最长的链不仅可以证明所见证的事件顺序,而且可以证明它来自最大的 CPU 能力池。只要大部分 CPU 功率由不合作攻击网络的节点控制,他们将生成最长的链路并超过攻击者。网络本身需要最小的结构。消息在尽最大努力的基础上广播,节点可以随意离开和重新加入网络,接受最长的工作量证明链作为他们离开时发生的事情的证明。

一、介绍比特币白皮书

互联网上的商业几乎完全依赖作为受信任的第三方的金融机构来处理电子支付。尽管该系统对于大多数交易来说都足够好,但它仍然受到基于信任模型的固有弱点的影响。完全不可逆的交易实际上是不可能的,因为金融机构无法避免调解纠纷。调解成本增加了交易成本,限制了最小实际交易规模并切断了小额临时交易的可能性,并且在丧失为不可逆服务进行不可逆支付的能力方面存在更广泛的成本。随着时间逆转的可能性

对信任的需求蔓延。商家必须对他们的客户保持警惕,向他们索取比他们原本需要的更多信息。一定比例的欺诈被认为是不可避免的。这些成本和支付不确定性可以通过使用实物货币亲自避免,但不存在在没有受信任方的情况下通过通信渠道进行支付的机制。所需要的是一种基于密码证明而非信任的电子支付系统,允许任何两个自愿方直接相互交易,而不需要受信任的第三方。

在计算上无法逆转的交易将保护卖家免受欺诈,并且可以轻松实施常规托管机制来保护买家。在本文中,我们提出了一种解决双花问题的方法,使用对等分布式时间戳服务器来生成交易时间顺序地计算证明。只要诚实节点比任何合作的攻击者节点组共同控制更多的 CPU 能力,该系统就是安全的。

2. 交易

我们将电子硬币定义为数字签名链。每个所有者通过对先前交易的哈希和下一个所有者的公钥进行数字签名并将它们添加到硬币的末尾来将硬币转移到下一个所有者。收款人可以验证签名以验证所有权链。

比特币白皮书–中本聪

问题当然是收款人无法验证其中一位所有者没有双花硬币。一个常见的解决方案是引入一个受信任的中央机构或铸币厂,检查每笔交易是否存在双重支出。每次交易后,必须将硬币归还给铸币厂以发行新硬币,并且只有铸币厂直接发行的硬币才被信任不会被双花。这种解决方案的问题在于,整个货币系统的命运取决于运营铸币厂的公司,每笔交易都必须通过它们,就像银行一样。

我们需要一种方法让收款人知道以前的所有者没有签署任何早期的交易。就我们的目的而言,最早的交易才是最重要的,所以我们不关心后来的双花尝试。确认没有交易的唯一方法是了解所有交易。在基于铸币厂的模型中,铸币厂知道所有交易并决定哪个先到。要在没有受信任的情况下实现这一点,必须公开宣布交易 [1],并且我们需要一个系统让参与者就接收交易顺序的单一历史达成一致。收款人需要证明在每笔交易时,大多数节点都同意这是第一个收到的。

3.时间戳服务器

我们提出的解决方案从时间戳服务器开始。时间戳服务器通过获取要标记的项目块的哈希值并广泛发布哈希值来工作,例如在报纸或 Usenet 帖子中 [2-5]。时间证明数据必须在当时已经存在,显然,才能进入散列。每个时间戳都在其哈希中包含前一个时间戳,形成一个链,每个额外的时间戳都会加强它之前的时间戳。

比特币白皮书–中本聪

4. 工作量证明

要在点对点的基础上实现分布式时间戳服务器,我们需要使用类似于 Adam Back 的 Hashcash [6] 的工作证明系统,而不是报纸或 Usenet 帖子。工作量证明涉及扫描一个值,该值在散列时(例如使用 SHA-256),散列以多个零位开头。所需的平均工作量与所需的零位数量呈指数关系,并且可以通过执行单个哈希来验证。

对于我们的时间戳网络,我们通过增加块中的随机数来实现工作量证明,直到找到一个值,该值使块的散列具有所需的零位。一旦 CPU 努力使其满足工作量证明,就不能在不重做工作的情况下更改板块。由于后面的块被连接在它之后,更改块的工作将包括重做它之后的所有块。

比特币白皮书–中本聪

工作量证明还解决了在多数决策中确定代表的问题。如果大多数基于一个 IP 地址一票,那么任何能够分配多个 IP 所有人都可以颠覆它。工作量证明本质上是一个 CPU 一票。多数决策由最长的链代表,该链投入了最大的工作量证明。如果大部分 CPU 能力由诚实节点控制,那么诚实节点将增长最快,并超过任何竞争对手。要修改过去的区块,攻击者必须重做该区块及其之后的所有区块的工作量证明,然后赶上并超越诚实节点的工作。稍后我们将展示,随着后续块的添加,较慢的攻击者赶上的概率呈指数下降。

为了补偿不断提高的硬件速度和随着时间推移对运行节点的不同兴趣,工作量证明难度由针对每小时平均块数的移动平均值确定。如果它们生成得太快,难度就会增加。

5. 网络

运行网络的步骤如下:1) 一场交易被广播到所有节点。2)每个节点将新交易收集到一个块中。3)每个节点都致力于为其找到一个困难的工作量证明。4)当一个节点找到一个工作量证明时,它会将该块广播给所有节点。5) 仅当其中的所有交易都有效且尚未花费时,节点才接受该块。6) 节点通过创建链中的下一个块来表达他们对块的接受,使用接受块的哈希作为前一个哈希。

节点总是认为最长的链是正确的,并将继续努力扩展它。如果两个节点同时广播下一个版本的不同版本,一些节点可能会先接收一个或另一个。在这种情况下,他们会处理他们收到的第一个分支,但保存另一个分支以防它变得更长。当找到下一个工作量证明并且一个分支变长时,平局将被打破;在另一个分支上工作的节点将切换到更长的节点。

新的交易广播不一定需要到达所有节点。只要他们到达许多节点,他们很快就会进入一个块。块广播也可以容忍丢弃的消息。如果一个节点没有收到一个块,它会在收到下一个块并意识到它错过了一个块时请求它。

6. 激励

按照惯例,一个区块中的第一笔交易是一个特殊交易,它启动了一个由区块创建者拥有的新硬币。这增加了节点支持网络的动力,并提供了一种最初将硬币分配到流通中的方法,因为没有中央机构来发行它们。恒定数量的新硬币的稳定添加类似于黄金矿工消耗资源以增加黄金流通。在我们的例子中,消耗的是 CPU 时间和电力。

奖励也可以通过交易费用来资助。如果一笔交易的输出值小于它的输入值,差额就是一笔交易费用,该费用被添加到包含该交易的区块的激励价值中。一旦预定数量的硬币进入流通,激励可以完全转变为交易费用并且完全没有通货膨胀。

激励措施可能有助于鼓励节点保持诚实。如果一个贪婪的攻击者能够组装比所有诚实节点更多的 CPU 能力,他将不得不选择使用它来通过窃取他的付款来欺骗人们,或者使用它来生成新的硬币。他应该发现遵守规则更有利可图,这些规则使他获得的新硬币比其他人的总和还要多,而不是破坏系统和他自己财富的有效性。

7. 回收磁盘空间

一旦硬币中的最新交易被埋在足够多的区块下,之前花费的交易可以被丢弃以节省磁盘空间。为了在不破坏区块哈希的情况下促进这一点,交易在默克尔树 [7][2][5] 中进行哈希处理,只有根包含在区块的哈希中。然后可以通过砍掉树枝来压实旧块。内部哈希不需要存储。

比特币白皮书–中本聪

一个没有交易的区块头大约有 80 个字节。如果我们假设每 10 分钟生成一次块,则每年 80 字节 * 6 * 24 * 365 = 4.2MB。截至 2008 年,计算机系统通常以 2GB 的 RAM 销售,并且摩尔定律预测当前每年增长 1.2GB,即使必须将块头保存在内存中,存储也不应该成为问题。

8. 简化支付验证

无需运行完整的网络节点即可验证付款。用户只需要保留一份最长的工作量证明链的区块头副本,他可以通过查询网络节点来获得,直到他确信自己拥有最长的链,并获得将交易链接到区块的 Merkle 分支它带有时间戳。他不能自己检查交易,但是通过将其链接到链中的某个位置,他可以看到一个网络节点已经接受了它,并且在它进一步确认网络已经接受它之后添加了块。

比特币白皮书–中本聪

因此,只要诚实节点控制网络,验证就是可靠的,但如果网络被攻击者压倒,则更容易受到攻击。虽然网络节点可以自己验证交易,但只要攻击者能够继续控制网络,这种简化的方法就会被攻击者伪造的交易所欺骗。防止这种情况的一种策略是在网络节点检测到无效块时接受来自网络节点的警报,提示用户的软件下载完整的块并警告交易以确认不一致。接收频繁付款的企业可能仍希望运行自己的节点以实现更独立的安全性和更快的验证。

9. 合并和拆分价值

尽管可以单独处理硬币,但要为转账中的每一分钱进行单独的交易会很笨拙。为了允许价值被分割和组合,交易包含多个输入和输出。通常会有来自较大先前交易的单个输入或组合较小金额的多个输入,并且最多两个输出:一个用于支付,另一个将零钱(如果有的话)返回给发送者。

比特币白皮书–中本聪

应该注意的是扇出,其中一个事务依赖于几个事务,并且这些事务依赖于更多事务,在这里不是问题。永远不需要提取交易历史的完整独立副本。

10. 隐私

传统的银行模式通过限制相关方和受信任的第三方访问信息来实现一定程度的隐私。公开宣布所有交易的必要性排除了这种方法,但仍然可以通过在另一个地方中断信息流来维护隐私:通过保持公钥匿名。公众可以看到有人向其他人汇款,但没有将交易与任何人联系起来的信息。这类似于证券交易所发布的信息级别,其中将个人交易的时间和规模(即磁带)公开,但不说明各方是谁。

比特币白皮书–中本聪

作为额外的防火墙,每个交易都应该使用一个新的密钥对,以防止它们被链接到一个共同的所有者。对于多输入交易,一些链接仍然是不可避免的,这必然表明它们的输入属于同一所有者。风险在于,如果密钥的所有者被泄露,链接可能会泄露属于同一所有者的其他交易。

11. 计算

我们考虑攻击者试图比诚实链更快地生成替代链的场景。即使实现了这一点,它也不会让系统对任意更改开放,例如凭空创造价值或拿走不属于攻击者的钱。节点不会接受无效交易作为付款,诚实节点永远不会接受包含它们的块。攻击者只能尝试更改他自己的一项交易以收回他最近花费的钱。

诚实链和攻击者链之间的竞争可以被描述为二项式随机游走。成功事件是诚实链被扩展一个区块,领先 1,失败事件是攻击者的链被扩展一个区块,差距减少-1。

攻击者从给定的缺陷中赶上来的概率类似于赌徒的废墟问题。假设一个拥有无限信用的赌徒从亏损开始,并可能进行无数次尝试以达到收支平衡。我们可以计算他达到盈亏平衡的概率,或者攻击者追上诚实链的概率,如下 [8]:p = 诚实节点找到下一个区块的概率 q = 攻击者找到下一个区块的概率 qz = 概率攻击者会从后面的 z 个街区赶上

比特币白皮书–中本聪

假设我们假设 p

相关推荐