比特币白皮书是加密货币领域的奠基性文件,由中本聪撰写,首次提出了去中心化数字货币的完整构想。本文将深入解读这份开创性文档的核心内容,探索比特币系统的工作原理及其对金融世界的深远影响。
摘要
纯粹的电子现金点对点版本允许在线支付直接从一方发送到另一方,无需经过金融机构。数字签名提供了部分解决方案,但如果仍需可信第三方来防止双重支付,主要优势就会丧失。我们提出了一种点对点网络解决双重支付问题的方案。该网络通过将交易加入基于哈希的工作量证明链中,为交易打上时间戳,形成无法更改的记录链。最长链不仅作为事件序列的证明,也证明它来自最大的CPU算力池。
1. 引言
互联网商务几乎完全依赖金融机构作为可信第三方处理电子支付。虽然现有系统对大多数交易运行良好,但仍存在基于信任模型的固有弱点。完全不可逆的交易实际上不可能实现,因为金融机构无法避免调解纠纷。调解成本增加了交易成本,限制了最小实际交易规模,并消除了小额随意交易的可能性。
我们需要一个基于密码学证明而非信任的电子支付系统,允许双方直接交易而无需可信第三方。计算上不可逆的交易将保护卖家免受欺诈,而常规的托管机制可以轻松实施以保护买家。
2. 交易
我们将电子货币定义为数字签名链。每个所有者通过数字签名将货币转移给下一个所有者,签名包括前一次交易的哈希和下一个所有者的公钥,并将此签名添加到货币末端。收款人可以验证签名以确认所有权链。
问题在于收款人无法验证某个所有者是否双重支付了货币。常见的解决方案是引入可信中央机构或铸币厂,检查每笔交易是否存在双重支付。每次交易后,货币必须返回铸币厂以发行新货币,只有直接由铸币厂发行的货币才被信任没有双重支付。
3. 时间戳服务器
我们提出的解决方案始于时间戳服务器。时间戳服务器通过对要打时间戳的项目区块进行哈希运算,并广泛发布该哈希值(如在报纸或Usenet帖子中)。时间戳证明数据显然必须在该时刻存在才能进入哈希。每个时间戳在其哈希中包含前一个时间戳,形成链条,每个额外的时间戳都强化了前一个时间戳。
4. 工作量证明
为了在点对点基础上实现分布式时间戳服务器,我们需要使用类似Adam Back的Hashcash的工作量证明系统,而不是报纸或Usenet帖子。工作量证明涉及寻找一个值,当进行哈希运算时(如使用SHA-256),哈希以一定数量的零位开始。所需平均工作量与所需零位数呈指数关系,并且可以通过执行单个哈希来验证。
对于我们的时间戳网络,我们通过增加区块中的随机数来实现工作量证明,直到找到使区块哈希满足所需零位数的值。一旦CPU付出努力满足工作量证明,区块就不能被更改而不重做工作。随着后续区块在其后链接,更改区块的工作将包括重做所有后续区块。
工作量证明还解决了确定多数决策代表的问题。如果多数基于"一个IP地址一票"系统,任何人都可以通过分配大量IP地址来破坏它。工作量证明本质上是"一个CPU一票"系统。多数决策由最长链代表,该链投入了最大的工作量证明努力。
5. 网络运行步骤
比特币网络的运行分为以下几个关键步骤:
- 新交易广播:新交易被广播到所有节点
- 交易收集:每个节点将新交易收集到区块中
- 工作量证明寻找:每个节点为其区块寻找困难的工作量证明
- 区块广播:当节点找到工作量证明时,向所有节点广播该区块
- 区块接受:节点仅当区块中所有交易有效且未曾经花费时才接受该区块
- 链延伸:节点通过使用接受区块的哈希作为前一个哈希来创建链中的下一个区块,以此表达对区块的接受
节点始终认为最长链是正确的,并将继续努力扩展它。如果两个节点同时广播不同版本的下一个区块,有些节点可能先收到一个或另一个。在这种情况下,他们在先收到的那个上工作,但保存另一个分支以防它变得更长。当找到下一个工作量证明并且一个分支变得更长时,平局被打破;在另一个分支上工作的节点然后将切换到更长的分支。
6. 激励机制
比特币网络通过独特的激励机制鼓励节点支持网络。按照约定,区块中的第一笔交易是特殊的交易,该交易创建属于区块创建者的新货币。这不仅激励了网络参与,还提供了一种初步分发流通货币的方法。
持续添加固定数量的新货币类似于金矿工投入资源将黄金添加到流通中。在我们的案例中,消耗的是CPU时间和电力。此外,激励也可以通过交易费来资助。如果交易的输出值小于其输入值,差额就是交易费,该费用被添加到包含该交易的区块的激励值中。
7. 磁盘空间回收
一旦货币中的最后一笔交易被足够多的区块"埋葬",之前花费的交易可以被丢弃以节省磁盘空间。为了在不破坏区块哈希的情况下实现这一点,交易被哈希到默克尔树中,只有根包含在区块哈希中。旧区块可以通过删除树的分支来压缩。不需要存储内部哈希。
区块头没有交易的情况下大约为80字节。假设每10分钟生成一个区块,每年数据量约为4.2MB。考虑到计算机系统通常具有足够的内存容量,存储不应成为问题。
8. 简化支付验证
用户只需保存工作量证明最长链的区块头副本,可以通过查询网络节点直到确信拥有最长链,并获取将交易与打时间戳的区块连接的默克尔分支。用户无法自行验证交易,但通过将其链接到链中的位置,可以看到网络节点已接受它,之后添加的区块进一步确认网络已接受它。
9. 价值的组合与分割
交易包含多个输入和输出。通常会有来自先前较大交易的单个输入或多个组合较小金额的输入,最多有两个输出:一个用于支付,另一个用于将找零(如果有)返回给发送方。
10. 隐私
比特币通过保持公钥匿名来维护隐私。公众可以看到有人正在向其他人发送金额,但没有信息将交易与特定人联系起来。作为额外的保护层,应该为每笔交易使用新的密钥对,以避免链接到共同所有者。
11. 计算分析
我们考虑攻击者试图比诚实链更快生成替代链的情况。即使实现这一点,系统也不会面临任意更改,例如无中生有地创造价值或获取从未属于攻击者的货币。节点不会接受无效交易作为支付,诚实节点永远不会接受包含它们的区块。
攻击者从给定赤字追上的概率类似于赌徒破产问题。假设p > q,随着攻击者必须追上的区块数增加,概率呈指数下降。通过数学计算,我们可以确定接收者需要等待多少个区块确认才能足够安全。
12. 结论
我们提出了一个不依赖信任的电子交易系统。我们从由数字签名创建货币的常规框架开始,这提供了强大的所有权控制,但没有防止双重支付的方法是不完整的。为了解决这个问题,我们提出了一个使用工作量证明的点对点网络,记录公共交易历史,如果诚实节点控制大多数CPU能力,攻击者更改历史将迅速变得计算上不可行。
常见问题
比特币白皮书是什么时候发布的?
比特币白皮书由中本聪于2008年10月31日发布,标志着比特币和区块链技术的正式诞生。这份9页的文件概述了点对点电子现金系统的完整设计原理。
工作量证明在比特币中起什么作用?
工作量证明是比特币共识机制的核心,它通过计算竞赛确保网络安全。矿工通过解决复杂数学问题来验证交易和创建新区块,获得比特币奖励。这一过程防止双重支付和网络攻击。
比特币如何确保交易不可逆转?
比特币交易通过区块链的分布式共识实现不可逆性。一旦交易被纳入区块并获得足够后续区块确认,修改交易就需要重做所有后续工作量证明,这在计算上几乎不可能。
什么是双重支付问题?
双重支付是指同一笔数字货币被多次花费的行为。在传统系统中,由中央机构防止此问题。比特币通过分布式共识和时间戳服务器解决这一问题,确保每笔交易只能花费一次。
比特币真的匿名吗?
比特币提供的是假名而非完全匿名。所有交易公开可见,但不与真实身份直接关联。通过使用新地址每笔交易和分析技术,仍可能追踪交易模式,因此隐私保护需要额外措施。
如何开始使用比特币?
首先需要选择可靠的钱包应用存储比特币地址和私钥。然后可以通过交易所购买比特币或接受作为支付。了解基本安全实践如备份私钥和验证交易确认数至关重要。