比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads
首頁 > Luna > Info

atc:搞懂事件的使用,詳細解讀Solidity事件Event_區塊鏈技術發展現狀和趨勢

Author:

Time:1900/1/1 0:00:00

什么是事件Evnet?

就是以EVM日志基礎設備提供一個接口,當被事件調用時,出發參數存儲到日志中,其與合約地址關聯,并記錄到區塊鏈中。關系就是:區塊鏈是打包交易區塊組成的鏈條,每一個交易會包含0到多個記錄,日志代表智能合約所觸發事件。

DAPP中,監聽了事件,當事件發生時,會回調。當然要注意的就是,日志和事件在合約內是無法被訪問,即使是創建日志的合約。

在Solidity代碼中,使用event關鍵字來定義一個事件,如:

eventEventName(addressbidder,uintamount);

這個用法和定義函數式一樣的,并且事件在合約中同樣可以被繼承。觸發一個事件使用emit(說明,之前的版本里并不需要使用emit),如:

PeckShield:Hashflow 疑似遭遇與授權有關的攻擊:6月14日消息,PeckShield 發推稱,Hashflow 疑似遭遇與授權有關的攻擊,目前損失金額約為 40 萬美元,其中 19.5 萬美元的損失發生在 Arbitrum 上,21.5 萬美元的損失發生在以太坊上。[2023/6/15 21:37:20]

emitEventName(msg.sender,msg.value);

觸發事件可以在任何函數中調用,如:

functiontestEvent()public{emitEventName(msg.sender,msg.value);}

Lido上周Polygon市場新增3210萬枚MATIC的存款凈額:金色財經報道,Lido Finance發推特表示,上周Lido上Polygon市場新增3210萬枚MATIC的存款凈額,其中3000萬是由某個巨鯨地址質押,質押率增長34.56%,Lido在Polygon的市場份額達到3.47%。[2023/5/16 15:06:18]

監聽事件

通過上面的介紹,可能大家還是不清楚事件有什么作用,點擊”UpdataInfo”按鈕之后,雖然調用智能合約成功,但是當前的界面并沒有得到更新。使用事件監聽,就可以很好地解決這個問題,讓看看如何實現。

修改合約,定義事件及觸發事件

加密投資平臺Bitpanda增加大宗商品交易:9月6日消息,加密投資平臺Bitpanda在其平臺上增加了大宗商品交易,允許用戶交易石油、天然氣、鋁和小麥以及加密貨幣、股票和交易所交易基金(ETF)。用戶將能夠通過衍生品合約獲得交易所交易商品(ETC)的敞口。Bitpanda將持有ETC。與其金屬投資功能不同,用戶無法購買實物資產的股份。(The Block)[2022/9/6 13:12:06]

先回顧一下合約代碼:

pragmasolidity^0.4.21;contractInfoContract{stringfName;uintage;functionsetInfo(string_fName,uint_age)public{fName=_fName;age=_age;}functiongetInfo()publicconstantreturns(string,uint){return(fName,age);}}

Aave社區發起將1INCH作為抵押品的提案:7月22日消息,Aave社區發起將1INCH作為Aave v2市場抵押品的提案,清算門檻設置為50%,清算獎勵比例為8.5%。[2022/7/22 2:31:01]

首先,需要定義一個事件:

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幣是什么幣

Luna
ETH:比特幣礦企22年算力目標預估下調近42%;Coinbase將上線cbETH_比特幣

比特幣礦企Argo將2022年算力目標預估下調近42%比特幣礦企ArgoBlockchain周三表示,計劃到2022年底算力達到3.2EH/s。這比它此前公布的5.5EH/s下降41.8%.

1900/1/1 0:00:00
比特幣:比特幣必須收回 19,000 美元作為支持才能擁有任何“看漲”_btc

比特幣(BTC)的價格在2022年一直面臨著巨大的下行壓力,旗艦數字資產現在正努力守住19,000美元的水平.

1900/1/1 0:00:00
BTC:為什么隨著比特幣價格突破 17000 美,逢低在短期內變得有吸引力_比特幣最新價格行情走勢USD幣

比特幣價格超過16,800美元和100小時簡單移動平均線。在BTC/USD貨幣對的小時圖上,一條重要的看漲趨勢線正在形成,支撐位于16,950美元附近.

1900/1/1 0:00:00
以太坊:解讀以太坊(ETH)上海升級即將激活的四個 EIP_Etherael指什么寓意PUSH幣

以太坊巴黎升級之后又一重大更新即將到來——上海升級!目前有著上千專業開發者的以太坊核心社區,從15年走來已經歷經15次主網升級.

1900/1/1 0:00:00
MENA:總部位于巴林的加密貨幣交易所戲弄 Shiba Inu 上市_數字資產是未來最大的資產

CoinMENA提供神秘線索:ShibaInu是下一個大上市嗎?CoinMENA是著名的符合伊斯蘭教法的數字資產平臺,最近發布了關于其下一次潛在上市的重要暗示.

1900/1/1 0:00:00
XBT:不是狗狗幣:詐騙者在 1.5 個月內創造了 114 個狡猾的模因硬幣_XBT幣是什么幣區塊鏈工程專業學什么

模因硬幣炒作遠未冷卻。當船長Dogecoin和ShibaInu正在冬眠時,其他人如BabyDogeCoin和FlokiInu已經挺身而出.

1900/1/1 0:00:00
ads