比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > 幣贏 > Info

搞懂事件的使用,詳細解讀Solidity事件Event_ONT

Author:

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

什么是事件Evnet?

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

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

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

eventEventName(addressbidder,uintamount);

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

彭博社:灰度與美國SEC將“SEC拒絕BTC現貨ETF”展開爭論:金色財經報道,灰度投資公司(Grayscale Investments)在華盛頓對美國證券交易委員會(SEC)提起訴訟,雙方將展開爭論。美國證券交易委員會在6月拒絕了Grayscale將產品轉化為ETF的申請,理由是比特幣欺詐和操縱問題。Grayscale在美國哥倫比亞特區巡回上訴法院拒絕后的幾個小時內起訴了監管機構,認為鑒于存在以期貨為支撐的比特幣ETF,該機構 \"未能對類似的投資工具適用一致的待遇\"。(彭博社)[2023/3/7 12:46:15]

emitEventName(msg.sender,msg.value);

Sensei Labs項目Discord服務器遭到攻擊:金色財經報道,據CertiK監測,Sensei Labs項目Discord服務器遭到攻擊。請社區用戶不要點擊任何由機器人“Spidey Bot”發布的鏈接。[2022/11/23 8:00:00]

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

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

監聽事件

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

CME將于8月29日推出歐元定價的比特幣及以太坊期貨:金色財經報道,芝商所(CME)計劃進一步擴大其加密貨幣衍生品產品,將于8月29日推出歐元定價的比特幣及以太坊期貨,等待監管審查。

為了匹配以美元計價的對手,比特幣歐元和以太坊歐元期貨合約的規模將是每份合約5個比特幣和50個以太坊。這些新合約將根據CME CF比特幣-歐元參考利率和CME CF以太坊-歐元參考利率以現金結算,它們作為比特幣和以太坊以歐元計價的每日一次參考利率,這些新的期貨合約將在芝商所上市并受其規則約束。[2022/8/4 12:02:29]

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

先回顧一下合約代碼:

Bitfinex移動應用程序推出LNURL支付功能:6月17日消息,據Bitfinex發推稱,我們正在幫助全球各地的人們通過LNURL支付獲得財務自由。現在,用戶可以直接在Bitfinex移動應用程序上通過比特幣閃電網絡幾乎零成本地向任何人支付。[2022/6/18 4:36:10]

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

幣贏
盡管有 1.11 億只SHIB被燒毀,但柴犬 (SHIB) 的燃燒率卻大幅下降_SHI

SHIBburn推特網站報道稱,燒毀率下降了近90%。上周共有26筆交易銷毀了1,178,830,489個SHIB代幣.

1900/1/1 0:00:00
哪些語言的特性會幫助大家開發?!_區塊鏈

大家好,這里是鏈客區塊鏈技術問答社區,上班的第一天,祝大家開工大家!今天講一講哪些開發語言的也行有助于開發系統.

1900/1/1 0:00:00
Shiba Inu 是格魯吉亞可接受的支付方式_加密貨幣

用于格魯吉亞商業采購的SHIB、BTC和ETH。BinancePay與CityPay的集成使這成為可能.

1900/1/1 0:00:00
鯨魚出售大量山寨幣:5,000,000% 的利潤!_Arkham

最近幾天,一個山寨幣項目在加密貨幣市場上留下了自己的印記。這種山寨幣價格的天文數字上漲幫助鯨魚賺取了近5,000,000%的利潤.

1900/1/1 0:00:00
區塊鏈到底是什么?_DAG

區塊鏈技術其實就是一個分散的不可信網絡,它利用本地資產,分散賬本和一些基于博弈論模型的算法來使網絡中的每一方達成共識.

1900/1/1 0:00:00
加密貨幣衍生品交易商青睞比特幣 ETF,而非較弱的以太坊基金_ETF

簡單來說 比特幣ETF重新受到加密貨幣衍生品交易者的青睞,但由于價格走勢疲軟,基于以太坊的產品吸引力下降。貝萊德的比特幣ETF申請重新激發了衍生品交易者的興趣,導致比特幣ETF交易量增加.

1900/1/1 0:00:00
ads