以太坊的特色

以太坊社区的快速变革一直引领着公链社区在区块链2.0时代的探索步伐, 不少公链都从它派生而来,进一步发扬光大。 它的 经济模型挖矿模型 与比特币相比有较大区别,下面分几方面逐一概括。

以太币总量

比特币的币,全部由挖矿过程产生,以太坊则不然。 它在创立之初即用众筹的方式筹集比特币作为启动资金。 同时向募资人发放了 7200 万枚以太币代币。 也就是说,从创世那一刻起,以太币就有了起始 7200 万枚的流通量, 这些以太币是不需要通过挖矿产生的。 在采用工作量证明的工作模式的当下,每年通过记账奖励获得的以太币不超过初始 7200 万的 25%, 也就是 1800 万。以太坊的发行总量是没有上限的,可以无限通胀,这点与比特币 2100 万的上限形成了鲜明的对比。

../_images/Picture1.png

以太币总供应量示意图 数据采集于2018年9月

../_images/Picture2.png

比特币供应量示意图,在2040年左右接近上限2100万枚

以太币在生态中扮演的角色是用来购买、调用智能合约所需的交易费,这与比特币的货币属性是有很大区别的。 用户在使用全球以太坊网络计算服务的时候需要支付以太币作为交易费,以太币的涨跌直接关系着用户运行智能合约的成本。

Note

以太币约3/4在创世之初即已经存在,其总发行量会跟随项目进度而调整。

挖矿速度

作为一台全球巨型计算机,以太坊的记账出块速度决定了这台计算机的运行速度。 用户调用智能合约所引发的状态转移随着每次合法出块而发生。 目前以太坊的出块速度维持在 10-19 秒/块之间, 从前的“前哨”(Frontie) 版本维持在 12 秒/块左右。 以太坊的 EIP-1234 提案目前已经被以太坊团队所接纳,该提案将难度炸弹推迟 4200w 万秒(1.4年), 使得2020年夏天的出块速度预计回落到 30 秒/块。

Note

比特币的出块速度平均维持在 10 分钟/块左右。

存储空间

以太坊目前全球区块链总存储容量已经达到单机 1TB 以上的规模,并且随着出块持续增加中。 在未来十年间,运行以太坊完整节点的设备成本将会超出普通爱好者的承受范围,

Note

比特币的区块链单机总存储大小在 170GB 左右,不足以太坊的 1/5。

状态机

以太坊可被视为一个巨大的“状态机”,由交易驱动而不断进行状态转移。 区块链记录了用户向该状态机发出请求的历史和请求的结果。

该状态包罗了世界上所有使用该网络的用户的状态,也包罗了各个智能合约的状态。 这台巨型计算机的任何时刻的状态,可以被任何人查询。

代币

以太坊强大的合约功能提供了诸多在以太坊上进行交互的可能。 而其中最有深远影响的是 ERC20 [1] 的代币(俗称发币), 在这之后又进一步衍生出了 ERC721 [2] 标准的代币(如有名的 加密猫游戏 即为该合约格式)。 ERC20 仅需要开发者在智能合约中实施一些标准接口,该合约就可以成为虚拟的银行。 用户向该合约发送以太币,合约自动执行脚本按兑换比例记录下用户持有的代币数量。 项目方则可以从合约转出以太币资助日常开发所需开销。 ERC20 标准也成为学习以太坊智能合约的一个重要范例教材,将在本书的实践开发环节中向读者展示。

哲学

以太坊的社区哲学是 “Move fast and break things” , 用快速创新并不畏惧打破传统的方式进行发展。 这有别于比特币保守谨慎的社区作风。 以太坊的重要版本升级采用硬分叉的方式进行,并不向前兼容,对社区存量用户震动很大。 而相比较而言,比特币对于任何硬分叉的提议都谨慎小心处理,尽量采用保持向前兼容的特性的软分叉。 在共识算法上,比特币采用成熟的加密和哈希算法,都源自于上世纪70年代,经历多年考验。 以太坊采用 Ethash [3] 算法,是由以太坊团队首先提出并第一次应用的。 比特币工具链多年来版本演进较慢,每项改进提议都要经过社区漫长的争论。 以太坊的开发工具却发展迅速,短短两三年间迭代出多个版本。 目前以太坊的交互式 JavaScript接口 web3.js 从初始发布到现在已经到达1.0.0 Beta 版本,该版本与去年的0.21.0版本相比较有诸多不兼容。

本书将以最新的1.0.0 Beta为主要工具与讲解对象

[1]Fabian Vogelsteller, Vitalik Buterin, (2015) ‘ERC20 Token Standard’, The Ethereum Wiki, Available at: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
[2]William Entriken, et al (2018) ‘ERC-721 Non-Fungible Token Standard’, The Ethereum Wiki, Available at: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
[3]Ethereum Community Authors, (2018), ‘Ethash’, The Ethereum Wiki ,Available at: https://github.com/ethereum/wiki/wiki/Ethash