美文网首页金马带你定投区块链区块链研习社程序员
以太坊技术黄皮书学习笔记7:区块之交易收据

以太坊技术黄皮书学习笔记7:区块之交易收据

作者: 西二旗李老师 | 来源:发表于2018-05-16 15:41 被阅读21次

    交易收据是为了方便交易的查询和简历索引或者创建零知识证据,他是个4元组,如公式1列出,其中Ru是交易累计消耗的gas数量,是个自然数,Rl是交易产生的日志,是由一些列日志元素O组成,Rb是关于日志的索引(Bloom

    Filter)是个256字节序,Rz是交易的状态码,自然数。公式2是对交易收据序列化的公式表示,使用的是RLP编码,这个之前章节已经详细的介绍过。

    公式4表示交易收据的日志是由一系列的日志元素组成的序列,公式5表示一个日志元素包含3类元素项,Oa表示日志者的地址,是20字节序,Qt是日志的主题,是由一系列主题构成,每个主题是32字节,Od表示任意长度的字节序。

    为了根据日志生成Rb,即关于日志的索引信息,我们定义了一个函数M(O),其定义如公式1,其大意是设定一个256字节的字节序Y,Y的大部分比特位为0,除了个别位为1,公式4,5,6就是为了给出比特位为1的位置,其中公式5的含义是,对x进行KEC

    hash运算,将得到的结果选取第i位对2048区域,得到的结果一定是在0到2048之间一个值,假设为k,然后根据公式4和6,对y的第k位设置为1,以此方式设定y的值,作为交易收据的索引Rb。因为y是256字节也就是2048个比特位,如公式7所示。因此此公式就是将日志做hash运算,然后选择第0,2,4位的值对2048取余数,将此结果作为新的256字节长的序列中比特位为1的比特位的下标。

    交易收据的代码和用于RLP编码和M操作的数据结构如下,有兴趣的同学可以自行学习代码:

    相关文章

      网友评论

        本文标题:以太坊技术黄皮书学习笔记7:区块之交易收据

        本文链接:https://www.haomeiwen.com/subject/wdnpdftx.html