主页 > imtoken钱包官网下载 > 比特币和以太坊区块链架构对比分析(下)

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

imtoken钱包官网下载 2023-11-26 05:14:23

前言,与上篇相比,第二篇主要总结了以太坊的区块链架构,同时结合与比特币架构的差异进行对比分析。

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

以太坊的架构基于比特币,但同时将区块链作为可编程的分布式信用基础设施,支持智能合约应用。 与仅由虚拟货币支持的比特币区块链相比,它得到了显着优化和改进。 基本结构和元素如下图所示:

以太坊跟比特币的区别_比特币以太坊莱特币都开始下跌_以太坊和比特币的不同

相对于比特币的提升主要体现在以下几个方面

1.前端部分

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

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

2.账户

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

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

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

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

与 EOA 账户不同,合约账户不能自行发起交易。 相反,合约账户只有在收到交易后才会触发交易以响应交易(无论是来自 EOA 账户还是其他合约账户)。

可视化表示如下

以太坊跟比特币的区别_比特币以太坊莱特币都开始下跌_以太坊和比特币的不同

3. 区块链管理和架构

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

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

(2) 可以插入新帐号,也可以插入和删除已有帐号。

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

满足以上要求的实现就是Patricia树

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

可视化表示如下

以太坊跟比特币的区别_比特币以太坊莱特币都开始下跌_以太坊和比特币的不同

与比特币也有区别。 以太坊区块链中的每个区块都保存了区块链编号和区块难度(引出一个问题:有什么作用?)

在区块链的构建上,以太坊还采用了不同于比特币的算法——GHOST算法,直译为“贪心最重要的观察子树”,该算法使得以太坊的区块链组织不是一条链,而是一棵树。

4. 工作证明和福利

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

在矿工收益方面,以太坊的奖励制度也比较复杂。 类似于比特币和以太坊,当一个新的区块产生时,会获得一定的静态收益(5个ETH)。 矿工也可以依靠交易用户支付的“燃料”获得收益。 此外,他们还将获得一个包含入链额外奖励的“叔叔区”区块。

这里有必要解释一下“燃料”和“叔块”:

“燃料”——以太坊拥有图灵的完备属性。 在此基础上,存在恶意使用无限循环和跳转指令的可能。 为了防止对系统的恶意攻击,规定每笔交易都需要给出最大的计算量,同时交易者需要向矿工支付一定的交易手续费才能将交易加入区块,手续费是“燃料”。 “燃料”决定了交易能否有效执行。 如果交易中实际操作超过最大计算步长,则燃料耗尽,交易终止以太坊和比特币的不同,交易手续费归挖出区块的矿工所有。

“叔块”——又称“废块”,是指满足以太坊难度条件的区块,但该区块内的交易未被确认而失效。 这种情况通常发生在 A 和 B 矿工之间,同时产生符合条件的区块,然后由于网络延迟确认和区块重组导致一个区块无效。 “叔块”的引入,一方面提高了以太坊网络每15s更新一次可能导致大量非区块算力被浪费的经济补偿; 模拟带有死块的区块链主链。

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

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

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

1)Solidity,类似JavaScript语言

2)Serpent,类似于Python语言,集成了低级语言的高效和易用性

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

6. 合约执行及事件

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

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

总结:比特币和以太坊的架构分析基于系统组件、基本概念和交互。 很多涉及的工作原理和过程都没有展开和深入解释。 在后续文章中将对主要流程和原理进行说明。

附参考文章:

以太坊如何运作