跳到主要内容
知识地图从密码学到区块链:一段技术史行业概念与标准

你在这里。看看这个问题与其他知识怎样相连。

选择节点前往页面 · 展开后可留在地图中阅读

知识地图沿着连接,读懂一个问题
← 区块链与共享状态

一个问题

从密码学到区块链:一段技术史

沿着公钥密码、数字现金与区块链的历史,看看应用、身份和资源访问怎样走到今天。

区块链没有从一张白纸上诞生。它把密码学、数字现金和分布式系统里的想法组合起来,之后又遇到了应用、身份与使用体验的新问题。这条时间线以《区块链实战》第 2 章为起点,核对早期史料,并补充书出版后的发展。

其中穿插了 ArcBlock 的产品节点,展示我们怎样回应这些问题。它们与行业事件按时间排列,分别注明来源;提案、标准和产品发布是不同类型的进展。

1970s · 1980s · 1990s · 2000s · 2010s · 2020s

1976 · 公钥密码:先公开一把钥匙

怎样和一个从未见过面的人安全通信?Diffie 与 Hellman 的论文把公钥密码带入公开研究:有些信息可以公开,而秘密仍由持有者保管。论文还给出了密钥交换方法,让双方通过公开信道建立共同秘密。

后来区块链依赖的数字签名,也属于这片研究领域。在签名系统中,私钥由持有者保管,用来签署消息;公钥可以公开,让别人检查签名。签名能让别人验证一条消息是否得到对应私钥的授权;它并不证明消息描述的现实事件是真的。

Diffie & Hellman · New Directions in Cryptography

1982 / 1983 · 盲签名:支付也可以有隐私

纸币交到别人手中后,发行它的银行通常不知道这张纸币经过了谁。数字支付能不能保留类似的隐私?David Chaum 提出了盲签名:签名者可以为经过遮蔽的消息签名,之后仍能验证签名,却不能由签发过程直接认出原消息。

论文在 CRYPTO ’82 提出,论文集于 1983 年出版。它为数字现金提供了重要工具;使用盲签名,并不意味着系统已经摆脱了负责发行和防止重复花费的机构。

Chaum · Blind Signatures for Untraceable Payments

1991 · 时间戳:怎样证明文件没有被倒签

一份电子文件可以随手修改,电脑上的日期也可以改。Haber 与 Stornetta 研究的是更难的问题:怎样留下证据,证明某份文件在某个时间已经存在,并让事后倒签变得困难?

他们用密码学摘要和相互关联的记录来约束篡改。摘要像内容的指纹,改动内容会改变指纹。这是区块链的重要前史,但当年的系统并不是后来 Bitcoin 那样开放参与的交易网络。

Haber & Stornetta · How to Time-Stamp a Digital Document

1997 · Hashcash:让滥发消息付出计算成本

如果发送一封邮件之前,必须先做一道计算题,批量发送垃圾邮件就会更费资源。Adam Back 的 Hashcash 将这种思路做成可验证的工作量证明:生成证明需要尝试,检查结果却比较容易。

Bitcoin 后来把工作量证明用于竞争记账,并帮助网络在冲突的记录之间作出选择。Hashcash 本身解决的是滥用成本问题,还不是一套数字货币的共识系统。

Adam Back · Hashcash paper (2002 retrospective)

1998 · b-money:没有中央记账人的设想

Wei Dai 提出了由参与者共同记录余额、用公钥作为身份的数字货币方案 b-money。它把问题从“怎样签发一枚数字现金”推进到“互不认识的人怎样共同维护账目”。

这是研究提案,不是已经上线运行的网络。原文也直接指出第一种协议依赖不现实的通信假设。留下这些边界,才能看见后来的方案还需要补上什么。

Wei Dai · b-money

2004 · RPOW:把工作量证明传给下一个人

Hal Finney 发布了可试用的 RPOW,即可重复使用的工作量证明系统。用户交出一个工作量证明,服务器可以换发一个新的凭据,让计算结果可以转手使用。

防止同一凭据被重复使用,依赖服务器和可验证的受信硬件。RPOW 是可运行的实验,也展示了数字现金设计中的一个核心问题:信任究竟放在哪里?

Hal Finney · RPOW announcement

2005 · Bit gold:计算、时间与所有权

Nick Szabo 的 Bit gold 文章把计算难题、时间戳和所有权登记放在同一个设想里。计算产生结果,时间戳记录结果何时已经存在,登记系统记录归属。它探索怎样让数字对象的历史能够被检查,而不只依靠某个发行者的一句承诺。

这里采用存档标注的 2005 年公开文章日期。Bit gold 是设计提案,不能把它写成一条当时已经运行的区块链。

Nick Szabo · Bit gold (archived essay)

2008-10-31 · Bitcoin 白皮书:把已有部件组合起来

Satoshi Nakamoto 向密码学邮件列表发布 Bitcoin 白皮书。数字签名、点对点网络、工作量证明和相连的记录,在这里组成一个解决重复花费问题的方案。

一批交易可以组成一个区块,每个后续区块引用前一个区块的摘要,这样连接起来就形成了链。

难点不是阻止别人复制数据,而是在发生冲突时,让网络能够依据规则判断哪一笔花费有效。这种组合,使一份共享账本能够在没有中央记账机构的条件下持续运行。

Satoshi Nakamoto · original whitepaper announcement

2009-01-03 · 创世区块:一行新闻留进账本

Bitcoin 创世块数据的十六进制与文本表示;不是报纸版面。

Bitcoin 创世块数据的十六进制与文本表示;不是报纸版面。 Satoshi Nakamoto / Wikimedia Commons · MIT / public-domain data.

Bitcoin 的第一个区块包含了这样一行文字:

The Times 03/Jan/2009 Chancellor on brink of second bailout for banks

译:《泰晤士报》2009 年 1 月 3 日:财政大臣即将第二次救助银行。

写进区块的是这段文字,不是一张报纸照片。它把一份可以验证的数据记录与当时的现实世界联系起来。1 月 8 日,Satoshi 又在邮件列表发布了 v0.1 软件公告;论文、创世块、软件公开发布,是三个不同节点。

Satoshi Nakamoto · v0.1 announcement

2013 / 2014 · Ethereum:让共同账本执行程序

Vitalik Buterin 在 2013 年开始起草 Ethereum 白皮书,并于 2014 年公开介绍项目。设想从记录转账扩展到运行智能合约:让网络按照共同规则执行程序,并维护执行后的状态。

“智能合约”不意味着程序理解法律,也不意味着它知道链外发生了什么。它首先是一种可由网络共同验证执行的软件。

Vitalik Buterin · Ethereum: Now Going Public

2015-07-30 · Frontier:Ethereum 网络启动

早期 Ethereum 网络统计界面,来自 2016 年官方回顾;并非启动当天的现场照片。

早期 Ethereum 网络统计界面,来自 2016 年官方回顾;并非启动当天的现场照片。 Ethereum Foundation / Taylor Gerring · CC BY 4.0.

Ethereum 的首个在线版本 Frontier 启动,矿工与开发者开始接入网络。初始阶段严格限制交易处理,随后通过“解冻”更新逐步开放交易和合约操作。账本上的程序成为可以动手实验的基础设施,也把工具、接口和使用体验的问题带到了更多开发者面前。

Stephan Tual · Ethereum Launches · Ethereum Protocol Update #1

2017 · ArcBlock:从应用开发者的问题出发

ArcBlock 于 2017 年成立。面对接口、开发方式各异的区块链,早期架构把应用怎样接入、怎样组合和运行放在一起考虑,提出 OCAP 与 Blocklet 等设计。

当时还是架构设想。接下来几年,它们逐步成为可以使用的工具与产品。2020 年的周年回顾将 2017 年 10 月 31 日记为 ArcBlock 名字诞生的日子。

史料:ArcBlock · 2020 anniversary retrospective

2018-06-30 · ArcBlock OCAP:在浏览器里查链

2018 年 OCAP Playground 发布公告中的界面。

2018 年 OCAP Playground 发布公告中的界面。 ArcBlock.

OCAP Playground 上线,开发者可以在浏览器左侧写查询,在右侧查看 Bitcoin、Ethereum 等链的数据。OCAP 是开放链访问协议;它借鉴数据库驱动的分工,把接入不同链的工作放到适配层。

GraphQL 让开发者描述自己需要的数据字段。共同的查询方式减少了接入负担,各条链的数据含义与规则仍然需要理解。

史料:ArcBlock · OCAP Playground launch

2019-05-20 · ArcBlock DID:把身份带进钱包

2019 年 ABT Wallet 发布公告配图,保留当年的产品名称。

2019 年 ABT Wallet 发布公告配图,保留当年的产品名称。 ArcBlock.

ArcBlock 发布 ABT Wallet,也就是后来 DID Wallet 的早期产品。除了管理资产,它把登录应用、接收凭证和签署文件纳入钱包的使用场景。

DID 是去中心化标识符,可以用来标识一个身份并关联验证所需的信息。钱包保管和使用相应密钥,让用户能够证明自己控制某个身份。钱包里的签名能证明控制权;某张证书值不值得信任,还要看谁签发、证明了什么。

史料:ArcBlock · ABT Wallet launch

2020 · ArcBlock Blocklet:把应用部件组合起来

2020 年 Blocklet 产品介绍中的界面。

2020 年 Blocklet 产品介绍中的界面。 ArcBlock.

到 2020 年,Blocklet 已有公开的产品介绍和管理界面。一个 Blocklet 可以是一项服务,也可以是完整应用;开发者可以安装、配置和运行这些软件单元,再把所需能力组合起来。

早期白皮书里的模块化设想,在这里有了可操作的界面。它回应的是应用交付的问题:用了区块链之后,开发者依然需要管理软件版本、配置和运行环境。

史料:ArcBlock · Introduction to Blocklets

2022-03 · ArcBlock DID Wallet:让身份操作更日常

DID Wallet 4.0 的历史界面,来自 2022 年发布说明。

DID Wallet 4.0 的历史界面,来自 2022 年发布说明。 ArcBlock.

DID Wallet 4.0 在 2022 年 3 月陆续发布,重新设计了导航、创建钱包与扫码等交互。它延续了早期身份钱包的方向,也让“持有自己的密钥”更具体地体现为日常操作。

密码学提供验证能力,界面决定人是否知道自己正在做什么。一个钱包怎样显示请求、让人确认操作,与底层算法同样影响实际使用。

史料:ArcBlock · DID Wallet 4.0 release

2022-07-19 · DID Core:身份标识成为正式标准

W3C 将 DID Core 1.0 发布为正式推荐标准,规定 DID 的语法、数据模型与相关操作。不同实现有了共同参照。

DID 不要求一定使用区块链;标准也不会自动建立信任或带来普及。它让不同系统更容易讨论同一种身份标识,具体方法、钱包和应用仍需完成各自的工作。

W3C · DID Core 1.0

2022-09-15 · The Merge:运行中的网络更换共识

共识是网络就哪些有效记录进入账本、以什么顺序进入达成一致的规则。Ethereum 完成 The Merge,从工作量证明切换到权益证明:参与验证者锁定一定数量的 ETH,按协议提出或检查区块,某些违规行为会导致被扣除质押。负责确认区块的机制改变了,原来的交易历史得以延续。

这是长期运行系统的一次重要升级。它没有凭这一项变化就自动提高交易吞吐量或降低手续费;网络的安全机制与扩容是相互关联、但不同的问题。

Ethereum · The Merge

2024-08-13 · 后量子标准:为更换密码算法做准备

NIST 发布首批三项最终版后量子密码标准。其中 ML-KEM 用于建立共享密钥,ML-DSA 与 SLH-DSA 用于数字签名。足够强大的量子计算机可能破解今天使用的某些公钥密码算法,威胁密钥与签名的安全;这些新标准正是为应对这类威胁而设计的。

标准发布不等于现有钱包和区块链已经完成迁移。怎样更换密钥、升级签名规则、让用户安全转移账户,仍是需要具体设计的系统问题。

NIST · finalized post-quantum standards

2026 · ArcBlock Arc:统一访问进入 AFS

到 Arc 这一代架构,早期 OCAP 关注的访问问题扩展到了更多资源:应用和 AI agent 都需要访问文件、数据与服务。AFS,也就是 Agentic File System,用路径组织资源,由 provider 适配模块连接底层系统。

可以把路径想成目录里的地址:先列出某个目录,找到其中一份文件,再读取内容。同样的访问思路也可以用于接入的数据记录;适配模块负责把请求翻译成底层系统懂的操作。

OCAP 的职责进入了这套资源体系。访问者可以通过共同的操作寻找和读取资源,具体能做什么仍由资源能力与授权决定。这条历史线从证明一条消息是谁签署的,走到了怎样让人和程序使用资源;身份与权限的问题仍在其中。

史料:Robert Mao · OCAP’s three generations

继续探索:区块链学习路径 · 《区块链实战》与勘误 · OCAP 的三代架构

检查一下理解

区块链是一项突然出现的发明吗?

它组合了数十年的密码学与分布式系统研究;后来的身份和应用工具继续解决不同的问题。