主页 > imtoken国际版官网下载 > 【图谱学院】区块链与密码学国课3-4:硬核“拆解”以太坊

【图谱学院】区块链与密码学国课3-4:硬核“拆解”以太坊

imtoken国际版官网下载 2023-03-13 06:43:38

本系列课程内容从比特币的介绍开始,然后延伸到区块链的相关技术原理和发展趋势,再深入浅出地介绍区块链中应用的各种密码学技术。 欢迎大家订阅本公众号,继续学习。

【本课内容全部选自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德飚教授讲授的《区块链与密码学》讲义、教材和互联网。 版权归原作者所有,如有侵权请第一时间联系我们,我们会及时处理。 】

3.3

区块链 2.0:可编程区块链

上期我们“拆解”了区块链1.0的代表——比特币。 本期我们继续拆解之旅,对象是区块链2.0——可编程区块链的代表——以太坊。

以太坊收据树_以太经典和以太坊哪个好_以太坊和以太经典未来哪个好

比特币的区块链架构主要围绕支持加密货币的实现展开。 虽然它具有一定的灵活性,但在支持加密货币以外的应用场景方面仍然非常有限。

区块链2.0的核心理念是将区块链作为可编程的分布式信用基础设施,支持智能合约应用,优化金融领域更广泛场景和流程的应用。 一个虚拟货币支持平台是有区别的。

比特币之后,出现了很多被称为区块链2.0的平台,其中最具代表性的就是以太坊平台。

以太经典和以太坊哪个好_以太坊和以太经典未来哪个好_以太坊收据树

以太坊系统结构图

下面讨论以太坊和比特币的架构不同的几个主要方面。

以太坊收据树_以太经典和以太坊哪个好_以太坊和以太经典未来哪个好

账户设计

以太坊收据树_以太经典和以太坊哪个好_以太坊和以太经典未来哪个好

比特币没有账户的概念。 每个用户的余额都是根据他们在区块链上的 UTXO 计算得出的。 以太坊的设计是将区块链作为管理对象状态转换的通用去中心化平台,账户是有状态的对象。 以太坊有两种账户:一种是外部拥有账户(EOA),另一种是合约账户。

所有外部账户都是我们一般意义上的用户账户,由私钥控制。

合约账户是一种特殊的可编程账户。 合约存在于以太坊区块链上,是代码(函数)和数据(状态)的集合。 合约由代码控制并由所有外部账户激活。

所有外部账户的状态都是余额,而合约账户的状态可以是余额、代码执行、合约存储。

以太坊网络的状态是所有账户的状态,由每个区块的交易来更新,需要在全网形成共识。 用户与以太坊区块链的交互需要通过账户的交易来实现。

以太坊收据树_以太经典和以太坊哪个好_以太坊和以太经典未来哪个好

区块链设计

以太坊收据树_以太经典和以太坊哪个好_以太坊和以太经典未来哪个好

比特币使用 Merkle 树将交易的哈希值形成二叉树。 顶级节点的哈希值相当于整个交易列表的指纹,可以用来验证交易列表。 以太坊区块链的每个区块不仅保存了交易列表,还保存了最新的状态。 以太坊的状态由一个键值表组成,其中键是地址,值是账户中声明的变量。

以太经典和以太坊哪个好_以太坊收据树_以太坊和以太经典未来哪个好

以太坊区块头中存储了3个根哈希值:一个是交易的Merkle根哈希值(比特币只存储了这个),一个是状态根哈希值,一个是收据根哈希.

与比特币的另一个区别是,以太坊区块链中的每个区块都保存了区块链编号和区块难度。

账户状态频繁变化,新账户频繁插入,密钥频繁插入和从存储中删除。 还要求树的根哈希只与树的数据有关,与更新顺序无关。 帕特里夏(Patricia)树就是满足这些要求的数据结构,以太坊使用的默克尔帕特里夏树存储数据。

Patricia 树或压缩前缀树是一种更节省空间的前缀树。 对于基数树的每个节点,如果该节点是唯一的子节点,则将其与父节点合并。

以太坊和以太经典未来哪个好_以太经典和以太坊哪个好_以太坊收据树

帕特里夏树示意图

以太坊收据树_以太经典和以太坊哪个好_以太坊和以太经典未来哪个好

PoW机制

以太坊收据树_以太经典和以太坊哪个好_以太坊和以太经典未来哪个好

以太坊吸取了比特币的教训,专门设计了一个非常不利于计算的模型。 它使用 I/O 密集型模型。 I/O慢,计算再快也没用。 它对 ASIC 不是那么有效。 以太坊的PoW(Proof of Work)算法称为Ethash算法(一种改进的Dagger-Hashimoto算法)。

ETHASH框架主要分为两部分,一是DAG的生成,二是利用Hashimoto计算最终结果。

以太经典和以太坊哪个好_以太坊和以太经典未来哪个好_以太坊收据树

ETHASH框架

DAG主进程

DAG分为三层:种子层、缓存层和数据层。 这三个级别是逐渐增加的。

以太经典和以太坊哪个好_以太坊收据树_以太坊和以太经典未来哪个好

以太经典和以太坊哪个好_以太坊和以太经典未来哪个好_以太坊收据树

缓存层计算过程示意图

以太坊和以太经典未来哪个好_以太坊收据树_以太经典和以太坊哪个好

数据层计算过程示意图

桥本主要过程

Hashimoto的整个过程是占用大量内存的,如下:

1个

头信息和随机数结合进行一次Keccak-512运算得到初始单向哈希值Mix[0],128字节。

2个

通过另一个函数(Fetch DAG),映射到DAG,得到一个值以太坊收据树,与Mix[0]混合得到Mix[1],循环64次后得到Mix[64],128字节。

3个

经过后处理过程,得到mix的最终值,为32字节。 经过计算,得出结果。

4个

与目标值比较,小于则挖矿成功。 难度值越大以太坊收据树,目标值越小,越难(前面需要多0)。

注:为了防止矿工,mix功能也进行了更新。

以太坊收据树_以太坊和以太经典未来哪个好_以太经典和以太坊哪个好

桥本主要流程示意图

验证过程

矿工将区块广播到网络后,如何验证区块以完成一定的工作量?

验证方案是使用hashimotoLight计算指定Nonce下的执行结果和摘要。 根据本地计算结果应该与区块的MixDigest值一致,结果低于给定的目标值target,则表示Seal验证通过,说明该区块完成了一定的工作量。

回到hashimotoLight方法,这个方法是直接使用缓存实时计算数据行参与校验,类似于hashimotoFull。 因为数据集也是通过缓存生成的,如果没有数据集,可以直接使用缓存计算。 这样,对于普通节点来说,只需要使用16MB的缓存就可以轻松完成PoW验证,并按需生成所需数据集的数据项。

以太坊收据树_以太经典和以太坊哪个好_以太坊和以太经典未来哪个好

计算和图灵完备性

以太坊收据树_以太经典和以太坊哪个好_以太坊和以太经典未来哪个好

以太坊作为一个通用的区块链平台,需要提供比比特币更强大的计算能力,因此选择了一个图灵完备的计算环境——以太坊虚拟机(Environment Virtual Machine,EVM)。 这意味着所有可以想象得到的计算,包括无限循环,都可以在 EVM 上完成。 以太坊采用经济的方法来保护以太坊平台:

以太坊要求每笔交易给出最大的计算步长,交易的发起方必须提供Gas作为交易费,供矿工将交易加入区块。

如果实际操作超过最大计算步长,计算将终止,交易手续费归挖出区块的矿工所有。

以太坊网络的每个节点都运行 EVM 并执行合约代码。

以太坊收据树_以太经典和以太坊哪个好_以太坊和以太经典未来哪个好

EVM高级语言

以太坊收据树_以太经典和以太坊哪个好_以太坊和以太经典未来哪个好

比特币不提供对高级语言的支持,而以太坊提供高级语言供用户编写智能合约。 以太坊的高级语言最终会被编译成EVM字节码(bytecode)在EVM中执行并部署在以太坊区块链上。 以太坊提供 3 种编程语言:Solidity、Serpent 和 LLL。

以太坊收据树_以太经典和以太坊哪个好_以太坊和以太经典未来哪个好

以太坊 P2P 网络

以太坊收据树_以太经典和以太坊哪个好_以太坊和以太经典未来哪个好

RLPx协议

以太坊节点之间使用 RPLx 编码和认证的通信传输协议来传输消息包。 节点可以在任何 TCP 端口上自由发布和接受连接,默认端口为 30303。

目前RLPx正式版实现了以下功能:单协议UDP节点发现、ECDSA签名UDP、加密握手/认证、节点持久化、加密/认证TCP、TCP帧处理。

耳语协议

Whisper 协议是用于 DApp 之间通信的通信协议。 Whisper结合了DHT(Distributed Hash Table)和分组消息系统(如UDP),所以它同时具有以上两种协议的特点。 Whisper 提供了多个索引,而不是单个记录,这意味着同一条记录可以有多个键,有些键可能与其他记录相同。 使用场景如下:

以太坊收据树_以太经典和以太坊哪个好_以太坊和以太经典未来哪个好

事件

以太坊收据树_以太经典和以太坊哪个好_以太坊和以太经典未来哪个好

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

根据一个事件名称和一些事件参数,可以分为两个系列:有索引的和没有索引的。 索引的(最多 3 个)是与事件的 Keccak 哈希签名一起用作问题的日志记录; 未索引的用于组成事件的字节数组。

以太坊的拆解到此结束。 以太坊开创了智能合约时代,将区块链从1.0时代带入了2.0时代。 下一期,我们将进入区块链3.0时代:价值互联网。 如果区块链可以连接世界,会是什么样子? 敬请期待~

以太经典和以太坊哪个好_以太坊收据树_以太坊和以太经典未来哪个好