首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >交易Trie与收据Trie的关系

交易Trie与收据Trie的关系
EN

Ethereum用户
提问于 2016-06-10 20:01:51
回答 2查看 8.1K关注 0票数 25

通过阅读黄纸,我可以看到每个块头都包含用于事务和事务收据的trie根目录的Keccak256散列。我很难理解他们是如何在哪里被创造出来的。

给定块的事务Trie和交易收据Trie有什么关系?

当世界状态通过遍历事务来更新时,事务和事务收据是否被存储在各自的尝试中?

EN

回答 2

Ethereum用户

回答已采纳

发布于 2016-06-13 10:10:38

事务尝试和事务接收尝试确实是具有独立根的独立数据结构,存储在区块链头上,在目的和内容上都不一样。

目的性

  • 事务尝试:记录事务请求向量
  • 事务收据尝试:记录事务结果

含量

用于组成事务Trie (黄纸)第4.3节的详情)的参数:

  • 现在,
  • 汽油价格,
  • 气体限制,
  • 接受者,
  • 转移价值,
  • 事务签名值,以及
  • 帐户初始化(如果事务是契约创建类型的话),或者事务数据(如果事务是消息调用)

用于组成事务收据Trie [黄纸]第4.4.1节的详情的参数:

  • 交易后状态,
  • 累积使用的气体,
  • 通过执行事务创建的一组日志,以及
  • 由这些日志中的信息组成的Bloom过滤器
票数 17
EN

Ethereum用户

发布于 2020-01-03 11:54:50

https://blog.ethereum.org/2015/11/15/merkling-in-ethereum中,Vitalik给出了一个使用不同树(事务、收据、状态树)的例子。

  • 此事务是否包含在特定块中?
  • 告诉我X型事件的所有实例。本地址在过去30天内发出的达到目标的众筹合同)
  • 我帐户的当前余额是多少?
  • 这个账户存在吗?
  • 假装在这个合同上运行这个交易。输出结果是什么?

第一个由事务树处理;第三个和第四个由状态树处理,第二个由接收树处理。前四项计算非常简单;服务器只需查找对象,获取Merkle分支(从对象到树根的散列列表),然后用分支返回到轻量级客户机。第五个问题也是由状态树处理的,但是计算方法要复杂得多。在这里,我们需要构造一个所谓的Merkle状态转移证明。从本质上讲,它是一种证明,“如果你用根S在状态上运行事务T,结果将是一个带有根S的状态,有日志和输出O”(因为每个事务都是一个函数调用,所以“输出”作为一个概念存在,这在理论上是不必要的)。

收据基本上是给证明日志和事件的。

票数 5
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/5888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档