以太坊学习笔记

一、以太坊架构

在这里插入图片描述
在这里插入图片描述

二、以太坊数据结构

1、区块头

区块头较为轻量,区块头的链接组成了一个轻量级的区块链,区块头中包含了 一系列的数据的数值、引用的数值以及便于验证的哈希值, 区块头总长度大约为 508Byte。由于轻量级的区块头产生了轻客户端软件快速通过以太坊网络进行区块 链的校验。

2、区块体

区块体较为重量级,整个区块体中包含了当前区块中的交易详细列表和叔块详 细列表,区块体的长度需要根据交易的多少进行确定,每个区块体大约为 20KB。

uncles :代表的是当前区块引用的叔块指针集。通过数组存储叔块指针集,每个 数组元素都指向一个叔块区块头结构体。

其中,交易哈希表的存在使得区块中的每笔交易确认存在,同时便于同步交易 信息;叔块列表的存在有效减少了以太坊电力资源的浪费,同时进一步增加了以太坊的安全性。

在以太坊中,严格规定叔父块必须是在当前区块的 7 代内有相同的祖先,同时 每隔一个区块的叔父块得到的奖励就依次递减 1/8,这是以太坊在较短出块时间减少分叉的一个策略。从博弈论的角度看,如果作恶者对以太坊网络进行攻击,由于叔块的引入,难度系数会相对比特币而言变得更加困难,同时由于叔块的奖励机制会使每个区块涉及到诸多矿工的共同利益,从而会促使更多人去维护以太坊获得更多利益,使得以太坊更为安全。

3、MPT数据结构

Merkle Patricia Tree(简称 MPT)是结合了默克尔树和前缀树两种树数据结构 的优点并经过以太坊定制化改造的数据结构,是以太坊中用来管理账户存储数据以及生成哈希交易集的重要数据结构。

MPT 树优缺点

采用 MPT 树存储,优点如下:

  • 可通过全局数据的根哈希实现共识,数据篡改会被快速识别并发现;
  • 可以查询任意历史区块对应时刻的所有数据;
  • 方便从指定区块开始同步数据,因为正如上面所说每个区块包含当时的所 有数据;
  • 方便区块回滚和重演,这在发生分叉和修正最长链时很有帮助。
  • 以太坊基于 MPT 树设计世界状态树记录所有账户的信息,每个账户挂载一 棵小树用于记录该账户的合约信息,该小树即存储树 storageRoot。

采用 MPT 树存储,缺点如下:

MPT 存储整个以太坊的数据信息,如果数据量不断增大,则搜索查询的时延也会不断增大。对于以太坊性能压力存在严峻的考验,如果任由数据量的增长,则以太坊的 TPS 则会越来越低,体现为合约执行性能的降低,研究表明该缺陷与以太坊底层的 levelDB 有着强相关性。

4、RLP数据结构

RLP 的主要目的就是解决以太坊中的类似交易以及区块这类结构体的编码问题;对基本的数据类型(例如整型,浮点型,布尔型等) 的编码则通常交由高层协议进行编码处理。

三、以太坊共识算法

1、POW

工作量证明(Proof of Work),简称 PoW,是以太坊网络节点通过提供算力争 夺记账权(挖矿),获取记账权的节点打包区块交易进行上链,最终通过广播保证 区块链网络的数据一致性的机制。

  • 优点:挖矿过程匿名化,无需许可,即所有人均可参与;作恶成本较高,作恶的成本远高于获取的收益。
  • 缺点:吞吐量较低,延迟过高,需要等待 PoW 难题破解;分叉较频繁,造成大量算力浪费。

2、POS

权益证明(Proof of Stake),简称 PoS。PoS 是通过质押以太币的方式参与区 块的验证替代 PoW 中的挖矿,以验证者替代矿工的而形成的一种共识机制。

优点:

  • 节省大量的算力和电力进行共识;
  • 吞吐量大,且延迟较低;
  • 作恶的成本较高。
    PoS 相对于 PoW 的安全性提高在于高程度地抵御【蹲点攻击】,通过分叉以及对攻击者的押金进行扣除的方式有效提高了安全性。
    其中,【蹲点攻击】是指作恶者具备足够的挖矿硬件算力,利用网络不断发生重组或者分叉,无休止地进行循环并持续后续攻击。

缺点:

  • 分叉链的成本较低,导致系统容易出现分叉;
  • 去中心化程度较低,参与验证需要一定的成本

3、Casper

Casper 指以太坊中的PoS共识算法。Casper与传统 PoS 的不同点在于,Casper 创建了一个机制,该机制用于惩罚以太坊中的所有作恶行为。

四、以太坊账户模型

1、普通账户

普通账户是指通过以太坊客户端或调用以太坊客户端的钱包应用创建的账户类 型,每个普通账户都具有一个控制账户所有权的私钥。 其中,私钥在创建账户时生成,并且有且仅有创建人知悉与控制。

2、合约账户

合约账户是指智能合约的地址标识,用于访问智能合约。合约账户可以被普通账户直接或间接触发,对以太币、智能合约进行操作与访问。合约账户也可以调用其他合约账户,并通过外部账户的直接或间接触发创建复杂 的执行路径完成外部账户的需求。

五、以太坊虚拟机

以太坊虚拟机(Ethereum Virtual Machine,简称 EVM)是一个强大的基于栈的虚拟沙盒,自动嵌入到每个完整以太坊节点中,负责执行合约字节码。EVM 对以太 坊协议至关重要,是以太坊系统的共识引擎核心模块。

猜你喜欢

转载自blog.csdn.net/nina_1314521/article/details/130035921