-
bitcoin $64426.275079 USD
-3.96% -
ethereum $1793.025282 USD
-5.24% -
tether $0.999493 USD
0.05% -
bnb $590.176397 USD
-4.18% -
usd-coin $0.999903 USD
0.01% -
xrp $0.956416 USD
-2.81% -
solana $70.390953 USD
-6.30% -
tron $0.307252 USD
-1.68% -
hyperliquid $65.400630 USD
-5.44% -
zcash $897.603019 USD
-0.85% -
monero $489.783944 USD
-7.62% -
dogecoin $0.057896 USD
-7.24% -
unus-sed-leo $9.119479 USD
-1.58% -
chainlink $9.104602 USD
-4.60% -
cardano $0.150431 USD
-7.46%
堅固的智能合約中的事件是什麼?如何使用它們?
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),我們將及時刪除。
- Sui Network、Toncoin、TRON:駕馭不斷變化的加密貨幣格局
- 2026-11-15 00:35:01
- OKX Europe提高VIP流動性質押的快速贖回限額,引領業界步伐
- 2026-11-14 16:35:02
- 比特幣零售需求因價格下跌而暴跌,技術指標確認看跌趨勢
- 2026-11-14 16:35:02
- Pyth Network、Douro Labs 和 CFTC 監管:塑造加密貨幣市場誠信的未來
- 2026-11-14 17:35:15
- Blockstream 透過 Secure-MPC 和 Thales HSM 提升企業託管能力,實現無與倫比的安全性
- 2026-11-14 17:35:15
- XRP 價格預測:1000 美元會讓大家變得富有嗎?技術面建議值得關注的關鍵水平
- 2026-11-14 07:24:53
相關知識
如何計算持有 BTCUSDT 期貨部位的總成本
2026-10-26 04:06:35
BTCUSDT 期貨部位的總成本構成1. 持有BTCUSDT期貨部位的總成本包括顯性費用和隱性費用。顯性成本包括開倉和平倉交易費用,而隱性成本主要來自一段時間內的資金費率支付或收入。 2. 開倉費用是依照入場時的名目價值與交易所的吃單/掛單費用表的乘積計算-對於主要平台上的吃單來說,開倉費用通常在 ...
如何同時監控 XRPUSDT 資金費率和未平倉合約
2026-10-20 18:39:42
XRPUSDT 永續合約的資金費率機制1. XRPUSDT永續合約的資金費率每八小時計算一次,使用XRP和USDT計價借貸市場之間的溢價指數和利差。 2. Binance、Bybit 和 OKX 等交易所在其衍生性商品 API 端點中發布即時資金費率數據,從而實現儀表板或警報系統的自動攝取。 3. ...
如何設定 SOLUSDT 永續合約損益兩平止損
2026-10-23 09:34:18
了解損益平衡停損機制1. 損益平衡停損是一種動態訂單,隨著部位獲利變動而向上調整,執行時鎖定零淨損失。 2. 它僅在交易達到預定利潤閾值後才起作用——通常是初始風險或入場費的 1 至 2 倍。 3. 在幣安 SOLUSDT 永續合約上,此邏輯必須手動觸發或編寫腳本,因為本機交易所 UI 不會自動將停...
如何使用幣安期貨計算器進行 ETHUSDT 交易
2026-10-21 02:00:11
了解幣安期貨計算器介面1. 此計算器直接嵌入幣安合約交易介面中,可透過訂單輸入面板下的 ETHUSDT 永續合約頁面存取。 2. 隨著使用者調整輸入欄位(包括倉位大小、入場價格、槓桿水平以及止盈或停損水平),它會動態更新。 3. 接受多種格式的輸入值:合約數量(ETH)、名目價值(USDT)或保證金...
合約強平前如何查看BTCUSDT標記價格
2026-10-26 12:20:18
了解BTCUSDT期貨的標記價格1. 標記價格是交易所為防止市場波動期間出現不公平清算而使用的計算值。 2.反映了來自多個來源的公平、穩定的參考價格,包括指數價格和資金費率。 3. 與最新成交價不同,標記價格包含頂級現貨交易所的時間加權平均值,以降低操縱風險。 4. 在幣安上,BTCUSDT標記價格...
如何調整 TRUMPUSDT 永續合約的槓桿
2026-10-30 22:19:37
了解 TRUMPUSDT 永續合約機制1. TRUMPUSDT 是在多個一級衍生品交易所上市的主題永續期貨合約,旨在追蹤圍繞美國政治敘事而非基礎資產基本面的價格情緒。 2.依平台不同,採用標準的反向或線性結算邏輯,以USDT作為報價和保證金資產。 3. 合約使用的標記價格源自現貨 BTC/USDT、...
如何計算持有 BTCUSDT 期貨部位的總成本
2026-10-26 04:06:35
BTCUSDT 期貨部位的總成本構成1. 持有BTCUSDT期貨部位的總成本包括顯性費用和隱性費用。顯性成本包括開倉和平倉交易費用,而隱性成本主要來自一段時間內的資金費率支付或收入。 2. 開倉費用是依照入場時的名目價值與交易所的吃單/掛單費用表的乘積計算-對於主要平台上的吃單來說,開倉費用通常在 ...
如何同時監控 XRPUSDT 資金費率和未平倉合約
2026-10-20 18:39:42
XRPUSDT 永續合約的資金費率機制1. XRPUSDT永續合約的資金費率每八小時計算一次,使用XRP和USDT計價借貸市場之間的溢價指數和利差。 2. Binance、Bybit 和 OKX 等交易所在其衍生性商品 API 端點中發布即時資金費率數據,從而實現儀表板或警報系統的自動攝取。 3. ...
如何設定 SOLUSDT 永續合約損益兩平止損
2026-10-23 09:34:18
了解損益平衡停損機制1. 損益平衡停損是一種動態訂單,隨著部位獲利變動而向上調整,執行時鎖定零淨損失。 2. 它僅在交易達到預定利潤閾值後才起作用——通常是初始風險或入場費的 1 至 2 倍。 3. 在幣安 SOLUSDT 永續合約上,此邏輯必須手動觸發或編寫腳本,因為本機交易所 UI 不會自動將停...
如何使用幣安期貨計算器進行 ETHUSDT 交易
2026-10-21 02:00:11
了解幣安期貨計算器介面1. 此計算器直接嵌入幣安合約交易介面中,可透過訂單輸入面板下的 ETHUSDT 永續合約頁面存取。 2. 隨著使用者調整輸入欄位(包括倉位大小、入場價格、槓桿水平以及止盈或停損水平),它會動態更新。 3. 接受多種格式的輸入值:合約數量(ETH)、名目價值(USDT)或保證金...
合約強平前如何查看BTCUSDT標記價格
2026-10-26 12:20:18
了解BTCUSDT期貨的標記價格1. 標記價格是交易所為防止市場波動期間出現不公平清算而使用的計算值。 2.反映了來自多個來源的公平、穩定的參考價格,包括指數價格和資金費率。 3. 與最新成交價不同,標記價格包含頂級現貨交易所的時間加權平均值,以降低操縱風險。 4. 在幣安上,BTCUSDT標記價格...
如何調整 TRUMPUSDT 永續合約的槓桿
2026-10-30 22:19:37
了解 TRUMPUSDT 永續合約機制1. TRUMPUSDT 是在多個一級衍生品交易所上市的主題永續期貨合約,旨在追蹤圍繞美國政治敘事而非基礎資產基本面的價格情緒。 2.依平台不同,採用標準的反向或線性結算邏輯,以USDT作為報價和保證金資產。 3. 合約使用的標記價格源自現貨 BTC/USDT、...
看所有文章














