木星链 木星链
Ctrl+D收藏木星链
首页 > AAVE > 正文

atc:搞懂事件的使用,详细解读Solidity事件Event

作者:

时间:1900/1/1 0:00:00

什么是事件Evnet?

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

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

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

eventEventName(addressbidder,uintamount);

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

Uranium Finance攻击者地址已将200万枚USDC从BNB Chain桥接到以太坊:金色财经报道,据PeckShieldAlert监测,标记为Uranium Finance的攻击者地址已将200万枚USDC从BNB Chain桥接到以太坊,并将它们交换为大约1,075.6枚ETH,然后将1,000枚ETH转移到Tornado Cash。[2023/8/16 21:26:09]

emitEventName(msg.sender,msg.value);

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

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

Aave社区发起“Aave V3 GHO Genesis Parameters”相关提案的链上投票:4月30日消息,据snapshot页面显示,Aave社区发起“Aave V3 GHO Genesis Parameters”相关提案的链上投票,旨在巩固社区对V3以太坊促进者的GHO起始参数的偏好,并将于5月3日截止。据悉,该提案提供以下两个方案供选择,方案A借款利率设置为1.5%,Bucket Capacity设置为1亿美元,stkAAVE Discount Rate为30%;方案B借款利率设置为2%,Bucket Capacity设置为5000万美元,stkAAVE Discount Rate为25%.当前,方案A支持率为83.63%,方案B支持率为15.33%,1.05%弃权。[2023/4/30 14:35:40]

监听事件

Solana基金会推出100万美元基金,并推出ChatGPT相关插件:4月26日消息,据官方推特,Solana基金会宣布推出100万美元的小规模基金,用于探索Solana区块链和人工智能的交互。赠款范围从5000美元到25000美元不等,新的和现有的项目都有资格获得资助,旨在鼓励Solana生态系统探索人工智能的新用例。要获得资助,工具或应用程序必须公开供他人使用、发布时开源、有可供基金会使用的源代码。此外,SolanaLabs已经为ChatGPT插件创建了一个开源参考实现,该插件允许用户直接从ChatGPT与Solana网络进行交互。一旦ChatGPT插件可用,用户将能够检查钱包余额,转移代币和购买NFT。[2023/4/26 14:26:59]

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

数据:SHIB持有者超过1,210,000名:金色财经消息,根据WhaleStats的数据,Shiba Inu持有者超过1,210,000名。在本文发布时,Shiba Inu持有者的数量为1,210,718人。[2022/7/21 2:29:02]

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

先回顾一下合约代码:

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

标签:atc区块链ONTatc币是什么币区块链工程专业学什么区块链存证怎么弄区块链技术发展现状和趋势ONT币是什么币

AAVE热门资讯
ETH:a16z:私钥屡被攻破?Web3安全还得从钱包说起

个人对自己的私钥有直接和唯一的控制权——坚持这种理念的加密钱包被称为“非托管”钱包,这意味着外部无法访问密钥.

1900/1/1 0:00:00
ONE:火币、OKX 上市后 ShibaSwap BONE 代币波动性上升

简单来说 ShibaSwap的BONE将于4月25日上线火币和OKX。自公告发布以来,BONE的价格一直处于过山车状态。火币在一份声明中表示,取款将在开始接受存款后的一天开放.

1900/1/1 0:00:00
区块链:区块链到底是什么?

区块链技术其实就是一个分散的不可信网络,它利用本地资产,分散账本和一些基于博弈论模型的算法来使网络中的每一方达成共识.

1900/1/1 0:00:00
区块链:区块链中的签名到底应该怎么签?

大家好,这里是链客区块链技术问答社区。链客,专为开发者而生,有问必答!今天讲解一下数字签名的由来与解析。数字签名也便是咱们的公钥数字签名和电子签,类似于咱们写在纸上的签名,但又有非常大的不同.

1900/1/1 0:00:00
SHIB:Shiba Inu Coin 投资者遭受 80% 的地址陷入损失

最近的数据暴露了围绕SHIB的真正炒作的误导性影响,SHIB曾被誉为meme硬币行业的最爱。ShibaInu是加密货币的焦点,它的投资者遭受了重大损失.

1900/1/1 0:00:00
以太坊:以太坊的四个阶段以及为什么要进行分叉?

以太坊的四个阶段 2015年7月,以太坊创始人VitalikButerin明确将以太坊网络的开发过程分为四个阶段:Frontier、Homestead、Metropolis和Serenity.

1900/1/1 0:00:00