比特币与以太坊区块链架构对比分析(下)

admin 2024-07-14 675次阅读

imToken 是一款全球领先的区块链数字资产管理工具[ZB],帮助你安全管理BTC, ETH, ATOM, EOS, TRX, CKB, BCH, LTC, DOT, KSM, FIL, XTZ 资产,同时支持去中心化币币兑换功能 ...

前言:相比上一篇文章,第二部分主要对以太坊的区块链架构进行了总结,同时也对与比特币架构的区别进行了对比分析。

区块链比特币以太坊

1. 以太坊区块链架构及元素

比特币钱包和以太坊钱包

以太坊的架构基于比特币,但同样采用区块链作为可编程的分布式信用基础设施,并支持智能合约应用,相比仅由虚拟货币支撑的比特币区块链有显著的优化和改进,基本架构及元素如下图所示:

相比比特币的改进主要体现在以下几个方面

1.前端部分

包括去中心化应用、智能合约开发工具及 JS 框架的介绍,主要是为了解决相比比特币更加复杂的应用场景或者新领域的开发,重点是智能合约的支持。这部分内容会在后续智能合约开发的文章中讲解,这里就不再赘述了。

这里我们简单说一下DApp。DApp由智能合约和客户端代码组成,其架构类似传统的Web应用,但智能逻辑部分运行在区块链上,客户端代码运行在专门的浏览器Mist中。相对于传统钱包的简单支付业务,它针对复杂的去中心化应用的设计而引入。

2. 帐户

以太坊引入了账户的概念,账户又可以分为两种:1)外部拥有账户(EOA),也就是一般意义上的用户账户;2)合约账户(),是一种特殊类型的可编程账户,是代码和数据的集合,由代码控制,通过EOA账户激活。

如何理解外部账户与合约账户的基本区别?

EOA 账户可以创建并使用自己的私钥签署交易并向另一个 EOA 账户或合约账户发送消息。两个外部账户之间发送的消息类似于比特币中简单的支付交易,只是价值转移。但是从 EOA 账户向合约账户发送消息会激活合约账户的代码。

合约账户可以进行图灵完备的计算任务,在合约账户之间传递消息。调用时EOA账户需要提供一些参数:EOA地址、合约地址和数据,数据部分包括需要调用的合约中的方法以及需要传递的参数。

与 EOA 账户不同,合约账户无法自行发起交易。合约账户只能在收到交易(来自 EOA 账户或其他合约账户)后才能响应交易触发交易。

直观表示如下

3. 区块链管理和结构

比特币区块链是使用二叉树结构按照一定的算法将交易的哈希值组合起来组织起来的,顶端节点的哈希值相当于整个交易列表的指纹,用于验证交易列表。由于以太坊引入了对象状态管理的概念(即上面的账户),除了交易列表之外,还需要保存最新的状态,这就带来了复杂的验证和查询需求:

(1)以太坊的状态由一个键值表组成,即(地址-账户声明对的变量)。变量包括余额、随机数、代码和账户存储。账户的状态可以经常变化,其余额和随机数也会经常变化。

(2)可以插入新账户,也可以插入和删除现有账户。

(3)基于以上两点imToken官网,我们需要引入一种方法,能够在插入、更新、删除操作后快速计算出新的根哈希值,而不需要重新计算整棵树的数据结构。并且必须具备:树的深度是有限的,以防止拒绝服务攻击;树的根哈希只与树的数据有关,而与更新的顺序无关。

满足上述要求的实现是树

在区块链的区块头中,以太坊实现存储了三个根哈希:1)交易的根哈希值;2)状态的根哈希值;3)收据的根哈希值(收据的作用将在后续章节中讨论)

直观表示如下

与比特币的另一个不同之处在于,以太坊的区块链中的每个区块都存储了区块链编号和区块难度(这就引出了一个问题:其目的是什么?)

在区块链的构建上,以太坊还采用了不同于比特币的算法——GHOST算法,中文直译过来就是“贪婪最重观察子树”,这个算法让以太坊的区块链组织不是链,而更像一棵树。

4. 工作量证明和收入

根据比特币挖矿设计的难度,全网新区块的生成速度被动态控制在10分钟左右,工作量证明仅由CPU的计算难度决定。以太坊的POW(工作量证明)算法经过优化,比比特币的工作量证明相对简单、灵活。首先,每次新区块的生成时间被控制在15秒左右,同时以太坊的工作量证明机制加入了内存难度,具有抵抗针对单一哈希优化的ASIC矿机的属性,避免了算力局部集中的风险。

在矿工收益方面,以太坊的奖励体系也更为复杂。与比特币类似,以太坊在生成新区块时会获得一定的静态收益(5 以太币)。矿工还可以依靠交易用户支付的“燃料”获得收益。此外,他们还会因生成被纳入链中的“叔块”而获得额外奖励。

有必要解释一下“燃料”和“叔叔块”的概念:

“燃料”——以太坊具有图灵完备的性质,在此基础上存在着恶意使用无限循环、跳转指令的可能性。为了防止对系统的恶意攻击,要求对每笔交易给出一个最大计算步数。同时,交易者需要向矿工支付一定的交易费,才能将交易添加到区块中,这个费用就是“燃料”。 “燃料”决定了交易是否能够有效执行,如果交易中的实际操作超出了最大计算步数,燃料就会耗尽,交易终止,交易费归属于挖出该区块区域的矿工。

“叔块”——又称“废块”,是指满足以太坊难度条件的区块,但区块中的交易因未经确认而无效。这种情况通常发生在矿工 A 和 B 同时生成满足条件的区块,然后由于延迟网络确认和区块重组而导致其中一个区块无效。“叔块”的引入以太坊和比特币区块链钱包,不仅提高了对以太坊网络每 15 秒更新可能产生的大量非区块算力浪费的经济补偿,而且增强了整个区块体积的安全性,使攻击者很难用废块模拟区块链主链。

5. 图灵完备性、EVM(以太坊虚拟机)和高级语言

相较于比特币,以太坊的创新之处在于引入了图灵完备性,让智能合约的应用成为可能。同时它还具备基础的计算环境——以太坊虚拟机,合约代码的执行在EVM上进行。

同时,以太坊提供了高级语言,方便编写智能合约。高级语言最终会被编译成在 EVM 中执行的 EVM 字节码,并部署在以太坊区块链上。目前有三种编程语言可供选择:

1)相似的语言

2)类似语言,融合低级语言的效率和易用性

3)LLL(Lisp like)是一种类似Lisp的语言,设计简单,有点像汇编语言

6. 合同履行及事项

以太坊上合约的执行是在区块验证时由交易触发的,通常通过接收外部账户的消息来激活。执行过程是异步的,即没有返回值,无法直接获知结果。因此合约与外界的通信是通过日志事件实现的,日志事件是交易执行时产生的回执的一部分。

以太坊中的事件是日志和事件监控协议的抽象。日志记录提供了合约的地址、一组最多 4 个主题以及一些任意长度的二进制数据。事件可以使用现有的 ABI() 函数来解析日志记录。

总结:比特币和以太坊的架构分析主要从系统组件、基本概念、交互等方面展开,其中涉及的很多工作原理和流程并没有深入阐述和讲解,后续文章会讲解主要的流程和原理。

参考文章:

以太坊的工作原理



发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。