什么是事件Evnet?
就是以EVM日志基础设备提供一个接口,当被事件调用时,出发参数存储到日志中,其与合约地址关联,并记录到区块链中。关系就是:区块链是打包交易区块组成的链条,每一个交易会包含0到多个记录,日志代表智能合约所触发事件。
DAPP中,监听了事件,当事件发生时,会回调。当然要注意的就是,日志和事件在合约内是无法被访问,即使是创建日志的合约。
在Solidity代码中,使用event关键字来定义一个事件,如:
eventEventName(addressbidder,uintamount);
这个用法和定义函数式一样的,并且事件在合约中同样可以被继承。触发一个事件使用emit(说明,之前的版本里并不需要使用emit),如:
孙宇晨:TRX正处在价值回归的关键性历史节点,是最有前途的加密货币之一:据最新消息,波场TRON创始人兼BitTorrent CEO孙宇晨正在火星财经进行视频直播,解析NFT行业发展机遇,他在直播中表示:“未来公链的发展格局必定是多元丰富,生态繁多。凭借高吞吐量、高扩展性、高可靠性等性能优势以及强大的生态,波场TRON是目前最繁忙的公链之一。
目前,作为全球发展最快的公链,波场TRON公链总用户数已经高达2989万,即将突破3000万,交易笔数超过17亿次。TRX是最有前途的加密货币之一,已经上线130多家交易所,连接了数百万价值投资者。我个人对波场TRON充满信心,也认为TRX正处在价值回归的关键性历史节点。”[2021/4/21 20:44:33]
emitEventName(msg.sender,msg.value);
ParaSpace官推:此前从黑客攻击中截流的资金实际被创始人Yubo控制:5月10日消息,Paraspace 团队在推特上表示,通过链上数据分析显示,此前在黑客攻击中截留的 2909 枚以太坊被 ruanyubo.eth 和 paraspaceinsurance.eth 地址控制,而这两个地址实际由 Paraspace 创始人 Yubo 控制,且黑客攻击以来已有价值 100 万美元的代币流出到其他钱包以及 CEX 和 Circle。剩余资金已无法弥补协议此前因黑客攻击导致的亏空。
团队称,此前在为 Paraspace 建立法人实体时因 Yubo 未正面回应财务方面问题而发现了资金被挪用。团队目前将 Yubo 地址移出了项目多签地址,并移除了 Yubo 的访问权限。目前团队要求 Yubo 将剩余的资金转入协议多签地址,但 Yubo 拒绝与之沟通。
Paraspace 团队表示,目前团队有能力填补协议的财务漏洞,将于今晚 20:00 进行直播分享事件的最新进展以及未来的恢复工作。[2023/5/10 14:55:04]
触发事件可以在任何函数中调用,如:
MakerDAO社区参与者提议创建以DAI为重点的新流动性市场Spark Protocol:2月9日消息,最新成立的一家研发公司Phoenix Labs在MakerDAO社区发起了一项新治理提案,提议创建一个名为Spark Protocol的新流动性市场,用于借贷以DAI为重点的加密资产。第一个产品将是Spark Lend,它将允许用户以设定的DAI储蓄率借入DAI,目前该利率为1%。根据提案,Spark Lend将支持高流动性的去中心化资产作为抵押品,例如ETH、DAI以及质押的ETH (wstETH)和 BTC (wBTC)的封装衍生品。未来的功能将包括固定期限收益产品和包含Maker 自己的合成液体质押衍生品(LSD),称为EtherDAI。
根据提案,Spark的目标是在今年4月推出,在Maker上开设一个债务上限为2亿美元的DAI借贷金库。Spark将使用Aave v3的智能合约系统。作为交换,开发团队Phoenix Labs打算在未来两年内将该协议在Spark Protocol的DAI市场上赚取的利润的10%发送给Aave DAO。实施Spark Protocol取决于Maker社区的投票。(CoinDesk)[2023/2/9 11:56:06]
functiontestEvent()public{emitEventName(msg.sender,msg.value);}
美国SEC指控DeFi公司Blockchain Credit Partners涉嫌欺诈性发行3000万美元:8月6日消息,美国证券交易委员会指控DeFi贷款人Blockchain Credit Partners及其两名高管通过涉嫌欺诈性发行筹集3000万美元。美国证券交易委员会周五表示,该案是该机构首次涉及使用DeFi技术的证券,佛罗里达州男子Gregory Keough、Derek Acree和他们的公司Blockchain Credit Partners在未注册的发行中使用智能合约出售支付超过6%利息的代币,销售证券。(Coindesk)[2021/8/6 1:39:48]
监听事件
通过上面的介绍,可能大家还是不清楚事件有什么作用,点击”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);}});
SEC将山寨币归类为“证券”后,Polygon(MATIC)价格自2022年7月以来首次跌破0.60美元。Polygon开发人员正试图通过提议从MATIC切换到新的POL代币来解决中心化问题.
前BitMEX首席执行官认为,在大多数“不负责任的实体”都卖光了比特币后,比特币价格可能已经触底.
行情又白玩了一周,上周借助cpi信息的公布,向下打了一针,随后又快速拉回。熊市靠后的阶段就是这样的,市场普遍流动性较差,交易情绪很弱,只有借助外部信息的刺激才能产生行情的波动.
21500真的像是一个妙龄少女一样时时刻刻撩拨着比特币。自从币价突破18500之后,已经三次尝试进攻这一关键位置,昨晚十点,比特币终于一鼓作气冲了上去。但是天不遂人愿,刚上去就灰溜溜败下阵来.
针对Alameda的CarolineEllison和FTX的GaryWang的投诉包含FTX的交易代币FTT构成投资合约的指控.
最近现货比特币ETF申请的成功引起了金融巨头的兴奋。现在他们将注意力转向领先的山寨币以太坊。VolatilityShares、Bitwise、Roundhill、VanEck、Proshares.