-
bitcoin $80321.174057 USD
-0.96% -
ethereum $2575.142223 USD
-2.03% -
tether $0.999663 USD
0.00% -
bnb $750.959081 USD
-1.45% -
xrp $1.382579 USD
-2.63% -
usd-coin $0.999883 USD
0.00% -
solana $108.705042 USD
-2.93% -
tron $0.340225 USD
0.75% -
zcash $1451.991806 USD
-7.40% -
hyperliquid $91.224900 USD
-2.16% -
dogecoin $0.085240 USD
-2.20% -
monero $522.519180 USD
-7.67% -
chainlink $11.986918 USD
-2.91% -
unus-sed-leo $8.886381 USD
0.12% -
cardano $0.220224 USD
-1.38%
堅固的智能合約中的事件是什麼?如何使用它們?
Solidity events enable dApps to efficiently track and respond to on-chain activities like token transfers, NFT minting, and real-time analytics.
2025/07/10 14:14
了解堅固的智能合約中的事件
在堅固的智能合約領域,事件是區塊鍊和外部應用之間交流的關鍵機制。事件本質上是存儲在以太坊虛擬機(EVM)上的日誌,可以由前端應用程序或鍊鍊服務等外部實體訪問。它們允許開發人員監視合同活動,而不必不斷對區塊鏈進行更改。
使用事件關鍵字在合同中聲明event ,然後使用名稱和參數。這些參數可以被索引或未索引,這會影響稍後可以查詢它們的方式。索引參數在檢索日誌時的作用像過濾器,從而使它們更有效地通過大型數據集進行搜索。
堅固宣布事件
要在堅固的智能合約中聲明事件,您將其定義與函數相似,但使用event關鍵字定義。這是一個基本示例:
pragma solidity ^0.8.0;合同mytract {event Transfer(address indexed from, address indexed to, uint amount); function sendTokens(address recipient, uint amount) public { // logic to transfer tokens emit Transfer(msg.sender, recipient, amount); }}
在這種情況下, Transfer事件具有三個參數:兩個地址( from和to ),一個代表金額的uint 。 indexed關鍵字允許在日誌中搜索這些字段。
索引參數應戰略性地使用,因為每個事件的限制最多為三個索引參數。未索引參數仍會記錄,但不能直接通過日誌查詢接口過濾。
執行期間發射事件
聲明事件後,必須在使用emit關鍵字執行函數期間觸發它,然後是事件名稱及其參數。
這是發射在實踐中的工作方式:
- 當調用
sendTokens函數時,它會執行一些內部邏輯。 - 處理交易後,它調用
emit Transfer(...),該傳輸記錄了區塊鏈上的事件數據。
然後可以通過分散應用程序中的Web3.js或Ethers.js(DAPPS)等工具來捕獲此發射的事件。
如果emit語句取決於函數邏輯的結果,則應始終放置在函數的末尾。這樣可以確保僅在成功應用所有狀態變化後才發射事件。
使用Web3庫聆聽事件
與事件部署合同後,下一步涉及設置聽眾以實時捕獲這些事件。這是使用Web3.js進行操作的方法:
- 首先,確保您可以訪問合同ABI和地址。
- 使用
web3.eth.Contract(abi, address)創建合同實例。 - 使用
.events.EventName()方法開始偵聽。
例子:
const contract = new web3.eth.Contract(abi, contractAddress);contract.events.transfer({fromBlock: 0},函數(錯誤,事件){
console.log(event);})) .on('data',函數(事件){
console.log('Event detected:', event.returnValues);})) .on('錯誤',Console.Error);
確保使用filter或topics等選項根據您的應用程序需求正確處理錯誤,並根據您的應用程序需求過濾事件。
事件的實際用例
事件不僅用於記錄 - 它們在DAPP中為幾個關鍵功能提供動力:
- 跟踪用戶操作:例如令牌轉移,NFT鑄造或投票結果。
- 同步後端系統:離鏈服務可以立即對鏈上事件做出反應。
- 審計和分析:事件提供了一種結構化的方式來分析合同行為隨著時間的流逝。
例如,分散的交易所每次發生交易時都可能發出活動。分析儀表板可以聆聽這些事件並實時更新圖表。
事件也可通過洞悉執行流和狀態變化,在開發過程中調試智能合約也很有用。
關於固體事件的常見問題解答
問:我可以在部署後修改事件嗎?不,一旦部署合同,其事件定義就會修復。任何更改都需要重新部署合同。
問:事件消耗多少汽油?與存儲操作相比,事件相對便宜,但它們仍然花費氣體。每個事件日誌都會根據參數的數量和大小增加交易的氣體使用情況。
問:在不同的區塊鏈上可以訪問事件嗎?事件特定於部署合同的鏈條。跨鏈相互作用將需要其他基礎架構,例如橋樑或後繼者。
問:事件是否會永遠存在於區塊鏈上?是的,事件是區塊鏈歷史的一部分,只要鏈條存在就可以使用。但是,訪問歷史日誌可能需要存檔節點或第三方API。
免責聲明:info@kdj.com
所提供的資訊並非交易建議。 kDJ.com對任何基於本文提供的資訊進行的投資不承擔任何責任。加密貨幣波動性較大,建議您充分研究後謹慎投資!
如果您認為本網站使用的內容侵犯了您的版權,請立即聯絡我們(info@kdj.com),我們將及時刪除。
- Polymarket 受到攻擊:韓國打擊非法賭博指控
- 2026-09-20 13:00:02
- Solana ETF 在比特幣有史以來最安靜的一周中實現了連續 12 週的資金流入
- 2026-09-20 13:10:02
- 在創紀錄的網路活動中,Solana 價格飆升超過下降趨勢線
- 2026-09-20 13:00:01
- Polygon 的 Sandeep Nailwal 在強勁的收入數據中推出 1 億 POL 銷毀計劃,挑戰競爭對手
- 2026-09-20 13:10:02
- Zcash、Zcash 價格、稅金和託管:在價格飆升的情況下探索隱私幣的監管迷宮
- 2026-09-20 13:20:02
- 2026 年 10 月 18 日:俄羅斯制裁最後期限臨近,加密貨幣市場準備迎接影響
- 2026-09-20 12:55:01
相關知識
如何查看SOL期貨成交量和持倉量?
2026-09-14 00:40:03
存取 SOL 期貨市場數據1. 前往SOL永續合約或季度合約上市的官方交易平台,例如Bybit、OKX或Bitget。 2. 找到SOL/USDT或SOL/USD期貨交易對頁面,切換到「合約概覽」或「市場資料」標籤。 3. 識別標記為「交易量(24 小時)」和「未平倉合約」的即時字段,這兩個字段通常...
如何查看XRP期貨交易量和持倉量?
2026-09-15 05:00:12
存取即時 XRP 期貨數據1. 造訪列出 XRP 永續合約和季度期貨合約的主要衍生性商品交易所,包括 Binance、Bybit、OKX 和 Bitget。 2. 導覽至XRP/USDT或XRP/USD交易對頁面,找到即時顯示交易量和持倉量資料的市場深度面板。 3. 確認顯示的持倉量是否反映了多頭/...
如何查看DOGE期貨成交量及持倉量?
2026-09-12 08:39:38
了解 DOGE 期貨交易量1. 期貨交易量是指在特定時間範圍內交易的DOGE份期貨合約的總數,通常以每天或每小時計算。 2. 高成交量通常表示市場參與度較高,並且可以顯示潛在的趨勢延續或逆轉,這取決於價格走勢背景。 3. 交易者監控交易量高峰以及突破或崩潰,以評估合法性-交易量上升支持的持續價格變動...
如何查看ETH期貨交易量及持倉量?
2026-09-16 19:00:18
存取即時 ETH 期貨數據1. Binance、Bybit和OKX等主要中心化交易所提供即時儀表板,顯示ETH永續和季度期貨交易量和持股。這些指標每 5-10 秒更新一次,無需登入其公開市場頁面即可存取。 2. Glassnode、CryptoQuant 和 Coinglass 等鏈上分析平台可以跨...
如何查看BTC期貨交易量及持倉量?
2026-09-12 15:19:55
BTC期貨指標的資料來源1. CoinGlass API v4 提供 30 多個交易所的即時融資利率、清算熱圖和精細的未平倉合約細分。 2. 幣安期貨 API 提供買賣深度、合約特定交易量歷史記錄和保證金比率快照的本機存取。 3. OKX 資料入口網站提供可下載的 CSV 檔案,其中包含每日結算價格...
如何閱讀SOLUSDT永續合約圖表?
2026-09-19 14:19:47
了解 SOLUSDT 價格結構1. SOLUSDT 永續合約圖表顯示 Solana 原生代幣相對於 Tether 報價的即時價格走勢。每根蠟燭代表一個定義的時間間隔(例如 1 分鐘、15 分鐘或 1 天),並編碼開盤價、最高價、最低價和收盤價。 2.上影線表示更高層的拒絕;下影線反映支撐區附近的買盤...
如何查看SOL期貨成交量和持倉量?
2026-09-14 00:40:03
存取 SOL 期貨市場數據1. 前往SOL永續合約或季度合約上市的官方交易平台,例如Bybit、OKX或Bitget。 2. 找到SOL/USDT或SOL/USD期貨交易對頁面,切換到「合約概覽」或「市場資料」標籤。 3. 識別標記為「交易量(24 小時)」和「未平倉合約」的即時字段,這兩個字段通常...
如何查看XRP期貨交易量和持倉量?
2026-09-15 05:00:12
存取即時 XRP 期貨數據1. 造訪列出 XRP 永續合約和季度期貨合約的主要衍生性商品交易所,包括 Binance、Bybit、OKX 和 Bitget。 2. 導覽至XRP/USDT或XRP/USD交易對頁面,找到即時顯示交易量和持倉量資料的市場深度面板。 3. 確認顯示的持倉量是否反映了多頭/...
如何查看DOGE期貨成交量及持倉量?
2026-09-12 08:39:38
了解 DOGE 期貨交易量1. 期貨交易量是指在特定時間範圍內交易的DOGE份期貨合約的總數,通常以每天或每小時計算。 2. 高成交量通常表示市場參與度較高,並且可以顯示潛在的趨勢延續或逆轉,這取決於價格走勢背景。 3. 交易者監控交易量高峰以及突破或崩潰,以評估合法性-交易量上升支持的持續價格變動...
如何查看ETH期貨交易量及持倉量?
2026-09-16 19:00:18
存取即時 ETH 期貨數據1. Binance、Bybit和OKX等主要中心化交易所提供即時儀表板,顯示ETH永續和季度期貨交易量和持股。這些指標每 5-10 秒更新一次,無需登入其公開市場頁面即可存取。 2. Glassnode、CryptoQuant 和 Coinglass 等鏈上分析平台可以跨...
如何查看BTC期貨交易量及持倉量?
2026-09-12 15:19:55
BTC期貨指標的資料來源1. CoinGlass API v4 提供 30 多個交易所的即時融資利率、清算熱圖和精細的未平倉合約細分。 2. 幣安期貨 API 提供買賣深度、合約特定交易量歷史記錄和保證金比率快照的本機存取。 3. OKX 資料入口網站提供可下載的 CSV 檔案,其中包含每日結算價格...
如何閱讀SOLUSDT永續合約圖表?
2026-09-19 14:19:47
了解 SOLUSDT 價格結構1. SOLUSDT 永續合約圖表顯示 Solana 原生代幣相對於 Tether 報價的即時價格走勢。每根蠟燭代表一個定義的時間間隔(例如 1 分鐘、15 分鐘或 1 天),並編碼開盤價、最高價、最低價和收盤價。 2.上影線表示更高層的拒絕;下影線反映支撐區附近的買盤...
看所有文章














