什么是事件Evnet?
就是以EVM日志基礎設備提供一個接口,當被事件調用時,出發參數存儲到日志中,其與合約地址關聯,并記錄到區塊鏈中。關系就是:區塊鏈是打包交易區塊組成的鏈條,每一個交易會包含0到多個記錄,日志代表智能合約所觸發事件。
DAPP中,監聽了事件,當事件發生時,會回調。當然要注意的就是,日志和事件在合約內是無法被訪問,即使是創建日志的合約。
在Solidity代碼中,使用event關鍵字來定義一個事件,如:
eventEventName(addressbidder,uintamount);
這個用法和定義函數式一樣的,并且事件在合約中同樣可以被繼承。觸發一個事件使用emit(說明,之前的版本里并不需要使用emit),如:
區塊鏈及元宇宙媒體公司耀世星輝通過股份認購獲得2000萬美元戰略募資:金色財經報道,納斯達克上市區塊鏈及元宇宙媒體公司耀世星輝(Glory Star)宣布已與兩家新投資機構簽訂了股份認購協議,這兩家投資機構以每股2.48美元的價格購買了其發行的8,064,516股普通股,耀世星輝以此獲得了約2000萬美元的戰略投資,相關私募配售預計將于2023年9月5日左右完成,投資方具體信息目前暫未披露。據悉,耀世星輝目前擁有數字創新研究院、以及基于區塊鏈、云計算、擴展現實、數字孿生等打造的5G+VR+AR+AI的悅享元宇宙空間平臺等在內的業務生態體系。(prnewswire)[2023/8/17 18:04:11]
emitEventName(msg.sender,msg.value);
Reddit Avatar NFT累計銷售額突破900萬美元,銷售量超3萬筆:金色財經報道,據Dune Analytics最新數據顯示,Reddit Avatar NFT累計銷售額已突破 900 萬美元,本文撰寫時為9,036,151美元,NFT 銷售總量超3萬筆(30,156筆)。此外,Reddit Avatar NFT總數量達到 2,956,618個,持有者總量為 2,869,618 個。[2022/10/29 11:55:29]
觸發事件可以在任何函數中調用,如:
functiontestEvent()public{emitEventName(msg.sender,msg.value);}
GameFi基礎設施平臺HubGame獲Funverse基金1000萬美元投資承諾:金色財經報道,GameFi基礎設施平臺Hub Game宣布獲得Funverse基金1000萬美元投資承諾,旨在為區塊鏈游戲行業帶來更多有價值的變化。據悉,HubGame多合一平臺提供支付網關、錢包、NFT市場、交易和DeFi等服務,目前旗下覆蓋50款NFT游戲,讓用戶GameFi投資體驗更加無縫、安全和有效。本次投資方Funverse Capital是手機游戲發行商Funtap推出的投資基金,專注于為NFT游戲和區塊鏈初創公司提供支持。(bsc.news)[2022/9/17 7:03:01]
監聽事件
通過上面的介紹,可能大家還是不清楚事件有什么作用,點擊”UpdataInfo”按鈕之后,雖然調用智能合約成功,但是當前的界面并沒有得到更新。使用事件監聽,就可以很好地解決這個問題,讓看看如何實現。
Solana流支付協議Zebec完成850萬美元融資,Circle Ventures等參投:8月27日消息,Solana生態流支付協議Zebec以10億美元完全稀釋估值完成850萬美元融資,Circle Ventures、Shima Capital、Resolute Ventures參投。
預計到2022年底,Zebec的收入將達到2000萬美元,凈利潤為600萬美元。今年早些時候,Zebec與Visa合作,加入其Fintech Fast Track Program。Zebec很快將推出定制借記卡。此外,到2024年,Zebec用戶數量預計將達到200萬個。Zebec還計劃在收入達到1萬億美元后推出穩定幣。
據此前報道,今年3月,Zebec已通過代幣公開銷售和私募融資2800萬美元,并推出ZBC代幣。其中2100萬美元的私募投資者包括Circle、Coinbase、Solana Ventures、Lightspeed Venture Partners和Alameda Research,另外700萬美元的代幣公開銷售是與Republic合作完成。(Bitcoinist)[2022/8/27 12:51:47]
修改合約,定義事件及觸發事件
先回顧一下合約代碼:
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幣是什么幣
ShibaInu(SHIB)模因幣幾個月來一直持平,沒有大的向上或向下突破。這可能很快就會改變,因為:ShibaInu生態系統正在發生很多事情.
1900/1/1 0:00:00在熊市,項目的營銷預算減少,用戶的互動意愿也會降低。很多的Web3市場朋友都表達出“熊市很難做營銷”的觀點。 然而,事實真就如此嗎? 牛市用戶積極性高,但所面臨的營銷競爭將會更大.
1900/1/1 0:00:00在本月早些時候觸及新低后,比特幣地址活動也再次回升。美國債務上限上調可能是催化劑 在5月29日星期一亞洲時段的早盤交易中,比特幣(BTC)迅速上漲超過3.5%.
1900/1/1 0:00:00香港金管局擬于2023年四季度舉辦分布式賬本技術介紹研討會:金色財經報道,香港金融管理局正在研究管理數字港元或穩定幣的監管框架,并將推動分布式賬本技術(DLT)的使用,旨在將銀行存款代幣化.
1900/1/1 0:00:00狗狗幣已經恢復了向月球的一寸,一次一個反彈。狗狗幣開發者:目前沒有轉向POS的計劃:金色財經報道,此前有傳言稱狗狗幣將過渡到更節能的權益證明模型(PoS),Dogecoin Foundation.
1900/1/1 0:00:00ShibaInu團隊一直在致力于一個新的“SHIBTheMetaverse”項目,以創造一個真正身臨其境的體驗,值得ShibaInu社區.
1900/1/1 0:00:00