什么是事件Evnet?
就是以EVM日志基礎設備提供一個接口,當被事件調用時,出發參數存儲到日志中,其與合約地址關聯,并記錄到區塊鏈中。關系就是:區塊鏈是打包交易區塊組成的鏈條,每一個交易會包含0到多個記錄,日志代表智能合約所觸發事件。
DAPP中,監聽了事件,當事件發生時,會回調。當然要注意的就是,日志和事件在合約內是無法被訪問,即使是創建日志的合約。
在Solidity代碼中,使用event關鍵字來定義一個事件,如:
eventEventName(addressbidder,uintamount);
這個用法和定義函數式一樣的,并且事件在合約中同樣可以被繼承。觸發一個事件使用emit(說明,之前的版本里并不需要使用emit),如:
ApeCoin DAO發起新提案AIP-250擬優化APE代幣質押智能合約:金色財經報道,ApeCoin社區已發起新提案AIP-250投票,該提案提出了新的APE代幣質押解決方案,旨在使用戶能夠在出售BAYC、MAYC、BAKC的同時收到預付款,并以復合獎勵質押APE,繼而解決質押NFT升值與獲取質押獎勵之間的互斥困境。此外,除了APE質押獎勵之外,NFT持有者將能夠通過產生額外的被動收入來利用其NFT價值,繼而最大化APE代幣質押獎勵和靈活性。據悉,如果AIP-250提案獲得通過,將部署新的APE Stake質押智能合約,該合約使用戶不僅可以通過自動再投資進質押,還可以以NFT進行借貸或以預付收入將其掛牌出售,確保NFT所有者即使在質押期間仍然可以產生現金流或利用其 NFT 的升值價值,據悉該提案投票將于8月10日結束。[2023/8/6 16:21:23]
emitEventName(msg.sender,msg.value);
Cosmos Hub將于3月15日進行V9 Lambda升級,將激活Replicated Security功能:3月8日消息,Cosmos Hub發推稱,v9 Lambda升級提案已經投票通過,支持率達99.48%。V9 Lambda升級將于3月15日進行。
根據該提案,本次升級旨在激活Replicated Security功能,這將強制執行鏈間安全性(ICS)的良好運行規則。Replicated Security功能可將Cosmos Hub的安全性復制到消費者鏈,并監控對規則的遵守情況,消費者鏈可以從Cosmos Hub的安全性中受益,而不必維護自己的驗證者。[2023/3/8 12:49:01]
觸發事件可以在任何函數中調用,如:
OXT研究人員通過鏈上分析驗證了灰度的比特幣信托持有的BTC數量:金色財經報道,盡管Grayscale未公開,但OXT研究人員Ergo解釋稱,已經采取措施,根據公共信息和區塊鏈取證來識別可能的GBTC地址和余額。其中發現,持有317,705?BTC的432個地址可能是GBTC托管地址。
此外,在此分析中,使用額外的onchain取證來確認GBTC在Coinbase托管處持有的大約633K?BTC余額。Ergo總結指出,在發現前50%的比特幣與Grayscale的BTC相關聯后,該團隊掃描區塊鏈以尋找符合第1部分中發現的地址的其他地址。[2022/11/25 8:06:40]
functiontestEvent()public{emitEventName(msg.sender,msg.value);}
MarqVision完成2000萬美元A輪融資:8月2日消息,假NFT探測器MarqVision完成2000萬美元A輪融資,DST Global Partners、Atinum Investments、Softbank Ventures、Bass Investment和Y-Combinator等參投。通過這一輪新的融資,MarqVision打算加強其產品開發,以進一步保護品牌和內容創作者的知識產權 (IP)。 (The Block)[2022/8/3 2:54:44]
監聽事件
通過上面的介紹,可能大家還是不清楚事件有什么作用,點擊”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);}});
Tags:atc區塊鏈ONTatc幣是什么幣區塊鏈工程專業學什么區塊鏈存證怎么弄區塊鏈技術發展現狀和趨勢ONT幣是什么幣
在美國證券交易委員會(SEC)最近對領先的加密貨幣交易所Coinbase和Binance提起訴訟之后,加密市場經歷了一個波動加劇和價格大幅波動的動蕩時期.
1900/1/1 0:00:00幸運方塊:2022年10月18日在過去的24小時內,LBLOCK已經能夠向上突破#$0.0002180和$0.0002190的價格水平.
1900/1/1 0:00:00區塊鏈分主鏈,側鏈,區塊鏈的主鏈有且只有一條,區塊鏈正常運行,就是每隔大約十分鐘,就會收集全網的數據進行驗證跟備份,然后進行打包形成一個個的區塊,然后這些區塊串聯在之前已有的區塊之上.
1900/1/1 0:00:0010月11日,專注Move生態的安全公司MoveBit(莫比安全)團隊發布了全球首個Move智能合約安全審計報告——《StarcoinFrameworkAuditReport》.
1900/1/1 0:00:00幾份報告預計ShibaInu可能會上漲至0.01美元,但GoogleBard最近分享了對這一雄心勃勃的價格目標的現實見解。ShibaInu(SHIB)有著飛速上漲的歷史,其投資回報率史無前例.
1900/1/1 0:00:00大家好,這里是鏈客區塊鏈技術問答社區,今天講一講HTML、CSS、JavaScript、PHP、MySQL這些中應該先學什么,畢竟在這個互聯網的時代,選好規劃路線是比較正覺的.
1900/1/1 0:00:00