专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

理解以太坊事件日志

  前言
  当你在区块链浏览器上查询交易时,是否只是查看概览和内部交易?那么事件日志呢?是否在不起眼的角落被你忽略了。
  交易事件日志对于用户以及开发者来说实际上都是至关重要的。通过触发事件不仅能将链上智能合约的交易通知给外界,还能让智能合约开发者对合约进行测试、保证合约安全。
  接下来就帮助大家详细理解下关于以太坊的事件日志以及关于它所延伸出来的一些基础知识。事件
  一、什么是事件
  事件是能方便地调用以太坊虚拟机日志功能的接口。
  而Solidity事件就是EVM的日志功能之上的抽象。应用程序可以通过以太坊客户端的RPC接口订阅和监听这些事件,允许我们打印在区块链上的信息。
  所以通过Solidity事件,我们可以做到:测试智能合约中的特定变量索引变量以重建存储状态监听事件用于改变前端状态
  创建子图以更快地读取数据
  二、声明和触发事件
  我们以官方ERC20合约代码为例,在IERC20。sol文件中通过event关键字进行声明。
  我们可以把事件看作是一个特殊类型,上面的代码中我们创建了一个名为Transfer的事件,在该事件中有两种参数类型:有索引(indexed)和无索引。其中from和to参数是有索引的,而value参数是没有索引的。
  在ERC20。sol的transfer函数中通过emit关键字触发相应事件(之前的版本里并不需要使用emit)。
  日志
  一、什么是日志
  在以太坊中,日志是用来存储事件。当事件被调用时,会触发参数存储到交易的日志中。其不能被智能合约访问,但是可以提供关于交易和区块中发送的信息。
  我们随意点开一条交易(0x477ed7208127bea597142622d52df46d3e4967835bd3609995581eb5aaeeec3e),查看其日志Logs。
  通过日志我们可以将日志分为四个部分:
  1、Address:地址。即发出事件的合约地址或者账户的地址。
  2、Name:名字。即触发的事件名及其参数。
  3、Topics:主题。即事件中有索引(indexed)的参数。
  4、Data:数据。即事件中没有索引的参数。
  二、日志记录中的主题
  上面我们有说到主题(Topics),接下来我们详细说下主题。
  每个日志记录都包含主题(topics)和数据(data)。主题是32字节(256位),用于描述事件中发生的事情。不同的操作码(LOG0LOG1LOG2LOG3LOG4)用以描述需要包含在日志记录中的主题数。
  EVM中有5个操作码用于触发事件日志并创建日志记录,分别是LOG0,LOG1,LOG2,LOG3以及LOG4,它们用于描述智能合约中的事件,例如代币的转移、所有权的变更等。LOG1即包含了一个主题,而单个日志记录中最多可以包含的主题就是LOG4的四个主题。
  Topics0通常为发生事件名称的签名(keccak256的哈希值),包括其参数的类型(address,uint256等),Topics1为第一个索引参数的值,Topics2为第二个索引参数的值。
  该主题中Topics0的值为0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef,其事件为上一行Name的内容。
  而我们对事件Transfer(address,address,uint256)进行keccak256加密后得到的结果和Name的值一样,说明Name的值的确为事件名称的签名。当然,有一个例外是没有事件签名的,那就是触发匿名事件时。
  Topics1就是第一个索引参数的值,即form地址的值。Topics2就是第二个索引参数的值,即to地址的值。从内部调用分析也能看到的确是这样。
  主题只能包含32个字节的数据,所以像可能超过32个字节的内容如数组、字符串等的内容不能用作主题,如果要尝试包含大于32个字节的数据,则该主题必须进过hash计算,所以超过32个字节后最好当做数据包含在日志记录中。
  三、日志记录中的数据
  日志记录除了主题,还有一部分内容就是数据,数据就是事件的非索引参数的ABI编码或者hash值,我们可以使用Dec或Hex查看数据data的值。
  数据和主题都有各自的优劣:主题是可以搜索到的,数据不能搜索到。数据比主题所需要的gas少。
  由于主题是带有索引的参数,所以我们可以直接在日志中进行搜索,而数据是ABI编码或hash值,所以不能直接搜索。
  根据黄皮书我们可以找到日志的相关gas成本,日志的基础费用是375gas,每个主题也是375gas,而数据字节的成本是8gas。
  我们可以通过黄皮书知道日志的gas费用非常便宜,一个ERC20代币转账事件的成本最多只花费1756gas(日志基础的375gas,转账事件3个主题的37531125gas,数据字节最大的32字节为832256gas),而标准以太币的转账需要花费21000gas。当然了,前面说的只是日志记录操作自身的成本,智能合约开发中不能单纯值计算日志记录操作的成本,但在开发中,我们可以仅在状态变量中保存智能合约所需要使用的数据,其他的就用事件来处理,这样能省下很多的gas费用。
  触发事件
  接下来以一个实例进行说明触发事件,下面的代码实现了符合ERC20标准的代币合约所使用的转账事件。
  由于上面不是一个匿名事件,所以第一个主题将包含事件的签名(签名时只需要参数的类型)。
  然后我们看一下该事件的参数,其中from和to地址都是有索引的,value值是没有索引的。所以from和to地址会被当成主题,而value值会被当成数据。
  在3。3节中我们说到过主题能被搜索,而数据不能,所以我们能在日志中搜索from地址和to地址值的相关转账日志,却不能够搜索到转账金额为value值的转账日志。由于该事件具有3个主题(事件的签名,from,to),所以该日志记录操作将使用LOG3操作码。
  那如果我们想要找到数据的内容呢?这里就需要知道操作码在EVM中的参数。LOG3虽然包含3个主题,在EVM中却有5个参数。
  如果要读取数据的内容,通过以下的方式就可以从内存中读取事件数据了。
  钓鱼
  一、事件在钓鱼中的使用
  前面介绍了那么多日志事件,那这些是如何和钓鱼联系到一起的呢?攻击者一般会通过日志事件伪装成交易所或者名人等给受害者转币(该币无实际交易价值,是钓鱼代币),受害者看到是交易所或者名人转来的代币则放松警惕,此时攻击者会引导受害者到有钓鱼代币的池子中,受害者看到该代币交易价值极高,会立刻授权进行交易,而此时就陷入了攻击者设置的圈套,攻击者会让受害者授权从而盗取走受害者钱包中的钱。
  下图就是之前发生的一起钓鱼事件,攻击者伪装成币安热钱包给其他人转钓鱼代币。
  我们可以在BSC浏览器上通过标签找到官方地址。
  通过查询,发现BinanceHotWallet6地址正是0x8894e0a0c962cb723c1976a4421c95949be2d4e3
  由于浏览器记录是根据事件来的,所以说topics1的值即sender的值就是0x8894e0a0c962cb723c1976a4421c95949be2d4e3
  二、复现
  下下面是BEP20的伪代码,以BNBChain主网为例进行复现,攻击者创建一个名为PhishingToken的钓鱼代币。
  如下图所示,新增Binance参数其值为0x8894E0a0c962CB723c1976a4421c95949bE2D4E3
  然后,我们要修改如下图红色标记代码,将emit触发事件中的sender地址修改为Binance。
  部署好合约(https:bscscan。comaddress0x7c08aa19b8da2c14591506d7d3c385fc702e0630)后调用transfer函数将钓鱼代币转发给受害者。
  查看交易信息,发现这里的from地址并不是攻击者的地址0x95E2Ea34dEB5C0954B91a47f459770D20568A15B,而是Binance:HotWallet6的地址0x8894E0a0c962CB723c1976a4421c95949bE2D4E3
  查看Logs日志,Topics1记录的sender地址同样也是BinanceHotWallet6地址,而Topics2记录的recipient就是受害者的地址了。
  总结
  细节决定成败,不要认为事件日志是微不足道的沧海一粟。在区块链世界越是细节的地方越容易被黑客攻击利用,往往需要更加谨慎小心。同时需要注意的是,我们也不能因为日志所展示出来的内容掉入骗子设计好的骗局中。再次提醒大家,不要随意点击陌生链接,更不要随意授权他人。当我们更加深入理解事件日志的时候,才能更好的防止自己上当受骗。参考文献《Solidity中文文档》《Solidity中的事件和日志》《UnderstandingeventlogsontheEthereumblockchain》《以太坊黄皮书》
  fromhttps:www。freebuf。comarticlesblockchainarticles349885。html

突然暴涨!大规模爆仓中国基金报记者李智在美国通胀降温等因素的影响下,加密货币市场迎来复苏迹象。作为全球市值最大的加密货币,近日比特币价格一度突破21000美元大关,飙涨至两个月来高位。比特币的上涨提振浙一年,属于你的治愈时刻是什么?又一次接近尾声这一年或许你收获过喜悦感动和成功也有过失落沮丧和彷徨但总有那样一些时刻如星辰般闪耀回首这一年我们见证了很多不平凡的大场面也目睹了一件件发生在身边的小事回望这一年往事幕2022,重温她们的高光时刻站在岁末的渡口我们挥别2022这一年无数优秀女性在各自的领域奋力绽放惊艳了时光让我们沿着时间的脉络共同回顾这一年属于她们的高光时刻收获满满的一年即将过去希望与梦想正向我们走来愿你我松江市民看过来!佘山度假区这些景点新春惠民福利大放送在新春到来之际为积极开展守沪者留沪稳岗送温暖活动佘山度假区不少景点推出了新春惠民福利活动下面一起来看看都有哪些精彩吧上海佘山国家森林公园上海佘山国家森林公园在在春节期间带来了门票半生娃福利迎新贺岁,助力快乐分娩当孕育着小生命的您,碰上了后疫情时代,面临的将是从未有过的紧张焦虑和困惑,在这个特殊时期团结与信心尤为重要。为了让更多的孕妈妈做好孕期健康管理,安全顺利迎接宝宝来临,荥阳妇幼孕妇学福利来啦丨超全面石墨烯检测方法大汇总1。显微镜法1)用扫描电子显微镜(SEM)扫描隧道显微镜(STM)透射电子显微镜(TEM)来表征生长域和表面形态。2)用原子力显微镜(AFM)来表征表面形态厚度层的均匀性畴生长。2太痛心了!8岁女童意外烧伤毁容手指截肢近日,一条视频引起了不少网友的关注因一场意外的火灾湖南长沙的一名8岁女童小金栎被烧伤导致毁容双手手指被截肢据小金栎妈妈描述事发前孩子和另一个小孩就在她隔壁玩两个小孩手中可能有打火机能通话能监测老人摔倒中国造斩获CES创新奖视频加载中日前,家庭机器人公司Enabot赋之科技(深圳)宣布,其最新发行的旗舰产品EBOX家庭守护机器人获得2023年CES机器人和智能家居两个品类的创新奖。EBOX搭载了升级版哪种主食最不健康?是米饭吗?医生劝告7种主食,尽量少吃米饭是我国最主要的主食之一,尤其是南方人,餐桌上从小到大都是白米饭,对于一些人来说,如果一餐没有吃白米饭,就感觉没吃饭一样。很多人看到网上有人说米饭是最不健康的主食,那么我们吃了一Python爬虫面向知乎的答案提取和图片下载需求描述爬取知乎的答案,爬取并下载一个问题下所有回答中的图片。实现平台开发工具PyCharm2017,语言版本Python3。6,Chrome谷歌浏览器。基本原理1。发送请求,获取与喜茶蜜雪一起出海,特色茶饮品牌如何另辟蹊径双增对话双增对话柠檬茶车间文张威编辑赵文元运营苏倩茹张思妍茶饮,这个本地色彩浓厚的业态,如何出海走向全球,中国新生代的企业家们正在做更多尝试。除了借鉴全球化餐饮连锁企业过往成功经验,还需要
乡村振兴弱鸟要先飞描绘乡村振兴新画卷当下,各地在高质量发展的道路上,多措并举推动乡村振兴不断加速,全力巩固拓展脱贫攻坚成果。但笔者在基层走访,也发现有些地区农村乡村振兴实践存在问题,尤其条件较差的偏选择一种职业,也就是选择一种生活杨绛传经典句子摘抄第2期01hr选择一种职业,也就是选择一种生活。02hr人生只有一次,一定要选择自己喜欢做的事,不要给自己留下遗憾。图片来源于网络侵删03hr做自己喜欢做的事情,成长无解这世间思绪万千,可偏有一种是这一路走来都时常在我脑海跳跃的那些像我的人我似乎怀揣着生厌的情感,可又有一种看见你,我便觉得我多少融入了这个世界的释然。我最先了解自己,从开始有了竞争意请记住,就算爱得再深,也要懂得拒绝深深爱过一个人以后,才知道爱情有着重新塑造一个人的力量。就像王菲的我愿意唱道愿意为你,我愿意为你,放弃我姓名。我们在爱情中为了双方的磨合和情感的持续,可以放弃一些东西,为对方改变自这几点真的得戒掉之前看海上钢琴师,有句话我很喜欢阻止我脚步的,并不是我所看得见的东西,而是我所无法看见的东西。而隐匿在我们身上的小毛病,正是那些所无法看见的东西。一旦习惯,便难以解脱,直到把生活搞面面相觑(小说连载之一)贾庆高这个人很有意思,用他自己的话说,他的名字跟贾宝玉有一拼,贾宝玉出身官宦之家,看似宝贝得不得了,实际上颠沛流离,形单影只青灯古佛了残生,而他贾庆高,看似清高,实际上并无清名。这15年磨一剑!张益唐111页零点猜想论文终于来了编辑编辑部新智元导读从孪生素数猜想,到郎道西格尔零点猜想,这个了不起的男人,他真的被闪电击中了两次!昨天,著名华裔数学家张益唐教授在攻克数学界著名难题之一郎道西格尔零点猜想问题的道热饭开锅众人评价faker世界赛生涯,姿态这个人纯北美战神对于绝大多数的游戏爱好者们而言,肯定都对英雄联盟这款游戏都不陌生了,英雄联盟作为目前电竞圈最经典的一款MOBA竞技游戏,凭借着其独特的MOBA游戏玩法,时至今日依旧备受广大网友们追坐收渔利美国成为欧盟第二大天然气供应国据俄罗斯媒体11月3日报道,欧盟委员会负责经济事务的执行副主席东布罗夫斯基斯当天表示,由于俄罗斯天然气供应量减少和美国液化天然气交付量增加,美国现在已经成为仅次于挪威的欧盟第二大天国际锐评中国的北斗成为世界的北斗我确信北斗系统能够为国际发展作出贡献,特别是北斗系统能为努力实现可持续发展目标的发展中国家提供支持。日前,全球卫星导航系统国际委员会第十六届大会在阿联酋阿布扎比举行,巴基斯坦代表霍江山就是人民(朗诵诗)一语道破天机东风劲吹把文明万载合法性诠释人在天地间江山在心间与劳动者共藏不露民安宇宙安风雨同舟觉醒有心人独立潮头不须向器世间索取什么什么不是人的血肉向有情世间发出抱怨来训诫也非森罗
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网