比特币白皮书 – 中本聪

抽象的。纯粹的点对点版本的电子现金将允许在线支付直接从一方发送到另一方,而无需通过金融机构。数字签名提供了部分解决方案,但如果仍然需要受信任的第三方来防止双重支出,那么主要的好处就会丧失。我们提出了一种使用点对点网络来解决双花问题的方法。网络通过将交易散列到一个持续的基于散列的工作证明链中来对交易进行时间戳记,形成一个在不重做工作证明的情况下无法更改的记录。最长的链不仅可以证明所见证的事件顺序,而且可以证明它来自最大的 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 > q,随着攻击者必须赶上的块数量的增加,概率呈指数下降。在对他不利的情况下,如果他没有在早期幸运地向前冲刺,那么随着他进一步落后,他的机会就会变得微乎其微。

我们现在考虑新交易的接收者需要等待多长时间才能充分确定发送者不能更改交易。我们假设发件人是一个攻击者,他想让收件人相信他支付了他一段时间,然后在一段时间后将其转换为还给自己。发生这种情况时,接收方会收到警报,但发送方希望为时已晚。

接收方生成一个新的密钥对,并在签名前不久将公钥提供给发送方。这可以防止发送者提前准备一个区块链,通过不断地处理它,直到他足够幸运地领先足够远,然后在那个时刻执行交易。一旦交易被发送,不诚实的发送者就开始在包含他的交易的替代版本的平行链上秘密工作。

接收者一直等到交易被添加到一个块中并且z个块已经链接到它之后。他不知道攻击者取得的确切进展量,但假设诚实块花费每个块的平均预期时间,攻击者的潜在进展将是具有预期值的泊松分布:

比特币白皮书 – 中本聪

为了得到攻击者现在仍然可以赶上的概率,我们将他可能取得的每个进步量的泊松密度乘以他从那个点可以赶上的概率:

比特币白皮书 – 中本聪

重新排列以避免对分布的无限尾求和……

转换为 C 代码...

#include double AttackerSuccessProbability(double q, int z)

{
双 p = 1.0 - q;
双 λ = z * (q / p);
双倍总和 = 1.0;
整数 i, k;
for (k = 0; k <= z; k++)
{
双泊松 = exp(-lambda);
对于 (i = 1; i <= k; i++)
泊松 *= lambda / i;
总和 -= 泊松 * (1 – pow(q / p, z – k));
}
返回总和;
}

运行一些结果,我们可以看到概率随 z 呈指数下降。

q=0.1
z=0 P=1.0000000
z=1 P=0.2045873
z=2 P=0.0509779
z=3 P=0.0131722
z=4 P=0.0034552
z=5 P=0.0009137
z=6 P=0.0002428
z=7 P= 0.0000647
z=8 P=0.0000173
z=9 P=0.0000046
z=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

2. 结论

我们提出了一种不依赖于信任的电子交易系统。我们从通常的由数字签名制成的硬币框架开始,它提供了对所有权的强大控制,但如果没有防止双重支出的方法,它是不完整的。为了解决这个问题,我们提出了一个使用工作量证明的点对点网络来记录交易的公共历史,如果诚实节点控制大部分 CPU 能力,攻击者在计算上很快就会变得不切实际。该网络因其非结构化的简单性而强大。节点几乎无需协调即可同时工作。它们不需要被识别,因为消息不会被路由到任何特定的地方,只需要在尽力而为的基础上传递。节点可以随意离开和重新加入网络,接受工作量证明链作为他们离开时发生的事情的证据。他们用他们的 CPU 能力投票,通过努力扩展它们来表达他们对有效块的接受,并通过拒绝处理它们来拒绝无效块。任何需要的规则和激励措施都可以通过这种共识机制来执行。

中本聪

中本聪开发了比特币,撰写了比特币白皮书,并创 建和部署了比特币的原始参考实现。

展开阅读全文

页面更新:2024-05-17

标签:铸币厂   攻击者   区块   白皮书   节点   工作量   硬币   概率   诚实   时间   网络

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top