什么是事件Evnet?
就是以EVM日志基礎設備提供一個接口,當被事件調用時,出發參數存儲到日志中,其與合約地址關聯,并記錄到區塊鏈中。關系就是:區塊鏈是打包交易區塊組成的鏈條,每一個交易會包含0到多個記錄,日志代表智能合約所觸發事件。
DAPP中,監聽了事件,當事件發生時,會回調。當然要注意的就是,日志和事件在合約內是無法被訪問,即使是創建日志的合約。
在Solidity代碼中,使用event關鍵字來定義一個事件,如:
eventEventName(addressbidder,uintamount);
這個用法和定義函數式一樣的,并且事件在合約中同樣可以被繼承。觸發一個事件使用emit(說明,之前的版本里并不需要使用emit),如:
Shibarium網絡交易總數超70萬筆,某巨鯨轉移近3800萬美元SHIB:9月1日消息,Shibarium重新開放一周,約有60萬個錢包在其網絡上完成超過70萬筆交易。其中,8月31日發生近10萬筆交易,8月25日交易數高達13.2萬筆。
截至周五,用戶可以在Shibarium上使用SHIB、BONE等進行代幣兌換、借出和借入代幣或質押代幣以獲得獎勵。目前Shibarium TVL為126萬美元。
鏈上數據顯示,一個SHIB巨鯨將價值近3800萬美元的SHIB分批轉移到以太坊鏈上的新錢包地址。[2023/9/1 13:11:48]
emitEventName(msg.sender,msg.value);
數據:約5352萬美元BTC轉入Coinbase:金色財經報道,2527枚BTC于今日06:22從未知錢包轉入Coinbase,價值約5352萬美元。[2023/1/17 11:15:49]
觸發事件可以在任何函數中調用,如:
functiontestEvent()public{emitEventName(msg.sender,msg.value);}
監聽事件
通過上面的介紹,可能大家還是不清楚事件有什么作用,點擊”UpdataInfo”按鈕之后,雖然調用智能合約成功,但是當前的界面并沒有得到更新。使用事件監聽,就可以很好地解決這個問題,讓看看如何實現。
推特用戶CryptoNovo被盜三個CryptoPunks,或為釣魚攻擊所致:1月4日消息,推特用戶CryptoNovo發推稱,自己所持有的三個CryptoPunks(#3706、#4608、#965)被盜。慢霧創始人余弦分析稱,三個失竊NFT分別流向了兩個不同的釣魚攻擊地址,被盜應是釣魚所致。[2023/1/4 9:52:34]
修改合約,定義事件及觸發事件
先回顧一下合約代碼:
pragmasolidity^0.4.21;contractInfoContract{stringfName;uintage;functionsetInfo(string_fName,uint_age)public{fName=_fName;age=_age;}functiongetInfo()publicconstantreturns(string,uint){return(fName,age);}}
Tiger Global減記FTX投資后成立新風險基金并擬募資60億美元:11月18日消息,據知情人士透露,Tiger Global Management成立一支新基金“Tiger Global Private Investment Partners 16”,并與摩根士丹利財富管理部門接洽,尋求為該基金募集60億美元資金。
據悉,Tiger Global之所以要推出該基金,是因為其不得不減記此前私人投資組合的投資,其中包括因FTX投資虧損而減記的資產。PIP 16將在兩年內啟動投資,如果順利募集到60億美元,將成為Tiger Global Management旗下第三大私人投資工具。(Advisorhub)[2022/11/18 13:21:05]
首先,需要定義一個事件:
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幣是什么幣
以太坊,英文:Ethereum,是一個開源的有智能合約功能的公共區塊鏈平臺。通過其專用加密貨幣以太幣提供中心化的虛擬機來處理點對點合約.
1900/1/1 0:00:00億萬富翁風險資本家ChamathPalihapitiya正在權衡比特幣(BTC),并質疑國王加密貨幣是否真的可以成為當前金融體系的合法替代品.
1900/1/1 0:00:001、數據:穩定幣總市值1年激增超8倍,USDC占比從6.6%升至22%6月7日消息,據TheBlock收集的數據顯示,穩定幣總市值在過去一年激增超8倍,截至6月6日為1051.7億美元.
1900/1/1 0:00:00以太坊開發人員為Dencun升級做準備:擴展和保護區塊鏈執行層和共識層的同步升級旨在增強以太坊的可擴展性和安全性Multichain將在合并前約6小時暫停以太坊跨鏈服務.
1900/1/1 0:00:00概括 買家在Binance交易所以26,500美元的價格筑起了堅固的墻。周四和周五公布的數據激發了短期買家的拋售動機。如果比特幣能夠保持在27,255美元以上,它可能會超過30,000美元.
1900/1/1 0:00:00來自Glassnode的鏈上數據顯示,隨著加密市場接近決定性舉措,市場參與者正在規避風險并尋求穩定幣和BTC的庇護.
1900/1/1 0:00:00