文章以及资料(开源):github地址
定义
以太坊(英语:Ethereum)是一个开源的有智能合约功能的公共区块链平台。通过其专用加密货币以太币(Ether,又称“以太币”)提供去中心化的虚拟机(称为“以太虚拟机”Ethereum Virtual Machine)来处理点对点合约。
特点
相较于较大多数其他加密货币或区块链技术,以太坊的特点包括下列:
- 智能合约(smart contract):存储在区块链上的程序,由各节点运行,需要运行程序的人支付手续费给节点的矿工或权益人。
- 分布式应用程序:以太坊上的分布式应用程序不会停机,也不能被关掉。
- 代币(tokens):智能合约可以创造代币供分布式应用程序使用。分布式应用程序的代币化让用户、投资者以及管理者的利益一致。代币也可以用来进行首次代币发行。
- 叔块(uncle block):将因为速度较慢而未及时被收入母链的较短区块链并入,以提升交易量。使用的是有向无环图的相关技术。
- 权益证明(proof-of-stake):相较于工作量证明更有效率,可节省大量在挖矿时浪费的电脑资源,并避免特殊应用集成电路造成网络中心化。(测试中)
第二层功能
除了在主链上运行的各种功能,为了支持智能合约所需的高运算量以及资料容量,以太坊也积极开发第二层功能来减轻主链的负担,扩展其实用规模。目前的主要方案包括以下:
- 支链:用较小的分支区块链运算,只将最后结果写入主链,可提升供单位时间的工作量。
- Plasma支链:2020年6月起由OMG测试中
- Rollup支链:2019年开发团队将重心由Plasma转移至Rollup,目前正在开发中
- 状态通道(state channels):原理类似比特币的闪雷网络,可提升交易速度、降低区块链的负担,并提高可扩展性。尚未实现,开发团队包括雷电网络(Raiden Network)和移动性网络(Liquidity Network)
- 分片(sharding):减少每个节点所需纪录的资料量,并透过平行运算提升效率(尚未实现)
以太币
以太坊区块链上的代币称为以太币(Ether),代码为ETH,可在许多加密货币的外汇市场上交易,它也是以太坊上用来支付交易手续费和运算服务的介质。以太币的总发行量不明,因为权益证明的具体运作方式仍在研究中,而虽然难度炸弹限制了工作量证明的挖扩的区块数量上限,但因为叔块也有奖励,而且叔块的数量并不一定,造成确切数量难以估算。
以太币对其他实体货币的汇率可能在短时间内大幅变化,例如2016年 The DAO 被骇时,对美元的汇率从 $21.50 跌至 $15,而2017年初到2018年初的的一年间从大约10美金涨到1400美元。
布特林在 2016 年 4 月售出手上持有的四分之一以太币,造成一些人质疑,而他本人则说这是理财上很合理的分散风险,并引用前比特币开发员 Gavin Andresen 说这一切都还只是一场实验,仍有失败的可能。
智能合约
以太坊最重要的技术贡献就是智能合约。智能合约是存储在区块链上的程序,可以协助和验证合约的谈判和运行。以太坊的智能合约可以数种用图灵完备的编程语言写成。纽约时报称以太坊平台是一台由众多用户构成的网络来运转的公用电脑,并用以太币来分配和支付这台电脑的使用权。经济学人则说明智能合约可以让众多组织的数据库得以用低廉的成本交互,并且让用户写下精密的合约,功能之一是产生去中心化自治组织,也就是一间只是由以太坊合约构成的虚拟公司。
因为合约内容公开,合约可以证明其宣称的功能是真实的,例如虚拟赌场可以证明它是公平的。另一方面,合约的公开性也表示如果合约中有漏洞,任何人都可以立刻看到,而修正程序可能会需要一些时间。The DAO 就是一个例子,无法即时阻止。
智能合约的许多细节仍在研究中,包括如何验证合约的功能。微软研究院的报告指出要写出完善的合约可能非常困难,讨论了微软开发的一些可以用来验证合约的工具,并提到如果大规模分析各个已发布的合约,可能发现找出大量的漏洞。报告也说可以证明Solidity程序和以太虚拟机编码的等同性。
以太坊组件
p2p网络
以太坊运行在Ethereum Main Network上,这是一个通过TCP 30303端口寻址的网络,网络层运行的协议名为-D ΞVp2p
共识规则
以太坊的共识规则,由以太坊黄皮书(见后文中的“扩展阅读”)中的参考标准进行精确定义
交易
以太坊交易是一个网络消息,主要包含交易的发送方、接收方、价值和数据载荷
状态机
以太坊的状态转换由以太坊虚拟机(EVM)处理,这是一个基于栈的虚拟机,执行bytecode(字节码指令)。被称为“智能合约”的EVM程序采用高级语言(例如Solidity)编写,并编译为通过EVM执行的字节码。
数据结构
以太坊的区块链以数据库(通常采用Google的LevelDB)的方式保存在每一个节点之上,区块链内包含了交易和系统的状态,经过哈希处理的数据保存在Merkle Patricia Tree数据结构之内。
经济安全性
以太坊当前使用名为Ethash的工作量证明算法,这个算法迟早将被放弃,并切换到PoS。
扩展阅读
以太坊黄皮书:https://ethereum.github.io/yellowpaper/paper.pdf
黄皮书的简单版本:https://github.com/chronaeon/beigepaper
DΞVp2p网络协议:https://github.com/ethereum/wiki/wiki/ÐΞVp2p-Wire-Protocol
以太坊虚拟机相关资源:https://github.com/ethereum/wiki/wiki/Ethereum-Virtual-Machine-(EVM)-Awesome-List
MPT规范:https://github.com/ethereum/wiki/wiki/Patricia-Tree
casper第一版协议:https://github.com/ethereum/research/wiki/Casper-Version-1-Implementation-Guide
《深入理解以太坊》