8.2 什麼是事件主題
主題是用來把事件索引化(index)的數值。沒有主題,就不能搜尋事件。只要呼叫一個事件,就生成一個預設主題(被視為事件的第一個主題)。一個事件最多可以有四個主題。主題總是按照相同順序生成。可以使用一個或者多個主題檢索事件。
第一個主題是事件簽名。剩下三個主題是索引化的引數數值。如果引數是字串、位元組或者陣列,則主題是它的keccak-256雜湊。
下面通過一個例子來幫助讀者理解主題的含義。假設有一個事件採用這個形式:
這裡共生成如下四個主題:
·0xb62a11697c0f56e93f3957c088d492b505b9edd7fb6e7872a93b41cdb2020644。 這是第一個主題,它用web3.sha3("ping(string,int256,uint256,string,int256)")生成。可以看到所 有型別都採用規範格式。
·0x30ee7c926ebaf578d95b278d78bc0cde445887b0638870a26dcab901ba21d3f2。這是第二個主題,它用web3.sha3("RandomString")生成。
·第三個和第四個主題分別是 0x000000000000000000000000000000000000000000000000000000000000000c和 0x0000000000000000000000000000000000000000000000000000000000000017,即以十六進 製表示的數值。它們分別用EthJS.Util.bufferToHex(EthJS.Util.setLengthLeft(12,32))和 EthJS.Util.bufferToHex(EthJS.Util.setLengthLeft(23,32))計算。
以太坊節點將在內部使用主題建立索引,這樣很容易基於簽名和索引化的數值找到事件。
假設想獲取前面事件的事件呼叫,其中第一個實參是Random String,第三個實參是23或者78,則可以用web3.eth.getFilter找到它們:
所以這裡讓節點從區塊鏈返回0x853cdcb4af7a6995808308b08bb78a74de1ef899 合約地址發出的全部事件,其第一個主題是 0xb62a11697c0f56e93f3957c088d492b505b9edd7fb6e7872a93b41cdb2020644,第二個主題 是0x30ee7c926ebaf578d95b278d78bc0cde445887b0638870a26dcab901ba21d3f2,第三個主 題是0x0000000000000000000000000000000000000000000000000000000000000017或者 0x000000000000000000000000000000000000000000000000000000000000004e。
在程式程式碼中,注意主題陣列數值的順序。順序很重要。
來源:我是碼農,轉載請保留出處和連結!
本文連結:http://www.54manong.com/?id=542
相關文章
- 什麼是雲主機,雲主機是什麼樣的?
- VSCode中最好的深色模式主題是什麼?VSCode模式
- 什麼是事件門戶?- solace事件
- 什麼是主機安全?
- 主題公園的核心競爭力是什麼?
- 雲主機是什麼?可以做什麼?
- javascript事件捕獲是什麼意思JavaScript事件
- java事件處理模型是什麼Java事件模型
- 什麼是主鏈系統?主鏈系統有什麼作用?
- 什麼是虛擬主機流量
- 虛擬主機流量是什麼
- 海外主機是什麼意思?與國內主機有什麼區別?
- ZBlogPHP主題檔案下template和compile的區別是什麼?PHPCompile
- 事件迴圈Event loop到底是什麼事件OOP
- win10主題在哪個資料夾_win10主題儲存的路徑是什麼Win10
- 主從複製是啥或者主從複製的原理是什麼?
- 什麼是工控主機?工控主機安卓主機板有哪些配置?安卓
- JSONP的原理是什麼?解決什麼問題?JSON
- 解釋下什麼是事件代理?應用場景?事件
- 雲主機的優缺點是什麼呢
- 什麼是產品主導型增長? - productled
- 什麼是DHCP動態主機配置協議協議
- 什麼是智慧礦山?它能解決什麼問題?
- hero 和 features 在主題中代表什麼意思
- 什麼是獨立IP,獨立IP主機怎麼樣?
- 什麼是事件管理?看這一篇就夠了!事件
- 【Java面試】什麼是可重入,什麼是可重入鎖? 它用來解決什麼問題?Java面試
- 什麼是單主資料庫複製? -Vlad Mihalcea資料庫
- [MySQL]為什麼主鍵最好是有序遞增的MySql
- 平行鏈和主鏈開發是什麼關係?
- 什麼是虛擬主機,有什麼優勢,雲南ip伺服器伺服器
- 什麼是cookie,什麼是sessionCookieSession
- 這是什麼這是什麼
- 什麼是分而治之?什麼是WBS?
- 什麼是DNS,什麼是HostsDNS
- 什麼是WebAuthn、FIDO 是什麼?Web
- Nginx 常用面試題-什麼是NginxNginx面試題
- 什麼是P問題、NP問題和NPC問題