区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > KuCoin > 正文

TIN:搞懂事件的使用,详细解读Solidity事件Event_NAME币

作者:

时间:

什么是事件Evnet?

就是以EVM日志基础设备提供一个接口,当被事件调用时,出发参数存储到日志中,其与合约地址关联,并记录到区块链中。关系就是:区块链是打包交易区块组成的链条,每一个交易会包含0到多个记录,日志代表智能合约所触发事件。

DAPP中,监听了事件,当事件发生时,会回调。当然要注意的就是,日志和事件在合约内是无法被访问,即使是创建日志的合约。

在Solidity代码中,使用event关键字来定义一个事件,如:

eventEventName(addressbidder,uintamount);

这个用法和定义函数式一样的,并且事件在合约中同样可以被继承。触发一个事件使用emit(说明,之前的版本里并不需要使用emit),如:

emitEventName(msg.sender,msg.value);

触发事件可以在任何函数中调用,如:

functiontestEvent()public{emitEventName(msg.sender,msg.value);}

监听事件

通过上面的介绍,可能大家还是不清楚事件有什么作用,点击”UpdataInfo”按钮之后,虽然调用智能合约成功,但是当前的界面并没有得到更新。使用事件监听,就可以很好地解决这个问题,让看看如何实现。

修改合约,定义事件及触发事件

先回顾一下合约代码:

pragmasolidity^0.4.21;contractInfoContract{stringfName;uintage;functionsetInfo(string_fName,uint_age)public{fName=_fName;age=_age;}functiongetInfo()publicconstantreturns(string,uint){return(fName,age);}}

首先,需要定义一个事件:

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);}});

标签:INFONAMETINVENblockchain.infoNAME币Tinfoil FinanceSixEleven

KuCoin热门资讯
GER:Voyager 的最新举动是否会导致抛售并影响这些代币?_YAG

Voyager最近940万美元的转会引发了人们的好奇和猜测。随着资产转移和清算担忧隐现,以太坊和柴犬大放异彩。 Voyager将SHIB、SAND、APE和ETH转移到交易所地址.

POA:解析区块链中的Pos、PoA以及DPos的含义_区块链dapp开发费多少钱

PoS 权益证明是公共区块链的一类共识算法,它依赖于验证者在网络中的经济利益。在基于工作量证明的公共区块链中,该算法奖励解密加密谜题的参与者,以便验证交易并创建新的块.

AIN:本周值得关注的 11 种山寨币:这是值得期待的!_HAI

在不断发展的加密货币世界中,几个重要的发展将在未来一周脱颖而出。这些发展包括各种山寨币项目,并有可能塑造加密市场的未来.

ARB:Arbitrum Wonder:ARB币空投成功完成_TRU

在昨天分享的一条推文中,Lookonchain表示,Arbitrum空投是在昨天进行的,大约有9015万个ARB代币。根据空投时ARB的价格,本次空投的美元总额预计为1.18亿美元.

AIN:误区太多,大多数人并不理解区块链是怎么回事?_supmchain

有网友发微博称跟朋友吃饭三个话题不能聊,其中之一便是区块链。确实区块链对很多人来说还是非常陌生的新概念,仅有的一点认知也是来源于各种良莠不齐的媒体报道和以讹传讹的道听途说.

SOLA:尽管基金会的公共RPC处于离线状态,但 Solana 网络仍可正常运行_SOLAPE价格

简单来说 由于一个错误,SolanaFoundation的RPC端点目前处于离线状态。尽管遭遇挫折,区块链网络仍继续保持最佳状态。SOL在过去7天内上涨了37%以上.