第 3 个模块(共 8 个)

比特币技术历史

3.0 介绍

比特币白皮书摘要

一种完全点对点的电子现金版本,可以让在线支付直接从一方发送到另一方,无需经过金融机构。数字签名提供了部分解决方案,但如果仍然需要一个受信任的第三方来防止双重支付,那么主要的好处就会丧失。我们提出了一种利用点对点网络来解决双重支付问题的方法。网络通过对交易进行时间戳,并将其哈希到一个持续增长的基于哈希的工作量证明链中,形成一份无法更改的记录,除非重新计算工作量证明。最长的链不仅作为所见事件顺序的证明,也证明了它来自于最大的CPU算力池。只要大多数CPU算力由未协作攻击网络的节点控制,他们就会生成最长的链并超过攻击者。网络本身只需要最小的结构。消息以尽力而为的方式广播,节点可以随时离开和重新加入网络,在他们离线期间,接受最长的工作量证明链作为发生过的事实的证明。

比特币并不是凭空出现的,而是建立在前几十年许多人的工作基础之上。本模块将探讨比特币所依赖的互联网基础,以及白皮书中提到的相关研究与开发。

在70年代,一群人关注到美国政府试图限制对密码学的访问,并致力于确保这项技术能够为所有人所用,以保护他们的网络隐私。这些早期的先驱者中,有些人还关注于数字“健全货币”系统的潜在好处,这种系统可以在新兴的互联网中储存和交换价值。奥地利经济学的重要贡献者弗里德里希·哈耶克早在互联网出现之前就设想了基于自由市场竞争的理想货币,但他认为在技术和政治上都不可行。这个后来发展为密码朋克的群体,除了关注数字隐私外,也试图实现哈耶克对数字货币的设想,但这些尝试都失败了,直到中本聪在邮件列表上发表了他的想法。

  • TCP/IP 协议(1976)
  • 公钥密码系统协议 - Ralph Merkle(1980)
  • Digicash - David Chaum(1989)
  • 数字时间戳(90年代)
  • Hashcash - Adam Back(1997)
  • BitTorrent - Bram Cohen(2001)
  • 可重用工作量证明 - Hal Finney(2004)
  • 比特币白皮书 - 中本聪(2008)

对比特币发展产生关键影响的是90年代兴起的密码朋克运动。他们开发了包括公钥密码学在内的多种密码技术,使用户能够安全、私密地通信和分享信息。这里描述的许多发展及相关人物都属于这个群体。

数字现金的需求也被识别出来,并进行了多次尝试,但都因各种局限性未能成功。中本聪的天才之处在于将这些能力整合起来,并结合他自己的创新,基于这些成果创建了今天使用的比特币协议。在接下来的章节中,我们将探讨其中的一些发展,并解释它们如何帮助塑造了比特币的设计。我们还将讨论中本聪解决的那些关键难题。

3.1 TCP/IP的发展

我们大多数人都熟悉如今作为互联网基础的 TCP/IP 协议。它们的起源可以追溯到 70 年代末,当时科学家们正在探索 Arpanet 的替代设计——Arpanet 是美国国防部更早期构想的一个网络,旨在实现远程计算机之间的资源共享。1983 年,TCP/IP 成为 Arpanet 的协议标准,这促使它在 1990 年代末成为主导的网络模型,并成为比特币如今运行的互联网的基础。

OSI 模型 TCP/IP
应用层 应用层
表示层 应用层
会话层 应用层
传输层 传输层
网络层 网络层
数据链路层 数据链路层
物理层 物理层

在 TCP/IP 模型开发的同时,国际标准化组织(ISO)和电信行业(CCITT)也在开发一个类似但更为全面的框架。与开发 TCP/IP 时采用的更为去中心化的方法相比,开发新协议或提出更改建议的过程较为缓慢且笨重,这导致了如今 TCP/IP 方法的主导地位。

变更请求

在 TCP/IP 模型中,任何对现有协议的改进建议或新协议的想法都可以通过变更请求流程提出。这些建议会经过互联网工程任务组(IETF)管理的审批流程,一旦通过就会开源,允许任何人实现和采用。以下是一些值得注意的例子:

  • 1969 年 RFC 1 记录了 Arpanet 中数据包的发送方式
  • 1981 年 RFC791 定义了互联网协议 V4——至今仍被广泛采用
  • 1982 年 RFC 821 简单邮件传输协议
  • 1987 年域名系统——域名如何解析为 IP 地址
  • 1999 年 RFC 2616 超文本传输协议——网页浏览的基础

比特币改进提案(BIP)采用了类似于 RFC 的方法,但专注于比特币自身的改进,而不是开发新的或替代的协议。比特币也借鉴了这种分层模型,你会看到有些协议被称为第二层或第三层协议。

正如 TCP/IP 模型的基础层在过去几十年中变化相对较小,创新主要发生在更高层一样,比特币的基础层目前也预计会非常缓慢地变化,扩展解决方案如闪电网络和 Liquid 则在更高层实现。

基础层协议随着时间推移变得难以更改的一个很好的例子是 IPv6。IPv4 地址空间的预期枯竭催生了对新协议的需求。第一个草案标准于 1998 年制定,但直到 2017 年才被正式批准为互联网标准。虽然它解决了 IPv4 的许多问题,并且更具前瞻性,但在当今行业中的采用速度仍然非常缓慢。在此期间,许多新协议已在上层被定义,用于支持多媒体、电子邮件等。

比特币所用的构建模块

这种将互联互通问题分层的方式,使得协议可以独立于上下层进行开发。比特币网络无需为每一层重新发明解决方案,可以依赖物理层和数据链路层所提供的底层网络能力。

TCP/IP 原始协议
应用层 使用域名系统(DNS)来识别相邻节点。端口 8333 表示比特币协议。
传输层 矿工之间的 FIBRE 通信使用 UDP 以实现低延迟。节点之间的点对点通信使用 TCP。
传输层 TOR 路由:实现匿名和隐私。广播协议:在网络中路由流量。
链路层 可在任何介质上传输(如以太网、Wi-Fi 等)
物理层 通过无线、以太网或其他硬件接口进行物理传输。
比特币是一个中立的价值传输协议,就像 HTTPS 是信息传输协议一样
  • HTTPS:安全网站
  • SMTP:发送电子邮件
  • FTP:传输文件
  • DNS:管理域名
  • 比特币:储存和转移价值

比特币使价值能够在互联网中人与人或设备之间可靠地传输,无需第三方。这有望释放巨大的价值。

3.2 公钥密码学与协议

如今的互联网以及大多数现代计算机系统都依赖于密码学,这是一种将信息加密的方法,使得只有信息的接收者才能解码。用于保护比特币安全的密码学基础可以追溯到上世纪70年代。

首先需要解决的问题是——如何在不安全的媒介上传递共享的秘密。

这个问题最早由惠特菲尔德·迪菲(Whitfield Diffie)和马丁·赫尔曼(Martin Hellman)提出。

问题在于:双方——通常称为爱丽丝(Alice)和鲍勃(Bob)——希望在可能被他人窃听的网络上传递秘密信息。为此,他们创造了迪菲-赫尔曼密钥交换过程。

这个共享的秘密随后可以作为种子值,用于生成多个对称密钥,以便双方在不公开密钥的情况下加密和解密彼此发送的信息。

由于私钥无需共享,并且每一端用于加密和解密的密钥都不同,这种方式被称为非对称加密算法。

应用场景:

  • 爱丽丝用鲍勃的公钥签名一条消息——只有鲍勃可以用他的私钥解密它
  • 爱丽丝用她的私钥签名一条消息——任何人都可以用她的公钥解密,从而验证消息确实由爱丽丝发送,而无需知道她的私钥
  • 将这两种方法结合起来,采用双重加密,可以发送一条只有鲍勃能解密的加密消息,并且他还能验证发送者确实是爱丽丝

虽然论文上没有署名,但拉尔夫·默克尔(Ralph Merkle)在帮助解决这个曾被认为无法解决的难题——如何在开放且可能充满敌意的网络上建立或重新建立私密通信——方面起到了关键作用。

这种方法本身容易受到暴力破解攻击,攻击者可以利用共享的数字,最终通过足够的时间和资源重建共享密钥,因此它本身并不是完整的解决方案。

公钥密码系统协议

除了对上述迪菲-赫尔曼公钥系统的贡献之外,拉尔夫·默克尔 多年来持续在该领域做出贡献,并在比特币所用关键组件的开发中发挥了重要作用。

加密哈希函数是一种数学算法,可以接受任意大小的输入,并通过复杂的计算返回一个哈希值(以比特为单位),通常以固定长度的十六进制字母数字输出表示。

  • 输入可以是任意大小
  • 输出总是固定长度且具有确定性(相同输入每次产生相同哈希值)
  • 验证过程很容易,但要逆向推算输入几乎不可能
  • 数据只要有微小改动,输出就会完全不同
Hash function

哈希算法是比特币协议的重要组成部分。比特币使用的SHA-256由美国国家安全局(NSA)开发,是一种加密哈希算法的例子。

  • 区块链中的每个区块都会被哈希处理,这样数据就无法被篡改——从而保证分布式账本的完整性
  • 生成的哈希值需要满足“工作量证明”标准,才能被视为有效区块
  • 默克尔树——通过分支和多层哈希,哈希树可以用极少的存储空间验证大规模数据集
  • 基于哈希的签名和密钥可用于钱包、地址和交易授权

区块链状态的分布式验证和只增不减的账本模型能够抵抗篡改,这都得益于单向哈希。哈希函数为比特币等公共账本在没有中心化信任模型的情况下,提供了可靠、确定性的事件验证方法。

密码学领域的这些新能力被其创造者们寄予厚望,预计将引领该领域新一轮的创新浪潮。

椭圆曲线密码学

其中一项后来的创新就是椭圆曲线密码学。

椭圆曲线密码学于1985年由两位科学家N. Koblitz和V. Miller提出。他们提出用椭圆曲线定义的点来代替有限素数域,使得离散对数问题假设成立,这也是标准迪菲-赫尔曼密钥交换协议中常用的方法。具体细节超出了本节的范围,但从高层次来看,椭圆曲线是一组满足特定数学方程的点。

椭圆曲线的方程大致如下:

Elliptic curve

它具有一些有用的特性:

  • 水平对称性。曲线上的任意一点都可以关于x轴对称,仍然属于同一条曲线。
  • 任何非垂直直线与曲线最多只能有三个交点。
  • 紧凑的密钥长度对于区块链中公钥的高效存储和传输至关重要。

这些特性可以用来以类似迪菲-赫尔曼算法的方式生成密钥对。比特币使用ECDSA,即椭圆曲线数字签名算法。它是一种利用椭圆曲线和有限域对数据进行“签名”的过程,使第三方能够验证签名的真实性,而签名者则保留唯一生成签名的能力。对于比特币来说,被签名的数据就是转移所有权的交易。

“有限”部分类似于迪菲-赫尔曼中的“模”运算,即方程的输出会被除以一个数,取余数,以确保结果落在一定范围内。

3.3 数字现金

在密码学“新一波兴趣”的早期参与者之一是大卫·乔姆(David Chaum)。他早年致力于破解计算机系统,这些成功让他对所谓的“安全”系统产生了不信任。他还意识到一个此前未被重视的问题:“如何保密谁与谁、何时进行交流的知识”。

他设计了一种使用公钥密码学的匿名邮件协议,通过“混合”消息来保持消息源和目的地的匿名性。这成为了TOR网络的基础。

乔姆对数字支付也持有同样的看法——他认识到“个人可追踪的金融交易能够揭示该个人的行踪、关系和生活方式”。1980年,他申请了一项由密码学保障安全的数字现金系统专利,这成为了加密货币的基础。他还开始探索利用密码学创建一个完全去中心化的经济体,这一经济体以消息和支付的去中心化为核心。

政府擅长切断像Napster这样中心化网络的“头”,但像Gnutella和TOR这样的纯P2P网络似乎能够自立不倒。
中本聪

没有中央权威的去中心化系统——点对点(P2P)——具有多项优势:

  • 它们可以快速扩展,因为任何人只需运行一个新节点,无需注册或批准,就能扩展系统
  • 所有节点都是一样的,因此可以绕过故障节点
  • 没有中央权威可以被攻陷或破坏整个系统
  • 没有中心化的控制点,因此更难被捕获、监管、征税或监控

十年后,他创办了自己的公司Digicash,开发了“ecash”——世界上第一个数字现金系统。许多著名人物曾短暂加入Digicash,公司取得了一些成功,但最终失败并宣布破产。

数字货币的进一步发展

2010年7月的一篇论坛帖子中,中本聪说:“比特币是对1998年在Cypherpunks上魏大(Wei Dai)的b-money提案和Nick Szabo的Bit Gold提案的实现。”

虽然这两个想法都没有超越提案阶段,但其中的一些理念显然影响了比特币的发展:

  • 使用“工作量证明”来为计算工作赋予货币价值
  • 计算成本随时间变化且必须加以考虑的概念

但首先我们来看看Hashcash。

3.4 哈希现金

Hashcash 是由 Adam Back 创造的,他是该领域早期的创新者之一。Adam 对互联网的自由市场和隐私非常感兴趣,并且偶然发现了 Cypherpunks 邮件列表,随后加入并成为了积极的参与者。

他对数字货币非常感兴趣,并提出了一些建议,希望小组能与 Chaum 更紧密地合作开发 DigiCash,但这些建议并未取得进展。随后,他将注意力转向了另一个新出现的问题——垃圾邮件。他和其他 Cypherpunks 成员希望找到解决垃圾邮件问题的方法,因为垃圾邮件发送者可以轻易地创建并发送成千上万封邮件,导致网络拥堵。他的创新解决方案基于哈希技术——利用密码学将任何数据转换为特定长度的唯一且随机的字符串,创建相当于数字“邮票”的东西,只有在邮件中添加了这种“邮票”,邮件才被视为有效并能在网络上传输。对于普通邮件来说,这只是微不足道的成本,但对垃圾邮件发送者来说却是巨大的障碍。

Hashcash 的关键创新在于将现实世界的资源——计算能力——与数字网络相结合。在此之前,数字资源可以无限复制,而“hashcash”的数量则受限于人们愿意投入的能量。

尽管这个方案满足了 Adam 认为数字现金系统所需的一些标准:匿名、抗攻击且无需信任,但每个 hashcash 都不可重复使用,也不是真正稀缺的。他提出可以通过外部第三方来解决这些问题的其他方法。

比特黄金(BitGold)

Nick Szabo 在 Hashcash 和工作量证明的概念基础上提出了另一种解决方案,他在 Hashcash 发布一年后的 1998 年,在邮件列表中进行了描述。

虽然这个提案更接近解决方案,但仍然存在几个挑战。

  • 谁来运行哈希所有权登记处,又如何信任他们?
  • 随着时间推移,哈希计算的成本通常会降低,这对 HashCash 也是一个挑战。

由于链接的哈希会被时间戳标记,他提出可以对当时哈希的难度进行某种历史追踪;较早的哈希由于成本较高,需要更多的处理费用,而后期的哈希则成本较低。不幸的是,这意味着哈希将不具备“可替代性”,即价值不等,这被认为是数字货币的一个关键属性。为了解决这个问题,Nick 建议在 BitGold 之上建立某种“自由银行”机制,可以将不同组的哈希聚合,使其价值相同。

B-货币(B-Money)

在比特黄金提案之后不久,魏大为(Wei Dai)提出了类似的解决方案。他已经为 Cypherpunks 开发了其他几种工具,并且对数字货币有自己的想法。

他的提案与比特黄金类似,使用数字签名来转移货币,并将交易记录存储在账本上,账本中包含公钥和分配给每个公钥的货币单位数量。与比特黄金一样,受信任的第三方被视为安全漏洞,电子现金系统不应依赖单一实体来追踪余额、交易或防止双重支付。

魏大为提出了几种解决这些问题的方法,其中之一是,不再由中心化实体维护账本,而是所有节点都维护一份账本副本。如果所有用户都检查自己的账本并验证每笔交易的有效性,只要所有节点保持同步,账本就能在整个网络中保持一致。这种高度分布式的系统很难被破坏。

魏大为认识到,这并没有解决拜占庭将军问题(1),因为节点很容易失去同步或故意撒谎。他提出了其他方法,比如由一部分“受信任”的服务器维护账本,并通过经济激励机制促使这些服务器保持诚实。

在货币政策方面,他建议将 B-货币的购买力锚定在某种外部消费者价格指数上。他希望相同数量的 B-货币能够随时间购买到该指数的等值份额,从而提供一定的价格稳定性。因此,任何人都可以通过提供有效的哈希来生成新的货币单位,但生成哈希的难度可能会根据 CPU 成本和价格指数随时间变化,从而使每个单位都“不可变”。

3.5 比特流

另一个在塑造加密货币、最终促成比特币诞生过程中发挥重要作用的项目是 BitTorrent。

2001 年,Bram Cohen 发布了一种名为 BitTorrent 的协议设计,用于支持点对点文件共享系统。他曾在一家名为 MojoNation 的公司工作,该公司旨在让用户将机密文件分割成加密块,并分发到运行该软件的计算机上。文件的副本可以同时从多台计算机下载。尽管最终失败了,但这让 Cohen 进入了文件共享领域,并决定自己可以创造出更好的协议,其主要包括:

  • 群体(Swarm):正在下载或上传内容的计算机社区
  • 追踪器(Tracker):一种专用工具,功能类似于搜索引擎,但用于跟踪群体中包含的文件。这让用户可以轻松查看并访问他们所需的任何文件
  • BitTorrent 客户端:安装在计算机上以访问追踪器。需要注意的是,文件实际上只保存在群体中
  • 一种激励机制,参与网络并共享文件的用户可以获得更快的下载速度

与比特币的相似之处:

  • 两种协议都基于点对点模式运行
  • 去中心化设计
  • BitTorrent 文件和比特币账本都分布在整个网络中
  • 开源起源(BitTorrent 最终变成了闭源软件)

3.6 可重复使用的工作量证明

Hal Finney 是密码朋克运动中另一位著名成员,他对电子现金的发展非常感兴趣,并且活跃于邮件列表。

他决定再次尝试开发一种基于工作量证明的电子现金系统。在此之前,哈希输出对于每笔交易都是唯一的,但他的想法是创建“可重复使用的工作量证明”。

这种方法的缺点在于中心化的服务器,需要信任其不会双重支付或被关闭。为了解决这个问题,Hal 提议使用自由和开源软件,可以托管在安全的硬件组件上,并且能够被独立验证。

该方案仍然面临与其他提案相同的一些问题:

  • 在推广过程中存在“先有鸡还是先有蛋”的问题,即缺乏激励让用户愿意请求代币,而卖家也不愿意接入系统,除非用户愿意用这些代币支付。
  • 随着计算性能的提升,工作量证明(POW)的成本也可能会随着时间推移而降低,这意味着市场最终可能会被 RPOW 货币单位所充斥。
如果摩尔定律继续成立,创建一个(POW)代币的成本将以稳定的指数速度下降。请记住,这不是货币,也不是用来作为价值储存的,而是计算机算力的一种易于交换的表现形式。
Hal Finney

这些特性限制了该项目的吸引力和采用率,尽管他付出了很大努力,这个项目最终还是成为了又一次创建电子现金的失败尝试。

3.7 比特币

经过多年多次失败的尝试,大多数密码朋克对无许可数字货币的想法已经逐渐失去兴趣,这时亚当·巴克收到了一封电子邮件,邮件中链接了一份名为“无需第三方的电子现金”的白皮书草稿,发件人是一位自称中本聪的匿名人士。

回顾到目前为止,我们至少已经有了以下这些想法:

  • 可以提供一定程度隐私和匿名性的加密签名
  • 无担保货币的概念(B-Money)
  • 关于限制新货币发行的提案(但没有实现手段)
  • 数字货币的所有权通过公钥归属(B-Money),并可通过签名转移和根据接收方地址重新分配(RPOW 和 Hashcash)
  • 所有节点都维护一份完全分布式账本的副本(B-Money)(当时被认为不切实际而被否决)
  • 时间戳协议——使用默克尔树哈希,为事件提供数学上可证明且难以伪造的时间顺序,只要所有用户都保留相同的记录
  • 工作量证明,将现实世界的努力与系统绑定(但当时是直接用哈希本身作为货币)
  • 完全去中心化的网络,所有节点平等,可以自由加入或离开网络(BitTorrent)
  • 将新哈希与前一个哈希相连的概念(Bit Gold 和时间戳)

当时还缺少的包括:

  • 一个可行的解决“拜占庭将军问题”的方案
  • 一种在硬件持续进步的情况下限制货币流通总量的方法
  • 激励人们参与的机制(先有鸡还是先有蛋的问题)

与近期其他尝试相比,比特币的另一个重大不同在于,中本聪在邮件列表上公布之前,已经按照“密码朋克写代码”的原始精神,花了很长时间开发代码,而不像 Bit Gold 和 B-Money 那样只是概念性的想法。

是什么创新让比特币区别于以往的电子现金尝试?

工作量证明被用作共识机制以及提供安全性和不可篡改性的方式:不再将哈希本身作为货币,而是通过一种新的概念性过程——挖矿来使用哈希。节点会将一组交易打包,添加一个随机数,然后对这组数据(区块)进行哈希。满足哈希要求的有效区块会被广播到网络。这些区块通过前一区块的哈希相互连接,在出现分叉时,最长的区块链会被采用,因为不同节点可能同时验证并广播不同的区块,导致链分裂。工作量证明成为了解决拜占庭将军问题的分布式“裁判”。

这些矿工还被激励提供完成工作量证明所需的 CPU 资源,每挖出一个区块就会获得新生成的比特币。奖励的比特币数量也被设定为大约每四年减半一次,直到所有比特币都被创造出来,从而将比特币的总量硬性限制在 2100 万枚。

最具原创性的想法,是他解决了随着硬件提升、网络算力增强时货币发行量如何控制的问题。每 2016 个区块的时间戳会被平均计算,如果区块产生过快,则新块所需的哈希难度会提高;如果过慢则降低。这一机制被写入所有节点运行的去中心化协议中,任何矿工若无视它,所挖出的区块将被网络拒绝,白白浪费算力。该调整确保新区块的产生始终按照计划发行进度进行,并激励矿工“遵守规则”。


总结

在中本聪发布白皮书以及代码初版后,构建基于健全货币原则的去中心化点对点电子现金系统所需的诸多拼图其实已经基本就位。

比特币的本质在于,一旦 0.1 版本发布,其核心设计就被永久定型,贯穿其整个生命周期
中本聪

虽然已经提出并采纳了许多改进建议(BIP),但自 2009 年以来,比特币一直在后台按照最初发布时设计的协议稳定运行,几乎没有受到干扰。所有改进都确保了对所有旧版本的向后兼容。

注释
  1. 关于拜占庭将军问题的解释,请参见https://en.wikipedia.org/wiki/Byzantine_fault

↑ 返回目录