8.2 什么是事件主题
主题是用来把事件索引化(index)的数值。没有主题,就不能搜索事件。只要调用一个事件,就生成一个默认主题(被视为事件的第一个主题)。一个事件最多可以有四个主题。主题总是按照相同顺序生成。可以使用一个或者多个主题检索事件。
第一个主题是事件签名。剩下三个主题是索引化的参数数值。如果参数是字符串、字节或者数组,则主题是它的keccak-256哈希。
下面通过一个例子来帮助读者理解主题的含义。假设有一个事件采用这个形式:
这里共生成如下四个主题:
·0xb62a11697c0f56e93f3957c088d492b505b9edd7fb6e7872a93b41cdb2020644。 这是第一个主题,它用web3.sha3("ping(string,int256,uint256,string,int256)")生成。可以看到所 有类型都采用规范格式。
·0x30ee7c926ebaf578d95b278d78bc0cde445887b0638870a26dcab901ba21d3f2。这是第二个主题,它用web3.sha3("RandomString")生成。
·第三个和第四个主题分别是 0x000000000000000000000000000000000000000000000000000000000000000c和 0x0000000000000000000000000000000000000000000000000000000000000017,即以十六进 制表示的数值。它们分别用EthJS.Util.bufferToHex(EthJS.Util.setLengthLeft(12,32))和 EthJS.Util.bufferToHex(EthJS.Util.setLengthLeft(23,32))计算。
以太坊节点将在内部使用主题创建索引,这样很容易基于签名和索引化的数值找到事件。
假设想获取前面事件的事件调用,其中第一个实参是Random String,第三个实参是23或者78,则可以用web3.eth.getFilter找到它们:
所以这里让节点从区块链返回0x853cdcb4af7a6995808308b08bb78a74de1ef899 合约地址发出的全部事件,其第一个主题是 0xb62a11697c0f56e93f3957c088d492b505b9edd7fb6e7872a93b41cdb2020644,第二个主题 是0x30ee7c926ebaf578d95b278d78bc0cde445887b0638870a26dcab901ba21d3f2,第三个主 题是0x0000000000000000000000000000000000000000000000000000000000000017或者 0x000000000000000000000000000000000000000000000000000000000000004e。
在程序代码中,注意主题数组数值的顺序。顺序很重要。
来源:我是码农,转载请保留出处和链接!
本文链接:http://www.54manong.com/?id=542
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })(); '); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
8.2 什么是事件主题相关推荐
- SQL Server扩展事件(Extended Events)-- 将现有 SQL 跟踪脚本转换为扩展事件会话
SQL Server扩展事件(Extended Events)-- 将现有 SQL 跟踪脚本转换为扩展事件会话 如果您具有想要转换为扩展事件会话的现有 SQL 跟踪脚本,则可以使用本主题中的过程创建等 ...
- java开源库web3j的以太坊过滤器(filter)和智能合约事件(event)教程
2019独角兽企业重金招聘Python工程师标准>>> web3j过滤器提供以太坊网络发生的某些事件的通知,对java和安卓程序员来说很有用.在Ethereum以太坊中支持三类过滤器 ...
- 金融情报挖掘:面向公开文本的期货事件聚合与传导因素分析
金融情报挖掘是情报领域的一个重要分支,通过对金融领域信息进行提取和分析,发现关联线索,对传导关联进行建模,能够挖掘出市场变动的规律,最终辅助决策. 例如,国内外资本市场,衍生品市场热点不断,如&quo ...
- 开源中国 精彩回顾_如何撰写精彩的事件回顾
开源中国 精彩回顾 您已举行并举行了一个活动. 恭喜! 怎么办? 活动结束后的总结和报告是您的社区和与会人员跟踪关键思想和要点的有用方法,这些思想和要点可能会影响他们的沟通,协作和做出未来的决策. 活 ...
- 词干抽取java实现_LinkedIn文本分析平台:主题挖掘的四大技术步骤
LinkedIn前不久发布两篇文章分享了自主研发的 文本分析平台及主题挖掘 文本 在机器学习和自然语言处理等领域,主题挖掘是寻找是主题模型,主题模型是用来在一系列文档中发现抽象主题的一种统计模型.如果 ...
- 【干货】玩运营不可不知的经典“事件营销”案例
嘉宾一: 尝试归纳事件营销中具备二次传播基因的几个要素,尤其是在源事件与传播人群心态几方面. 例:新浪微博的一个酬房找狗贴,被转发过40万 转发量远超前四,当列为转发第一. 关键字解读: 源事件:狗. ...
- 编写一个IDEA插件之:事件监听
事件监听,我们最熟悉不过的就是开发APP时,监听按钮点击事件.手指触摸及移动事件.网络状态事件等等.事件监听大多通过观察者模式实现,首先API调用者不需要知道后台是如何检测出网络状态不可用的,而只需要 ...
- 浅谈领域事件及其应用
前言:好久没更新博客啦.这阵子刚忙完,稍微空暇,就想分享下在开发中用过的领域事件.因为大家做微服务的,基本上都会用DDD去进行领域驱动设计.而领域事件是领域模型里一个很重要的概念.下面开搞,放心,不只 ...
- SpringBoot监听redis Key变化事件详解
键空间通知(keyspace notification) 一 .功能概览 键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis key变化的事件. 所有修改key键的命 ...
最新文章
- 《崛起的超级智能》入选中国好书2019年7月榜单
- Wireshark网络分析实例集锦(大学霸内部资料)
- 伪指令 .align 的含义
- Spring-BeanFactory源码分析
- editplus 快捷键
- 使用PLSQL 远程连接oracle数据库
- 用函数刷新页面内容比刷新页面要好
- (转)Hibernate框架基础——在Hibernate中java对象的状态
- 【零基础学Java】—对象的向上和向下转型(二十七)
- a标签href不跳转_HTML常用标签
- devc语言图形编程教程_devc编程软件程序怎么调试 devc调试步骤图文方法教程
- word转HTML 基本版
- Unity性能优化之物理引擎的优化(一)
- “特困生”卷出睡眠市场,疯狂氪金能不能氪出“好故事”?
- sel4 手册总结之介绍与内核服务和对象
- 测试局域网或wifi实际最大带宽
- 汇编语言之div命令
- 蓝桥杯2017国赛 瓷砖样式 dfs+map
- 攻防世界 WEB Web_python_flask_sql_injection
- 手机红外遥控器 求源码
热门文章
- python实现爬取非小号相关性(btc)数据
- php怎么判断qq内置浏览器,如何判断微信内置浏览器(JS PHP)
- 全球免费软件推荐(国外篇)
- Android 铃铛简单摇摆动画
- 论文笔记【A Comprehensive Study of Deep Video Action Recognition】
- 如何用ChatGPT高效完成工作
- cl 编译器环境配置问题
- Clustering by Passing Messages Between Data Points(Brendan J.Frey* and Delbert Dueck)例子
- 《黄聪:手机移动站SEO优化教程》2、PC端和手机移动端SEO优化区别
- 液晶弹性自由能计算_液晶材料预倾角与弹性常量的关系