火融财经

以太坊:下一代智能合约和去中心化应用平台 | 读懂白皮书

发布时间:2019-08-15 17:31:59 来源:

以太坊:下一代智能合约和去中心化应用平台 | 读懂白皮书

原标题:以太坊:下一代智能合约和去中心化应用平台 | 读懂白皮书

比特币出来之后,很多人倾心于将区块链技术应用于货币以外的领域。

然而,因为比特币的脚本系统,以及诸如基于比特币的彩色币和所谓“元币” (metacoins)等下一代加密货币在允许 DACs 所需要的任意复杂的计算这一点上都非常受限。因此,将区块链应用到更多领域一直都是个问题。直到以太坊的出现。

以太坊旨在提取上述协议中的创新并将其通用化-创造一个功能完善的,图灵完备的(但是可深度自由调整的)加密账簿,它允许参与者编写任意复杂的完全存在于并且被块链传递的合约,自治代理和关系。这就是说,一个人能够简单地通过协议内置的脚本语言编码去实施他所希望的特性。定制货币,金融衍生品,身份系统和去中心化组织的 创建将变得容易,构建以太坊开发者未曾想象得到的交易类型也将是可能的。

如果将比特币称之为区块链1.0,以太坊已经成了公认的区块链2.0。正是以太坊,带来了后来以ICO为代表的区块链繁荣。

寻根溯源,我们就来回顾一下V神在以太坊白皮书中是怎么说的。

为何需要以太坊协议

虽然比特币协议对于货币,基础多方签名契约以及智能合约的简单版本是足够的,仍有一些根本上的限制使得它只适用于 一个非常受限的业务特性范围。

简化支付验证的困难 - 比特币的默克尔树结构支持一个叫“简化支付验证”的协议, 通过该协议一个没有下载完整块链的客户端也能够通过向其它节点索要包括从交易哈希沿默克尔树上溯至块链头处的根哈希的哈希序列来快速确认交易输出的正确性。为了安全客户端依然需要下载块链头,但相比下载完整块链的做法,所需的带宽和验证时间都成千倍地降低了。

同样的,在比特币基础上的彩色币以及元币都很难甚至无法简化交易验证。

而以太坊通过建立自己的块链,通过在每一个区块保存一个表示当前每个地址的平衡账目的清晰的“状态树”和一个表示当前区块和上一个区块间交易的“交易表”,以太坊解决了可扩展性问题。

以太坊合约将被允许在持久内存中存储数据,这样的内存加上图灵完备的脚本语言将使在单个合约中编码一个完整的货币成为可能。因此,以太坊并不以取代前述的彩色币或元币协议为目的,而是旨在成为一个 提供超强脚本系统的优秀底层协议,在其上可以创建任意高级的合约,货币及其它去中心化应用。如果现存的彩色币和元币项目迁移 至以太坊平台,它们将从以太坊的简化支付确认,与金融衍生品和去中心化交易所的适应性,以及能够同时在一个网络中存在的能力中获益。使用以太坊,那些想出可能极大改变加密货币应用现状的点子的人将不再需要去启动他们自己的块链,他们可以简单地用以太坊脚本编码实现他们的想法,简而言之,以太坊是创新的基础平台。

以太坊的特色1:采用幽灵协议

幽灵协议提出的动机 是当前快速确认的块链因为高作废率而受到低安全性困扰;因为区块需要花一定时间(设为 t)扩散至全网,如果矿工 A 挖出了一个 区块然后矿工 B 碰巧在 A 的区块扩散至 B 之前挖出了另外一个区块,矿工 B 的区块就会作废并且没有对网络安全作出贡献。此外,这 里还有中心化问题:如果 A 是一个拥有全网 30%算力的矿池而 B 拥有 10%的算力,A 将面临 70%的时间都在产生作废区块的风险而 B 在 90%的时间里都在产生作废区块。因此,如果作废率高,A 将简单地因为更高的算力份额而更有效率,综合这两个因素,区块产 生速度快的块链很可能导致一个矿池拥有实际上能够控制挖矿过程的算力份额。

通过在计算哪条链“最长”的时候把废块也包含进来,幽灵协议解决了降低网络安全性的第一个问题;这就是说,不仅一个区块的父 区块和更早的祖先块,该区块的父区块和更早祖先块的作废的兄弟区块也被加进来以计算哪一个区块拥有支持其的最大工作量证明。 因为简洁性原则,以太坊仅采用了幽灵协议的最基础部分(即废块必须以下一个区块的叔区块的身份纳入计算),但这已经获得了幽 灵协议 90%以上的益处。另外,以太坊付给以“叔区块”身份为新块确认作出贡献的废区块 75%的奖励(把它们纳入计算的“侄子区 块”将获得奖励的 12.5%);这个修改旨在解决第二个问题 – 中心化倾向。

以太坊的特色2:虚拟机

以太坊合约的代码使用低级的基于堆栈的字节码的语言写成的,被称为“以太坊虚拟机代码”或者“EVM代码”。代码由一系列字节构成,每一个字节代表一种操作。

EVM代码的正式执行模型令人惊讶地简单。当以太坊虚拟机运行时,它的完整的计算状态可以由元组(block_state, transaction, message, code, memory, stack, pc, gas)来定义,这里block_state是包含所有账户余额和存储的全局状态。每轮执行时,通过调出代码的第pc(程序计数器)个字节,当前指令被找到,每个指令都有定义自己如何影响元组。例如,ADD将两个元素出栈并将它们的和入栈,将gas(瓦斯)减一并将pc加一,SSTORE将顶部的两个元素出栈并将第二个元素插入到由第一个元素定义的合约存储位置,同样减少最多200的gas值并将pc加一,虽然有许多方法通过即时编译去优化以太坊,但以太坊的基础性的实施可以用几百行代码实现。

区块链和挖矿

虽然有一些不同,但以太坊的区块链在很多方面类似于比特币区块链。它们的区块链架构的不同在于,以太坊区块不仅包含交易记录和最近的状态,还包含区块序号和难度值。这虽然导致以太坊中的区块确认算法乍看起来似乎效率很低,因为它需要存储每个区块的所有状态,但是事实上以太坊的确认效率可以与比特币相提并论。

原因是状态存储在树结构中(tree structure),每增加一个区块只需要改变树结构的一小部分。因此,一般而言,两个相邻的区块的树结构的大部分应该是相同的,因此存储一次数据,可以利用指针(即子树哈希)引用两次。一种被称为“帕特里夏树”(“Patricia Tree”)的树结构可以实现这一点,其中包括了对默克尔树概念的修改,不仅允许改变节点,而且还可以插入和删除节点。另外,因为所有的状态信息是最后一个区块的一部分,所以没有必要存储全部的区块历史-这一方法如果能够可以应用到比特币系统中,经计算可以对存储空间有10-20倍的节省。

瓶颈:扩展性

扩展性问题是以太坊常被关注的地方,与比特币一样,以太坊也遭受着每个交易都需要网络中的每个节点处理这一困境的折磨。比特币的当前区块链大小约为20GB,以每小时1MB的速度增长。如果比特币网络处理Visa级的2000tps的交易,它将以每三秒1MB的速度增长(1GB每小时,8TB每年)。以太坊可能也会经历相似的甚至更糟的增长模式,因为在以太坊区块链之上还有很多应用,而不是像比特币只是简单的货币。

目前(2018年9月)以太坊扩容已经迫不容缓。而包括V神在内的众多开发者也在想办法利用分片的技术进行扩容,但到目前为止,扩容问题的解决还需一段时日。返回搜狐,查看更多

THE END
上一篇:以太坊未确认交易数量为63359笔
下一篇:Bitfinex有大量ETH流出 今日午间出现23881枚以太坊的转账

相关热点

最新发布

热门专题