摘要
以太坊是一个去中心网络 (常被解释成“世界电脑”), Vitalik Buterin 于 2013 年创建它。 以太坊是一个开源的,全球去中心化的计算基础设施,执行称为智能合约的程序,这个网络的燃料就是以太(ETH)。
自从 2015 年开始,以太坊一直运用工作量证明(POW)。以太坊第一个区块在 2015 年七月被开采,尽管已经制定了迁移到权益证明 (PoS) 共识模型的计划,但是遇到了一些挫折。
与比特币不同,以太坊基于账户模型(vs UTXO)去记录状态转移。以太坊中有两类账户,外部账户(EOAs)和部署在 EVM 上的合约账户。
到 2020 年三月,以太坊稳居全球加密货币市值第二。它普及了智能合约的使用,上千个团队在它的网络上运行着真实业务应用的解决方案。
1. 什么是以太坊(Ethereum)?
以太坊是一个开源的,全球去中心化的计算基础设施,执行称为智能合约的程序。
以太坊总供应量中预挖矿占了 7200 万个,其中 6000 万个在 2015 年首次代币发行(ICO)中售出。
它的 PoW 算法是Ethash,初始设计是为了防止 ASIC 挖矿。区块出块时间大约是15s(最大区块约为 1,500,000Gas),君士坦丁堡(Constantinople)分叉使区块回报从 3ETH 降到 2ETH。
以太坊是近似图灵完备的(quasi-Turing complete),每次转账需要 gas,这个费用会根据实时存储消耗,带宽消耗, 计算复杂度这些因素波动。Gas 用于防止程序的无限执行;它引入了一个执行上限,也是转账能设置的最高费用。
尽管在最初的白皮书中缺少关于 PoS 体系结构实现的细节,但是ETH 2.0 已经成为以太坊社区中最关键、最受期待和最有争议的主题之一。迁移到 PoS 被延迟了几次,也伴随着延迟“难度炸弹”(Difficulty Bomb)的硬分叉。
2. 以太坊主要特征
基于 Account 模型
对于 Account 模型,一个典型以太转账(账户 a 和 b 之间)有以下两个步骤:
从 a 账户计出
在 b 账户计入
以太坊对所有账户映射余额。因此,转账操作减少了一个帐户的余额,增加了另一个帐户的余额。
相比较,一个 UTXO 转账如下运作:个人给出钱然后收到零钱(类似找零)
根据以太坊设计原理,Account 模型的好处有这些:节省大量空间(转账只需一个签名和一个输出),更高的替代性(更难设黑名单),简单(更容易创建 DApps),轻客户端(轻客户端可以通过沿任何指定方向扫描状态树来访问与账户相关的所有数据)。尽管有这些优点,帐户模型可能促使双花攻击(double spending)和重放攻击(replay attack)。
全局状态和账户结构
以太坊核心是一个基于转账状态的机器。在任何时间点,以太坊都可以用默克尔树映射出它所有的账户地址和状态。
以太坊状态随着新区块产生不断更新着,每一个区块都包含了有效交易和块头(包含了连接上一个区块的信息)。
在以太坊中,有两种类型的账户:
外部账户(EOA):被私钥控制且没有代码与之关联。个人通过私钥操作它,一个 EOS 只包含了nonce(转账中的数字)和一个相关联的余额(账户拥有的以太数量)
合约账户:由合约代码控制且关联(一旦发布了永远不会变)。除了 nonce 和余额,一个合约账户往往存储了它的内容哈希(例如默克尔树根节点哈希)和代码哈希(这个特定账户 EVM 代码的哈希)。
Sources: Binance Research, modified from the original work of Vaibhav Saini.
EVM 和智能合约
典型的智能合约部署过程如下:
合约由高级语言编写(例如 Solidity, Vyper)
代码编译为字节码,然后 ABI(“应用程序二进制接口”,即与合约交互的标准方式)被创建
智能合约由一个合约交易(有 gas 费用)部署到以太坊链上
Source: Binance Research, modified from the original work of Li, X., Jiang, P. et al (2018).
以太坊虚拟机(EVM)是为以太坊区块链解释字节码指令的计算机软件(或计算引擎)。具体来说,EVM 处理任何智能合约逻辑,从部署到执行。
EVM 基于 256 位的单词格式,具有简单的基于堆栈的架构和多个数据组件:
Program code ROM: 存储用来执行合约的程序字节码,只读空间
临时存储(Memory): 易失性的可以读写修改的空间
永久存储(Storage): 可读写修改的持久存储的空间
热门的智能合约例子
ERC-20 代币
一个 ERC-20 代币是由EIP-20标准接口实现,可参见 Consensys 实现的标准例子。
由于诸如 ERC-20 等代币标准的普及,以太坊网络上已经发布了数百个代币。除此之外,还有很多代币标准也在产出(例如 ERC-721,ERC-1155)或进行中。要更全面地了解以太坊上的代币标准,请阅读我们关于通证化世界的报告。
拍卖合同
拍卖合同很适用于以太坊智能合约。例如,你可以创建一个盲拍卖,任何账户可以发送出价,出价最高者获胜。参见公开拍卖实现的一个例子。
3. 以太坊 2.0: PoS, 信标链, 侧链, 分片
以太坊 2.0,也就是业内常说的“Serenity”,实际上是以太坊规划发展中的最后阶段。
尽管还没有开始过渡到 POS(或“ETH 2.0”),但是已有足够多细节来描述以太坊的未来架构。值得注意的是,ETH 2.0 封装的不仅仅是基于 PoS 的共识算法。
基于已有信息,ETH 2.0 将引入以下一些元素:
信标链:它将是主链(相当于现在的 ETH1.0 链)和分片链的桥梁,它会提供权益抵押奖励。信标链将支撑和联系着各分片链。
分片链:由于用了可扩展的分片技术,每个分片链将独立操作自己的状态,历史和转账,它们之间的主要连接都将被记录在信标链上。
aWASM:每个分片都有自己的专用虚拟机“eWASM”,它应该与常规的以太坊虚拟机一起,但是到目前为止提供的细节很少。
关于即将改变的验证算法,新的 PoS 是基于Casper:“PoS finality gadget”
在完成从 1.0 链到新智能合约的有效存款(约 32ETH)后,验证者将在以太坊 2.0 上激活,并有一段等待期。验证者还需要成为 1.0 链的轻量级客户端才能被批准验证新块。在这个新的 PoS 共识系统中,恶意的验证者将会受到资金被削减的惩罚。
以太坊 2.0 的逐步推出将分为 4 个不同的阶段:
阶段 0: 信标链将启动,“finality gadget”引入。该阶段将在 2020 年完成,BETH(“Beacon ETH”)将被引入,开始对验证者进行奖励。
阶段 1:添加分片链,主链的状态信息分到分片链,分片链中区块信息不包含“高级”信息(例如,账户信息),仅仅用于数据存储。
阶段 2:分片链由一个通用的结构化链连结起来,并支持智能合约,外部账号,以及资产。
其他:比如zkSTARKS作为阶段 2 后的长期计划
以太坊 2.0 开发团队概述
已经有很多团队致力于 ETH 2.0 的开发,下表列出一些突出贡献的团队
团队 | 客户端 | 语言 |
---|---|---|
Prysm | Go | |
Lodestar | JavaScript | |
Teku | Java | |
Harmony | Java | |
Substrate Shasper | Rust | |
Lighthouse | Rust | |
Nimbus | Nim | |
Trinity | Python | |
Cortex | .NET |
Sources: ETHHub, Kraken Intelligence, Binance Research.
4. 通证经济与供应分配
以太坊的通证经济主要有三阶段:
阶段 0 - ICO:ICO 在2015 年上半年出售了 6000 万个以太,用比特币筹集了最初的资金。
阶段 1 - POW(现在):依赖于 Ethash 共识算法:调用 Keccak 并采用“Memory Hardness”来抵御 ASIC。然而现在主要还是由 ASIC 设备挖矿。
阶段 2 - POS:在最后阶段,以太区块将被抵押节点验证,然后获得奖励
阶段 0 启动网络价值,阶段 1 提高供应分配。由于挖矿奖励现在集中由 ASIC 池获得,第 2 阶段的推进使得奖励由以太持有者获得,这便解释了关于 ProgPoW正在进行的辩论。
以太坊的总供应量没有上限,但由于每个区块的奖励是固定的,网络的通货膨胀率将随着时间的推移而衰减,(非常)长期接近于零。
5. 项目团队
以太坊的开发分布在多个团队和个人中,下表列出了一些早期重要贡献者:
个人 | 职位 | 描述 |
---|---|---|
联合创始人 | Vitalik 在 2013 年撰写以太坊白皮书之前,曾为比特币杂志发表过文章。 | |
联合创始人 | Gavin 发明了 Solidity,写了以太坊黄皮纸,以太坊基金会第一位 CTO,2015 年他创立了 Parity Technologies | |
联合创始人 | 在 2014 年辞职创建 IOHK 之前,Charles 是以太坊的 CEO | |
联合创始人 | Anthony 在 2015 年离开了这个项目,在多伦多证券交易所(Toronto Stock Exchange)担任数字资产官 | |
以太坊首席内容官 | Stephan 是以太坊的 CCO,于 2015 年离职。他是 Atlas Neue 的创始人和 slockit 的 CCO | |
联合创始人 | 在加入以太坊之前,Mihai 是比特币杂志的主编。 | |
联合创始人 | 2013 年,他开始使用 Go 编程语言完成以太坊的第一个实现。尽管已于 2017 年离职,但他仍是 go-ethereum repo 的最大贡献者。 | |
联合创始人 | 2012 年,Amir 是比特币杂志的联合创始人 | |
联合创始人 | Joseph 在 2014 年离开以太坊后,于 2015 年共同创立了 Consensys |
Sources: Kraken Intelligence, Steemit, BitCoinTalk, Binance Research.
6. 其他参考资料
Antonopoulos, A.M., Wood, G (2018) 精通以太坊第一版 https://github.com/ethereumbook/ethereumbook
Buterin, V (2013). 下一代智能合约和去中心化应用平台 https://github.com/ethereum/wiki/wiki/white-paper
Etherscan. 区块链浏览器 https://etherscan.io/
EthHub 网站 https://ethhub.io/
Kasireddy, P (2017). 以太坊是如何运作的呢? https://www.preethikasireddy.com/post/how-does-ethereum-work-anyway
Kraken Intelligence (2020). 深入以太坊 https://blog.kraken.com/wp-content/uploads/2020/02/Kraken-Intelligence-Ethereum-Asset-Review-vF-.pdf
Li, X., Jiang, P. et al (2018). 区块链系统安全性调查 https://www.researchgate.net/figure/The-process-of-smart-contracts-development-deployment-and-interaction_fig3_319249505
Saini, V (2018). 深入虚拟机: 以太坊如何在后台工作 https://hackernoon.com/getting-deep-into-evm-how-ethereum-works-backstage-ac7efa1f0015
Trust Wallet. 以太坊钱包 https://trustwallet.com/ethereum-wallet/