区块链学习笔记—以太坊Part1(ETH状态树、交易树、收据树、GHOST、POW)

本文内容为北京大学肖臻老师《区块链技术与应用》公开课课堂内容总结,文中图片取自肖老师公开课视频。

目录

  • 账户类型
  • ETH状态树
  • ETH交易树、收据树
  • 区块结构
  • ETH GHOST
  • ETH 挖矿算法


账户类型

Account-based ledger 以太坊,显式的体现账户余额

账户类型:

  1. 外部账户(普通账户)externally owned account,由公私钥控制,内容包括余额balance和nonce

  2. 合约账户 smart contract account,不能主动发起一个交易,内容包括code,storage

账户地址:160bits(20个bytes) 40个16进制数,由公钥取哈希,取前部160bits得到


ETH状态树

Patricia tree 压缩前缀树

相比于Trie树,Patricia树的高度被有效的降低,访问内存的次数减少。路径压缩适用于键值分布稀疏的情况,此时压缩效果好。

区块链学习笔记—以太坊Part1(ETH状态树、交易树、收据树、GHOST、POW)_第1张图片

Merkle Patricia Tree:

将Patricia tree的指针换为哈希指针。

功能:防篡改,查询余额

以太坊使用的是Modified MPT

区块链学习笔记—以太坊Part1(ETH状态树、交易树、收据树、GHOST、POW)_第2张图片

全节点在每次出现一个新的区块之后,都要新建一个MPT,但新MPT与旧MPT中绝大多数节点都是共享的。保留历史状态,而不是直接更改的原因:以太坊中容易出现分叉,因此需要保留历史状态进行回滚。换言之,为支持回滚,必须保留历史状态。


ETH交易树、收据树

交易树(MPT)、收据树(MPT),其节点是一一对应的。
收据树可以快速查询智能合约执行结果。
交易数和收据树只把当前区块中的交易组织起来、而状态树需要把系统中所有账户的状态都要包含进去。
每个区块间的交易树、收据树,都是相互独立的。

Bloom filter,高效的查找某个元素是否在一个大集合里面。对大集合的每个值取哈希,映射到一个向量中,得到大集合的digest摘要向量。查看某个元素是否在里面时,因为可能存在哈希碰撞,和另一个元素的映射相同,因此会出现误报,即元素可能不在里面,但是以为在里面。但是不会出现在里面,但检测不出来的情况。这称为false positive,即可能误报,但不会漏报。但是简单的Bloom filter不支持删除操作。

以太坊中,每个交易执行结束后会形成一个收据,收据中包含一个bloom filter,记录交易的类型、地址等信息。发布的区块的块头里有一个总的bloom filter,是本区块内所有交易的bloom filter的并集。

使用举例:若要查找过去一段时间与某智能合约相关的交易,先查哪个区块的header中bloom filter含有此交易,若含有,则去此区块内的所有交易的收据树中查bloom filter。好处:可以快速过滤掉大量无关的区块。
区块链学习笔记—以太坊Part1(ETH状态树、交易树、收据树、GHOST、POW)_第3张图片


区块结构

Header结构
区块链学习笔记—以太坊Part1(ETH状态树、交易树、收据树、GHOST、POW)_第4张图片
区块结构:
区块链学习笔记—以太坊Part1(ETH状态树、交易树、收据树、GHOST、POW)_第5张图片


ETH GHOST

没成为最长合法链的节点为叔父区块,仍能获得奖励,最长合法链中包含叔父区块也会获得额外奖励1/32 * 3。一个区块最多可以包括两个叔父区块。此机制可以激励出现分叉后及时合并。
区块链学习笔记—以太坊Part1(ETH状态树、交易树、收据树、GHOST、POW)_第6张图片

叔父区块必须在七代以内与当前区块有共同祖先,才能成为叔父区块。超过七代就再不认可。叔父区块的奖励也逐渐减少至2/8。并且只给分叉所在链的第一个区块有奖励,后面的区块没有奖励。鼓励尽早合并临时性分叉。
区块链学习笔记—以太坊Part1(ETH状态树、交易树、收据树、GHOST、POW)_第7张图片

主链仅检查叔父区块是否是合法产生的,即挖矿难度是否正常,以此确认是否是叔父区块,但是不执行叔父区块里面的交易,也不检查里面交易的合法性。


ETH 挖矿算法

Pow -> Pos Proof of stake转变,因课程发布时间较晚,所以讲授的内容是POW。

难度调整
区块链学习笔记—以太坊Part1(ETH状态树、交易树、收据树、GHOST、POW)_第8张图片

区块链学习笔记—以太坊Part1(ETH状态树、交易树、收据树、GHOST、POW)_第9张图片

难度炸弹:
区块链学习笔记—以太坊Part1(ETH状态树、交易树、收据树、GHOST、POW)_第10张图片

区块链学习笔记—以太坊Part1(ETH状态树、交易树、收据树、GHOST、POW)_第11张图片

你可能感兴趣的:(区块链学习,区块链,以太坊)