什么是事件Evnet?
就是以EVM日志基础设备提供一个接口,当被事件调用时,出发参数存储到日志中,其与合约地址关联,并记录到区块链中。关系就是:区块链是打包交易区块组成的链条,每一个交易会包含0到多个记录,日志代表智能合约所触发事件。
DAPP中,监听了事件,当事件发生时,会回调。当然要注意的就是,日志和事件在合约内是无法被访问,即使是创建日志的合约。
在Solidity代码中,使用event关键字来定义一个事件,如:
eventEventName(addressbidder,uintamount);
这个用法和定义函数式一样的,并且事件在合约中同样可以被继承。触发一个事件使用emit(说明,之前的版本里并不需要使用emit),如:
过去12小时全网爆仓2331.93万美元:金色财经报道,数据显示,过去12小时全网爆仓2331.93万美元,其中,多单爆仓1235.97万美元,空单爆仓1095.97万美元。[2023/7/2 22:12:49]
emitEventName(msg.sender,msg.value);
触发事件可以在任何函数中调用,如:
functiontestEvent()public{emitEventName(msg.sender,msg.value);}
监听事件
通过上面的介绍,可能大家还是不清楚事件有什么作用,点击”UpdataInfo”按钮之后,虽然调用智能合约成功,但是当前的界面并没有得到更新。使用事件监听,就可以很好地解决这个问题,让看看如何实现。
Web3 Working Group完成200万美元融资:12月1日消息,加密和DeFi基础设施教育非营利组织Web3 Working Group宣布完成200万美元融资,区块链公司Arweave、The Graph、Livepeer和Akash等参投。该组织创始人Amy James和Devon James夫妇曾是开源索引和文件库项目Open Index Protocol创始人。
Web3 Working Group计划推出一系列入门教育视频帮助更多人了解加密概念基本知识,包括公钥密码学和区块链技术等,旨在通过教育内容填补行业知识空白。[2022/12/1 21:16:26]
修改合约,定义事件及触发事件
草莓音乐节发布首款数字藏品:8月30日消息,今日摩登天空发布首款基于草莓音乐节IP打造的数字藏品“草莓音乐节数字藏品盲盒”,该藏品以草莓音乐节视觉设计为灵感。据悉,该藏品基于百度超级链开发,购买者可拥有音乐节多项权益。(Odaiy)[2022/8/30 12:57:53]
先回顾一下合约代码:
pragmasolidity^0.4.21;contractInfoContract{stringfName;uintage;functionsetInfo(string_fName,uint_age)public{fName=_fName;age=_age;}functiongetInfo()publicconstantreturns(string,uint){return(fName,age);}}
孙正义:如果独角兽创始人不接受较低的估值,创业寒冬可能会持续更长时间:8月8日消息,软银集团发布截至6月30日的2022财年第一财季财报。软银集团首席执行官孙正义表示,一些独角兽创始人不愿意在新的融资审议中接受较低的估值,这一事实让他相信非上市公司的“冬天可能更长”。独角兽公司的领导者仍然相信他们的估值,不会接受看到他们的估值低于他们的想象。
此前消息,软银第一财季创纪录亏损234亿美元,因投资组合价值缩水。[2022/8/8 12:09:46]
首先,需要定义一个事件:
eventInstructor(stringname,uintage);
这个事件中,会接受两个参数:name和age,也就是需要跟踪的两个信息。
然后,需要在setInfo函数中,触发Instructor事件,如:
functionsetInfo(string_fName,uint_age)public{fName=_fName;age=_age;emitInstructor(_fName,_age);}
在web3与智能合约交互实战时,点UpdataInfo按钮之后,会调用setlnfo函数,触发Instructor事件。
使用Web3监听事件,刷新UI
现在需要使用Web3监听事件,刷新UI。先回顾下之前的使用Web3和智能合约交互的代码:
<script>if(typeofweb3!=='undefined'){web3=newWeb3(web3.currentProvider);}else
{web3=newWeb3(newWeb3.providers.HttpProvider("http://localhost:7545"));}web3.eth.defaultAccount=web3.eth.accounts;varinfoContract=web3.eth.contract(ABIINFO);varinfo=infoContract.at('CONTRACTADDRESS');info.getInfo(function(error,result){if(!error){$("Billions项目组button").click(function(){info.setInfo($("Billions项目组age").val());});</script>
现在可以不需要info.getInfo()来获取信息,而改用监听事件获取信息,先定义一个变量引用事件:
varinstructorEvent=info.Instructor();
然后使用.watch()方法来添加一个回调函数:
instructorEvent.watch(function(error,result){if(!error){$("#info").html(result.args.name+'('+result.args.age+'yearsold)');}else{console.log(error);}});
大家好,这里是链客区块链技术问答社区。链客,专为开发者而生,有问必答! 当前区块链世界的痛点 当前区块高度距离LTC减半时间剩余130天:金色财经报道,BTC.com数据显示,当前区块高度距离L.
1900/1/1 0:00:00仅在三笔交易中,就有450,000枚以太币(ETH)转移到Coinbase,这只能说是加密货币市场上的一件大事。这种大量涌入交易所的加密货币代表了有史以来最大的以太币运动之一.
1900/1/1 0:00:00ShibaInu社区继续希望SHIB能够在不久的将来出现显着的价格反弹,达到某些高价位。在撰写本文时,去中心化meme代币的价格中仍然存在许多零,社区成员一直在关注0.01美元的价格点.
1900/1/1 0:00:00区块链追踪公司Lookonchain(@lookonchain)今天早上发布了关于狗狗币(DOGE)的推文.
1900/1/1 0:00:00SHIBburn推特网站报道称,烧毁率下降了近90%。上周共有26笔交易销毁了1,178,830,489个SHIB代币.
1900/1/1 0:00:00领先的数字资产交易所Tarmex今日宣布BoneShibaSwap(BONE)和BabyDogeCoin(BABYDOGE)上市.
1900/1/1 0:00:00