什么是事件Evnet?
就是以EVM日志基礎設備提供一個接口,當被事件調用時,出發參數存儲到日志中,其與合約地址關聯,并記錄到區塊鏈中。關系就是:區塊鏈是打包交易區塊組成的鏈條,每一個交易會包含0到多個記錄,日志代表智能合約所觸發事件。
DAPP中,監聽了事件,當事件發生時,會回調。當然要注意的就是,日志和事件在合約內是無法被訪問,即使是創建日志的合約。
在Solidity代碼中,使用event關鍵字來定義一個事件,如:
eventEventName(addressbidder,uintamount);
這個用法和定義函數式一樣的,并且事件在合約中同樣可以被繼承。觸發一個事件使用emit(說明,之前的版本里并不需要使用emit),如:
Instagram將于4月11日起取消對數字收藏品的支持:金色財經報道,Instagram在其幫助中心發布公告稱,將逐步結束對數字收藏品的支持,變更將于2023年4月11日起開始生效。用戶第三方電子錢包內容不會受到影響。屆時,用戶將無法再在Instagram創建新的數字收藏品帖子;用戶分享的所有收藏品仍將以帖子的形式留存,但不會包含任何閃光特效和區塊鏈信息,用戶仍可以隨時刪除這些帖子;僅在用戶主頁的數字收藏品選項卡中可見的收藏品帖子將移至用戶的私密文件夾。
此外,Instagram將不再與用戶的第三方電子錢包綁定或將用戶的帳戶與第三方電子錢包關聯,用戶將無法再在關聯的選項卡中查看自己的數字收藏品或管理第三方電子錢包綁定設置。用戶將無法再訪問或下載與收藏品相關的個人信息。如果想要下載個人信息,請于2023年4月11日前提交申請。Instagram將開始刪除系統中的數字收藏品數據,包括用戶的錢包地址。數據的存儲和刪除將遵照其隱私權政策和數字收藏品使用條款進行。[2023/4/8 13:52:04]
emitEventName(msg.sender,msg.value);
Euler黑客將2600枚ETH逐步轉入Tornado Cash:金色財經報道,據慢霧監測顯示,Euler攻擊事件黑客到目前為止已經將 2600 枚ETH轉移到一個鏈上標記為Fake_phishing7653的地址,后又逐步向 Tornado Cash 轉移。[2023/3/16 13:07:06]
觸發事件可以在任何函數中調用,如:
functiontestEvent()public{emitEventName(msg.sender,msg.value);}
監聽事件
通過上面的介紹,可能大家還是不清楚事件有什么作用,點擊”UpdataInfo”按鈕之后,雖然調用智能合約成功,但是當前的界面并沒有得到更新。使用事件監聽,就可以很好地解決這個問題,讓看看如何實現。
MicroStrategy將在明年指導企業如何采用Bitcoin:金色財經報道,MicroStrategy將在明年5月的活動中指導企業如何采用Bitcoin。[2022/12/8 21:31:03]
修改合約,定義事件及觸發事件
先回顧一下合約代碼:
pragmasolidity^0.4.21;contractInfoContract{stringfName;uintage;functionsetInfo(string_fName,uint_age)public{fName=_fName;age=_age;}functiongetInfo()publicconstantreturns(string,uint){return(fName,age);}}
“獨角獸”加密交易平臺CoinSwitch Kuber三位高管離職:金色財經報道,根據加密交易平臺CoinSwitch Kuber發布的一份最新聲明顯示,該平臺三位高管已宣布離職,分別是首席財務官 Sarmad Nazki、首席商務官 Sharan Nair 和新項目計劃負責人 Krishna Hegde,聲明稱三人將于8月5日離開公司,后續可能會聯合創立一家新的Web3公司。CoinSwitch Kuber此前曾以19億美元估值從美國風險投資公司 Andreesen Horowitz (a16z) 和 Coinbase Ventures 籌集了 2.6 億美元,是一家加密獨角獸公司。(livemint)[2022/7/8 1:59:21]
首先,需要定義一個事件:
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被迫交出BillHinman的文件,瑞波正朝著勝利邁進。今天,當Ripple的總法律顧問StuartAlderoty在微博網站上發帖時,Twitter亮了起來.
1900/1/1 0:00:00最近的市場崩盤使ShibaInu跌至歷史低點,但投資者認為這是一個以折扣價購買該資產的機會。在整個市場崩盤中,柴犬(SHIB)目前正處于本周期的最低階段之一.
1900/1/1 0:00:00Solana的價格漲幅超過10%,成交量漲幅超過200%。市場指標和鏈上表現表明持續飆升。Solana過去幾個小時的巨大收益令投資者感到驚訝.
1900/1/1 0:00:00領先的加密貨幣支付網關BitPay最近宣布與總部位于倫敦的金融科技公司RampNetwork建立合作伙伴關系,為其用戶提供購買20多種受支持的加密貨幣的選擇.
1900/1/1 0:00:00大家好,這里是鏈客區塊鏈技術問答社區。 鏈客,有問必答! 區塊鏈技術自身仍然在飛速發展中,現在還缺少一致的規范和標準.
1900/1/1 0:00:00BraveWallet集成了ShibaInu支付,允許用戶進行交易。BitPay的協議使SHIB能夠無縫集成到BraveWallet的生態系統中.
1900/1/1 0:00:00