風險提示:防範以"虛擬貨幣""區塊鏈"名義進行非法集資的風險。——銀保監會等五部門
資訊
發現
搜索
登錄
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
查看行情
Solidity中的事件和日誌
Chainlink
特邀专栏作者
2022-02-11 10:58
本文約2256字,閱讀全文需要約4分鐘
在本文,我們將從智能合約開發者的角度來研究以太坊虛擬機(EVM)的日誌和事件功能。

Solidity事件對於智能合約開發者來說是不可或缺的,它允許我們對智能合約中特定變量進行測試,以自動化的方式改變前端等。總的來說,知道如何在Solidity中使用事件可以使智能合約的開髮變得更加容易。

在本文,我們將從智能合約開發者的角度來研究以太坊虛擬機(EVM)的日誌和事件功能,包括日誌和事件的用途,索引事件,以及如何在Hardhat和Brownie中使用日誌和事件。

EVM是以太坊和許多其他區塊鏈的核心。 EVM有一個日誌Solidity事件Solidity事件。事件允許我們“打印”在區塊鏈上的信息,這種方式比在智能合約中保存到公共存儲變量更容易搜索,且更省gas費。

日誌是區塊鏈上的一種特殊數據結構。它們不能被智能合約訪問,但能提供關於交易和區塊中發生的信息。正是因為它們不能被智能合約訪問,才使得它們的使用成本更低。

你也可以觀看下面的關於Solidity中的事件和日誌的視頻:

https://www.bilibili.com/video/BV1iL4y1s7ro?spm_id_from=333.999.0.0

訂閱

訂閱訂閱它們來“監聽”到某些事件。事實上,這就是一級標題一級標題

事件能用來做什麼?

現在,如果你不是Chainlink或Ethereum節點運營商,你可能會問事件對你有什麼影響呢。通過Solidity 事件,你可以做:

  1. 測試你的智能合約中的特定變量;

  2. 子圖

  3. 子圖

  4. 創建子圖一級標題

一級標題

事件是什麼樣子的?

下面的數據結構就是在Solidity中定義一個事件的方式:

你可以把事件看作是一個新的特殊類型。我們已經創建了一個名為storedNumber的事件“類型”。事件的名字叫storedNumber,可以容納一些變量。在這個事件中,有兩種參數:有索引的和無索引的。索引參數也被稱為“主題”,是事件中的可搜索參數。我們會在後文更多地談及這些內容。

然後我們可以像下面這樣發出一個事件:

下面是一個完整的合約實例:

現在,只要我們調用這個例子中的store函數,它就會發出一個storedNumber類型的事件。讓我們看看一個調用store函數、輸入為1的示例交易。我們可以在Kovan Etherscan上看到這個事務。

滾動到交易的“日誌”部分,我們可以看到以下內容:

一個事件可以分解為:

Address:地址,發出事件的合約或賬戶的地址。

Topics:主題,事件的索引參數。

你可以在

你可以在Solidity文檔中閱讀更多關於事件的內容。 “日誌”和“事件”經常被互換使用,因為作為智能合約的開發者,我們通常只關心日誌中的“事件”。然而,從技術上講,日誌也包括blockhash、address,以及通過調用eth_getLogs返回給你的區塊鏈節點的其他數據。你也可以閱讀更多有關布隆過濾器Hardhat中的事件

Hardhat中的事件

現在我們已經了解了什麼是事件,讓我們學習如何在Hardhat中訪問並使用它們。你可以克隆下面的repo,然後跟著操作:

git clone https://github.com/PatrickAlphaC/hardhat-events-logs

cd hardhat-events-logs

你需要跟著README.md中的說明完成依賴工具的安裝,其中包括Node、Yarn和Git。

如果你跟著README.md操作,你將能夠:

  1. 部署一個智能合約;

  2. 創建一個發出事件的交易;

  3. 查看這些事件的上下文。

Brownie中的事件Github repo一級標題

Brownie中的事件

Brownie中的事件幾乎是相同的,因為合約是完全相同的。

你可以克隆下面的repo,然後跟著操作:

你需要跟著README.md中的說明完成依賴工具的安裝,其中包括Node、Python、eth-brownie和Git。

如果你跟著README.md操作,你將能夠:

  1. 部署一個智能合約;

  2. 創建一個發出事件的交易;

  3. 查看這些事件的上下文。

總結Github repo總結

總結

日誌和事件是智能合約開發的重要組成部分,也是Chainlink和The Graph等項目的關鍵基礎設施。要想了解更多關於開發強大的智能合約的信息(利用你新掌握的事件技能),請務必前往查看Chainlink文檔,從現在開始創作吧! 。

Chainlink
ETH
AI總結
返回頂部
在本文,我們將從智能合約開發者的角度來研究以太坊虛擬機(EVM)的日誌和事件功能。
作者文庫
Chainlink
下載Odaily星球日報app
讓一部分人先讀懂 Web3.0
IOS
Android