什么是事件Evnet?
就是以EVM日志基礎設備提供一個接口,當被事件調用時,出發參數存儲到日志中,其與合約地址關聯,并記錄到區塊鏈中。關系就是:區塊鏈是打包交易區塊組成的鏈條,每一個交易會包含0到多個記錄,日志代表智能合約所觸發事件。
DAPP中,監聽了事件,當事件發生時,會回調。當然要注意的就是,日志和事件在合約內是無法被訪問,即使是創建日志的合約。
在Solidity代碼中,使用event關鍵字來定義一個事件,如:
eventEventName(addressbidder,uintamount);
這個用法和定義函數式一樣的,并且事件在合約中同樣可以被繼承。觸發一個事件使用emit(說明,之前的版本里并不需要使用emit),如:
摩根大通將比特幣生產成本預估從21,000美元下調至18,000美元:金色財經報道,在最近修訂劍橋比特幣電力消耗指數方法后,摩根大通降低了比特幣生產成本預估。
以 Nikolaos Panigirtzoglou 為首的摩根大通分析師在一份報告中寫道:“采用新方法,當前比特幣生產成本降至18,000美元左右,而采用舊方法,則為21,000美元”。分析師指出,因此,電價變化現在對比特幣挖礦成本的影響較小。摩根大通重申,減半事件可能是對比特幣礦工的壓力測試,特別是考慮到比特幣生產成本對電力成本的高度敏感性。
根據CoinGecko數據,目前比特幣的市場價格約為25,800美元。[2023/9/8 13:25:39]
emitEventName(msg.sender,msg.value);
價值約3.9億美元FTT從FTX Deployer轉出至新地址:11月13日消息,據派盾監測預警顯示,共有 1.959 億枚 FTT(約合 3.9 億美元)已從鏈上標記為「FTX Deployer」的錢包地址轉入新地址(0x2a4F…0d3)。目前該地址已成為 FTT 的最大持有者。[2022/11/13 12:57:51]
觸發事件可以在任何函數中調用,如:
functiontestEvent()public{emitEventName(msg.sender,msg.value);}
監聽事件
通過上面的介紹,可能大家還是不清楚事件有什么作用,點擊”UpdataInfo”按鈕之后,雖然調用智能合約成功,但是當前的界面并沒有得到更新。使用事件監聽,就可以很好地解決這個問題,讓看看如何實現。
外媒:傳統投資組合的低回報推動亞洲家族辦公室投資數字資產:10月26日消息,盡管加密市場經歷數月的市場動蕩,亞洲的家族辦公室仍在購買加密貨幣,因為其傳統投資組合的低回報使數字資產具有吸引力。
畢馬威中國和加密貨幣集團Aspen Digital發布了一份對香港和新加坡30家家族辦公室和富有投資者的調查報告顯示,92%的受訪者對數字資產感興趣,其中58%已經投資,34%計劃投資。本次調研的受訪者中,60%的資產規模在1000萬至5億美元之間。香港家族辦公室Winland Wealth Management首席執行官Keith Wong表示,我們從未對加密貨幣失去興趣并將其視為多元化和單獨的資產類別。(金融時報)[2022/10/26 16:39:29]
修改合約,定義事件及觸發事件
Silvergate宣布任命美國運通前開發副總裁Alaric Eby為首席產品開發官:金色財經報道,美國加密友好銀行Silvergate宣布,Alaric Eby加入其團隊擔任首席產品開發官。在此職位上,Alaric 將通過領導公司的產品功能和擴展我們的解決方案以支持數字資產行業。在加入Silvergate之前,Alaric是美國運通公司美國運通數字實驗室的新產品開發副總裁,在那里他發現了商機并在多個行業推出了新產品。他還曾擔任區塊鏈和加密專家,并與人合著了與區塊鏈、安全和支付相關的專利。[2022/7/27 2:39:40]
先回顧一下合約代碼:
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幣是什么幣
關注Filecoin的朋友們可能發現了,最近Filecoin的幾個板塊均出現了實質性的進展,節奏明顯加快了.
1900/1/1 0:00:00Solana的價格漲幅超過10%,成交量漲幅超過200%。市場指標和鏈上表現表明持續飆升。Solana過去幾個小時的巨大收益令投資者感到驚訝.
1900/1/1 0:00:00由于加密貨幣市場似乎仍處于執法引發的恐懼之中,或許比特幣正準備采取爆炸性行動。 橫向和向下 加密市場相對平靜,因為高度不確定的監管氣氛導致山寨幣繼續流失,而比特幣仍在下行通道中橫盤整理.
1900/1/1 0:00:00XRP在地址活動方面創造了一個新的歷史最高壯舉。鏈上指標平臺Santiment最近的一項分析顯示,XRP網絡“在過去兩天內出現了有史以來第二和第三大地址活動峰值.
1900/1/1 0:00:00整體波幅有限,但走勢還是按照我們預期在發展,周四盤中給出23600最高點空繼續收米,也不枉浪費這明確的走勢,在沒有強勢信號出現之前,今天繼續看空,而前期回踩的低點和日線下跌趨勢線支撐共振.
1900/1/1 0:00:00與大多數課程一樣,以太坊自年初以來一直在上漲。他一步步突破了幾個印記,現在似乎從過去的一年中恢復過來。在我們的價格預測中,我們想回答ETH是否以及何時能夠突破2,000美元大關的問題.
1900/1/1 0:00:00