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

区块链学习 专栏收录该内容
5 篇文章 0 订阅

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


账户类型

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树的高度被有效的降低,访问内存的次数减少。路径压缩适用于键值分布稀疏的情况,此时压缩效果好。

在这里插入图片描述

Merkle Patricia Tree:

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

功能:防篡改,查询余额

以太坊使用的是Modified MPT

在这里插入图片描述

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


ETH交易树、收据树

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

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

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

使用举例:若要查找过去一段时间与某智能合约相关的交易,先查哪个区块的header中bloom filter含有此交易,若含有,则去此区块内的所有交易的收据树中查bloom filter。好处:可以快速过滤掉大量无关的区块。
在这里插入图片描述


区块结构

Header结构
在这里插入图片描述
区块结构:
在这里插入图片描述


ETH GHOST

没成为最长合法链的节点为叔父区块,仍能获得奖励,最长合法链中包含叔父区块也会获得额外奖励1/32 * 3。一个区块最多可以包括两个叔父区块。此机制可以激励出现分叉后及时合并。
在这里插入图片描述

叔父区块必须在七代以内与当前区块有共同祖先,才能成为叔父区块。超过七代就再不认可。叔父区块的奖励也逐渐减少至2/8。并且只给分叉所在链的第一个区块有奖励,后面的区块没有奖励。鼓励尽早合并临时性分叉。
在这里插入图片描述

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


ETH 挖矿算法

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

难度调整
在这里插入图片描述

在这里插入图片描述

难度炸弹:
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值