其他分享
首页 > 其他分享> > 区块链技术与应用【肖臻老师】笔记整理之------17-ETH-交易树和收据树

区块链技术与应用【肖臻老师】笔记整理之------17-ETH-交易树和收据树

作者:互联网

每次发布交易的时候,区块里面的交易会组织成一棵交易树,也是一棵Merkle Tree

每个交易执行完会生成一个收据,记录交易的相关信息,交易树与收据树上面的节点是一一对应的。

增加收据树主要是因为以太坊的智能合约比较复杂,便于我们快速查找

从数据结构上讲,交易树和收据树都是MPT

交易树和收据树只把当前区块里的交易包含进去,状态数要把所有账户的状态包含进去

交易树和收据树有什么用呢?

  1. 提供Merkle Proof

  2. 所有与某个智能合约有关的交易,所有众筹事件。需要高效的查询效率,怎么办呢?

    • 引入了bloom filter数据结构

    • bloom filter:A Bloom filter is a data structure designed to tell you, rapidly and memory-efficiently, whether an element is present in a set. The price paid for this efficiency is that a Bloom filter is a probabilistic data structure: it tells us that the element either definitely is not in the set or may be in the set.

    • 生成一个简单的digest,它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难(或者说不支持删除操作)。可能会出现哈希碰撞

    • 每个交易完成之后会生成一个收据,这个收据里面就包含了bloom filter,记录这个交易的类型,地址等其他信息,发布的块头里面也有一个Bloom filter,是交易里所有bloom filter的一个并集。

    • 所以先去查找块头里面的信息,之后再去交易收据树里面的bloom filter进行查询,也可能都没有flase positive,好处是可以快速过滤掉大部分信息。

以太坊的运行过程可以看作是一个交易驱动的状态机。transcation driven state machine

状态树可不可以只存储与本次交易有关的账户状态的信息,这样会缩减很大的空间?

代码:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

bloom filter就是根据logs产生出来的

在这里插入图片描述

标签:区块,17,收据,filter,set,------,肖臻,bloom,交易
来源: https://blog.csdn.net/qq_38123961/article/details/116928551