区块链历史

第 8 章(共 13 章)

智能合约

智能合约的历史:从尼克·萨博1994年的构想到以太坊"世界计算机"

核心要点

  • Nick Szabo coined the term 'smart contract' in 1994 and sketched bit gold in 1998 — the idea predates blockchain itself by roughly two decades.
  • Ethereum's 2014 crowdsale raised about 31,500 BTC (~$18.3 million), and its Frontier launch on July 30, 2015 turned Szabo's concept into a Turing-complete 'world computer' running EVM contracts written in Solidity.
  • The DAO hack of June 2016 — a reentrancy attack draining ~3.6 million ETH (~$50–60 million from a $150 million fund) — triggered Ethereum's July 20, 2016 hard fork and the ETH/ETC split, proving 'code is law' has social limits.
  • Two token standards industrialized contracts: ERC-20 (proposed November 2015) fueled the 2017 ICO boom (~$5.6 billion raised), and ERC-721 (January 2018) became the foundation of NFTs.
  • Chainlink's decentralized oracle network (mainnet May 2019) solved the oracle problem, wiring off-chain prices and data into contracts and enabling DeFi Summer 2020, when TVL grew from under $1 billion to roughly $15 billion in months.
  • Smart contracts now run on Layer 2 rollups with account abstraction (ERC-4337, 2023), and the idea Szabo compared to a vending machine secures on the order of $40 billion in DeFi — plus tokenized real-world assets like BlackRock's BUIDL fund (2024).

引言

今天,当你在去中心化交易所兑换代币、抵押资产借贷、或者铸造一枚NFT时,真正在干活的都是智能合约:一段部署在区块链上的程序,它严格按照代码写定的规则执行,没有任何中介能够阻止它、审查它,或者悄悄篡改它的条款。很多人不知道的是,"智能合约"这个词比区块链本身还要年长——1994年,计算机科学家、法律学者尼克·萨博(Nick Szabo)就提出了这一概念,比第一台真正能运行合约的"世界计算机"上线早了二十多年。本章讲述智能合约的历史:它在区块链诞生之前的构想形态、以太坊的落地实现、The DAO危机对"代码即法律"的拷问、让合约可以自由组合的代币标准,以及预言机、安全、扩容等把合约从思想实验推向每天结算数十亿美元的基础设施的关键演进。

7.1 区块链之前:尼克·萨博与自动售货机(1994–2008)

故事的起点不在链上,而在法学与计算机科学的交叉地带。1994年,萨博把智能合约定义为"一套以数字形式写定的承诺,包括各方履行这些承诺的协议"。他的洞察在于:合同中的许多条款——付款、抵押、违约罚没、强制执行——完全可以直接写进硬件和软件里,让违约变得代价高昂甚至根本无法发生,而不是事后再到法庭上追责。

在1996年的论文《智能合约:数字市场的构建基石》中,萨博给出了一个至今仍然最好用的类比:自动售货机。售货机就是一个装着钱箱、锁着货品、执行一条简单规则的"合约方"——投入正确面额的硬币,掉出一罐汽水,全程不需要收银员,机器的结构本身就是强制执行者。萨博认为,数字证券、金融衍生品、支付系统都可以照此设计,把"钱箱逻辑"写进金融工具本身。同一时期,伊恩·格里格(Ian Grigg)提出了"李嘉图合约",尝试把人类可读的法律文本与机器可读的数字权益绑定在一起,但把"自动履约"推得最远的仍然是萨博。

1998年,萨博设计了Bit Gold:用工作量证明链为数字代币盖时间戳、实现无发行方的所有权登记,这是以太坊出现之前最接近去中心化合约平台的构想。Bit Gold最终没有落地——当年的算力和网络撑不起它,也没有办法阻止单个节点篡改历史。但它说明了一件事:缺的从来不是智能合约的构想,而是一台谁都无法篡改其运行结果的机器。

7.2 从构想到世界计算机:以太坊(2013–2015)

2009年上线的比特币其实自带一套原始的合约脚本Script,但Script被刻意设计得功能有限——不支持循环、不是图灵完备的,只能做有限的几种操作。彩色币、Counterparty等项目曾试图在比特币上叠加合约功能,但终究是在一条只为"转账"设计的协议上逆势而行。

转机出现在2013年底。19岁的Vitalik Buterin(V神)发布了以太坊白皮书《以太坊:下一代智能合约与去中心化应用平台》。他的思路在今天看来堪称"常识级"的重构:与其在货币上打补丁,不如直接造一条以"运行任意程序"为使命的区块链。以太坊是图灵完备的,可以表达任何计算;它由全球数千个节点共同维护,被社区称作一台共享的"世界计算机"——如果说比特币是计算器,以太坊想做的就是智能手机。

项目的推进速度惊人。2014年7月至8月,以太坊众筹售出约31500枚BTC,按当时价格折合1830万美元左右,创下史上最大规模众筹纪录;Gavin Wood撰写的黄皮书定义了以太坊虚拟机(EVM),类JavaScript的Solidity语言让开发者第一次有了顺手的合约工具。2015年7月30日,以太坊首个正式版本Frontier上线:任何人都可以把萨博式的合约部署到一台全球共享、抗审查的计算机上,无需许可、无需托管、没有管理员。(以太坊诞生与崛起的完整故事,参见以太坊的历史。)

7.3 第一次压力测试:The DAO与"代码即法律"的边界(2016)

以太坊上线的第一年是概念验证,第二年就迎来了大考。2016年4月,The DAO项目上线:这是一个完全由智能合约构成的去中心化风投基金,持币者投票决定资金投向,短短数周就募得约1.5亿美元的ETH,参与人数超过1.1万,是当时历史上最大的众筹。

2016年6月17日,攻击者找到了定义一个时代的漏洞。The DAO的提款函数先把以太坊转出、再更新内部账本,而外部调用会把控制权交给对方合约——攻击者借此递归重入提款函数,反复提取,一共卷走约360万枚ETH,价值5000万至6000万美元。这就是此后写进每一本教材的重入攻击:漏洞不在以太坊本身,而在合约代码里。这正是问题的核心——在一个"代码即法律"的平台上,bug同样是法律。

经过激烈的社区争论,以太坊在2016年7月20日于第1920000个区块实施硬分叉,把被盗资金转回救援地址;少数派坚持"链不可篡改"的原则,继续运行原链,也就是今天的以太坊经典(ETC)。这场事件给整个行业留下了一条仍在被反复讨论的边界:"代码即法律"管住机器,但何时干预机器,仍然由人决定。智能合约安全也从此成为一门正式的职业。(逐步复盘见The DAO攻击事件图解。)

7.4 标准化时代:ERC-20、ERC-721与"金融乐高"(2015–2018)

合约真正形成生态,是从标准化开始的。2015年11月,Fabian Vogelsteller与Vitalik共同提出ERC-20:一份"同质化代币"的通用接口,规定所有代币合约都应实现同一组函数。钱包、交易所、区块浏览器全都认这套接口之后,任何人几分钟就能发币,并且即刻全网可用。2017年正式定稿的ERC-20成了ICO热潮的引擎——仅2017年一年,代币融资规模就达到约56亿美元(狂热与泡沫详见ICO热潮)。

2018年1月,在2017年底"加密猫"(CryptoKitties)把以太坊堵到瘫痪的现象级传播之后,ERC-721标准出台,为"独一无二、不可互换"的代币定了规矩——这就是所有NFT的技术地基。

这个时代更深的遗产是可组合性。合约代码公开、调用无需许可,开发者开始像搭乐高一样把协议拼在一起:钱包里嵌着借贷协议,借贷协议上再叠聚合器,每个协议都是独立合约,读写同一份全局状态。这恰好呼应了萨博1996年那篇论文的标题——数字市场的"构建基石",只不过这一次,基石是可以执行的代码。

7.5 预言机问题:把合约接入现实世界(2019)

世界计算机存在一个结构性盲区:智能合约本身无法知道链外世界的任何信息。它能验证签名、转移以太坊,却查不到汇率、股价,也不知道某架航班是否落地。这是刻意为之——如果某个节点能向链上"投喂"外部事实,它就能投喂假事实。

而中心化喂价的变通方案,又把智能合约最想去掉的可信中介请了回来,这就是著名的预言机问题。标志性的答案是Chainlink:白皮书发布于2017年,主网上线于2019年5月,通过一群独立的预言机节点在链下抓取数据、聚合多边结果并签名上链,再以质押和信誉机制让作恶付出代价。去中心化预言机把价格、天气、结算数据变成了合约可用的输入,也铺好了下一波浪潮——DeFi——的水管。

7.6 应用浪潮与安全军备竞赛(2017–2022)

2015至2019年打下的标准与地基,在随后几年里结出了两波把智能合约推向主流的应用浪潮。

DeFi之夏(2020年)。 2020年6月,借贷协议Compound开始向用户发放治理代币COMP,点燃"流动性挖矿"。收益资金疯狂涌入无需许可的协议——Uniswap的自动做市商、Aave的货币市场、MakerDAO的DAI——DeFi总锁仓量(TVL)在几个月内从不足10亿美元飙升至约150亿美元。这些协议的本质,都是一捆捆智能合约。(后续演进见DeFi革命。)

NFT浪潮(2021年)。 ERC-721合约从加密猫扩展成全球数字艺术与收藏品市场,标志性事件是2021年3月Beeple作品《每一天:前5000天》在佳士得拍出6930万美元。(深度阅读见NFT浪潮。)

每一波浪潮都伴随着安全课。Parity多签钱包——一个合约托管着数亿美元用户资产——2017年7月被漏洞盗走约3000万美元,同年11月又被误触发自毁,永久冻结了约51.3万枚ETH(时价约1.5亿美元)。而The DAO的"原罪"重入攻击,直到2020年还在DeFi协议上反复重演。作为回应,一条完整的安全产业链成形:审计公司(OpenZeppelin、Trail of Bits、ConsenSys Diligence等)、漏洞赏金平台、久经考验的开源合约库,以及能对合约代码性质进行数学证明的形式化验证工具。安全从"事后补救"变成了"融资前提"。

7.7 当下与未来:Rollup、账户抽象与真实世界资产

2020年代的智能合约,与2015年的初版相比已经是另一种生物——理念未变,栖息地全变。

扩容。 随着以太坊主网手续费高企,执行层大规模迁移到Arbitrum、Optimism、Base等Layer 2 Rollup上:合约在链下以EVM兼容方式运行,压缩后的数据回传以太坊。2022年9月15日,以太坊完成合并(The Merge),转向权益证明,能耗降低约99.95%;此后大多数新合约都优先部署在Rollup上。

账户抽象。 2023年3月上线的ERC-4337把用户账户本身变成了智能合约:社交恢复、会话密钥、代付Gas、通行密钥登录。这是对智能合约最古老的用户体验难题的安静回答——普通人不该为了用区块链而去管理原始私钥。

真实世界资产(RWA)。 最新的前沿是让合约代表加密世界之外的资产:代币化的美债和货币市场基金。2024年3月,贝莱德的BUIDL基金落地以太坊,短短数月规模达到数亿美元。三十年过去,萨博的自动售货机,已经开始贩卖华尔街的金融工具。

小结

智能合约的历史,是一个构想等待它的机器二十年的故事。1994年萨博给出定义,1998年设计Bit Gold;2015年以太坊把两者变成图灵完备的世界计算机;2016年The DAO危机划下"代码即法律"的社会边界;ERC-20与ERC-721让合约成为可组合的乐高积木;去中心化预言机把链接进现实世界;DeFi、NFT、Rollup、账户抽象与代币化资产,则把萨博的思想实验变成了仅DeFi一项就锁定约400亿美元的基础设施。从1994年到今天,定义几乎没变——"一套以数字形式写定的承诺"。变的是这些承诺如今承载着真金白银、数字艺术和越来越多现实资产,并且每时每刻都在自动执行。


延伸阅读: 区块链简史全书目录、前后章节以太坊ICO热潮,以及图解版比特币白皮书精读

常见问题

Who invented smart contracts?

Nick Szabo introduced the concept of smart contracts in 1994, describing them as 'a set of promises, specified in digital form, including protocols within which the parties perform on these promises.' He expanded the idea in his 1996 essay 'Smart Contracts: Building Blocks for Digital Markets,' using the vending machine as the original smart contract. Ethereum, launched in 2015, was the first platform to implement smart contracts at scale on a blockchain.

Did smart contracts exist before Ethereum?

The concept did: Szabo defined it in 1994 and designed bit gold in 1998, two decades before Ethereum. Bitcoin's Script language (2009) executed simple conditions like multisig and time locks, and platforms like Counterparty layered basic contracts onto Bitcoin — but Script was deliberately non-Turing-complete. Ethereum's Turing-complete EVM in 2015 was what made complex, general-purpose smart contracts practical.

What was the first smart contract?

Szabo's own answer was the vending machine: a locked box that takes exact change and dispenses a product, enforcing the deal mechanically with no cashier. On a blockchain, the first contracts were simple Bitcoin Script transactions from 2009; the first Turing-complete smart contracts ran on Ethereum at its Frontier launch on July 30, 2015.

What language are smart contracts written in?

On Ethereum and EVM-compatible chains, most smart contracts are written in Solidity, a JavaScript-like language introduced with Ethereum in 2014–2015, with Vyper as a Pythonic alternative. Other platforms use Rust (Solana, Polkadot), Plutus/Haskell (Cardano), or Move (Sui, Aptos). Contracts compile to bytecode that the chain's virtual machine executes.

Are smart contracts legally binding?

It depends on jurisdiction. Code that runs on a blockchain is automatically 'executed,' but whether it forms a legally enforceable agreement follows ordinary contract law — offer, acceptance, and consideration. Some jurisdictions have clarified the question: Arizona (2017) and other US states recognize smart contracts under law, and the US Electronic Signatures in Global and National Commerce (E-SIGN) Act treats blockchain records as electronic records. In practice, many projects pair on-chain code with off-chain legal wrappers.

Why do smart contracts need oracles?

Smart contracts can only access data on their own blockchain, so price feeds, weather data, and settlement information must be brought in by oracles. Chainlink's decentralized oracle network, live on mainnet since May 2019, aggregates inputs from independent nodes so no single source can falsify the data — solving the 'oracle problem.'

参考资料