市值: $2.5715T -1.88%
體積(24小時): $166.5655B 26.07%
恐懼與貪婪指數:

14 - 極度恐懼

  • 市值: $2.5715T -1.88%
  • 體積(24小時): $166.5655B 26.07%
  • 恐懼與貪婪指數:
  • 市值: $2.5715T -1.88%
加密
主題
加密植物
資訊
加密術
影片
頂級加密植物

選擇語言

選擇語言

選擇貨幣

加密
主題
加密植物
資訊
加密術
影片

堅固的事件是什麼以及如何使用它們?

Solidity events enable contracts to log data via the `emit` keyword, allowing dApps to listen for and process real-time updates using tools like Web3.js.

2025/07/20 20:07

了解堅固的事件

在堅固的情況下,事件是合同與外部世界進行交流的一種方式。它們允許智能合約發布可以通過分散應用程序(DAPP),錢包和其他外部服務來聆聽和處理的日誌。事件對於跟踪合同狀態的更改並為前端接口提供實時更新特別有用。

使用event關鍵字聲明實體事件,然後是事件名稱和參數列表。這些參數可以索引或不索引,在日誌中可以搜索索引參數。發出事件後,將其存儲在交易日誌中,該日誌是區塊鏈的一部分,但其他智能合約無法訪問。

堅固宣布事件

要聲明以堅固性聲明事件,您可以在合同範圍內使用event關鍵字。這是一個基本示例:

 pragma solidity ^0.8.0;合同mytract {



event MyEvent(address indexed sender, uint256 amount);

}

在此示例中, MyEvent是一個記錄發件人地址的事件和傳輸以太的數量。 indexed關鍵字允許在查詢日誌時將sender參數用作過濾器。

您可以在事件中最多包含三個索引參數。此限制是由於以太坊虛擬機(EVM)日誌結構造成的,該結構最多允許三個主題進行過濾。

堅固的散發事件

聲明事件後,可以使用emit關鍵字發射它。這通常是在發生明顯動作的功能中完成的。這是您可以發出的事件的方式:

 function sendFunds(address payable recipient, uint256 amount) public payable { recipient.transfer(amount); emit MyEvent(msg.sender, amount);

}

在此功能中,將資金轉移給收件人後,合同將帶有發件人的地址和已發送的金額的MyEvent事件。 emit語句必須在數字和類型中匹配事件的參數列表。

發出事件後,EVM會創建存儲在事務收據中的日誌條目。以後可以通過外部應用程序訪問此日誌。

使用web3.js聆聽事件

要利用DAPP中的事件,您需要使用Web3.js或Ethers.js等工具來收聽它們。這是您可以使用web3.js設置偵聽器的方法:

  • 初始化Web3 :使用Infura或MetAmask等提供商連接到以太坊節點。
  • 獲取合同實例:使用合同的ABI和地址創建合同對象。
  • 設置活動聽眾
 const myContract = new web3.eth.Contract(abi, contractAddress); mycontract.events.myevent()



.on('data', event => { console.log('Event triggered:', event.returnValues); }) .on('error', error => { console.error('Error listening to event:', error); });

該代碼會聽取MyEvent事件的聆聽,並在發射數據時記錄數據。 returnValues屬性包含事件觸發時傳遞的參數。

事件的實際用例

事件不僅僅是伐木;他們在DAPP開發中起著至關重要的作用。一些常見用例包括:

  • 跟踪令牌傳輸:ERC-20和ERC-721標準使用Transfer事件在帳戶之間登錄令牌時登錄令牌。
  • 通知前端更新:當合同狀態更改時,發出事件允許前端實時更新。
  • 審核和監視:事件提供合同活動的透明且不可變的記錄,這對於合規性和調試非常有用。

例如,在投票合同中,您可能每次投票時都會發出活動:

event VoteCast(address indexed voter, string proposal);

這允許外部系統跟踪投票活動並確保透明度。

使用活動的最佳實踐

在堅固的事件工作時,重要的是要遵循最佳實踐,以確保效率和清晰度:

  • 使用索引參數進行過濾:如果您需要根據特定參數查詢日誌,請標記為索引。
  • 不要過度使用事件:發出太多事件會增加氣體成本並混亂日誌。
  • 文檔事件參數:清楚地說明事件聲明中每個參數所代表的內容。
  • 使用描述性名稱:事件名稱應清楚地表明其代表的操作,例如TokensTransferredOwnershipTransferred

除非必要,否則避免在循環或高頻功能中發射事件,因為這會大大增加氣體消耗。

常見問題

問:可以使用事件在智能合約之間進行交流嗎?

不,事件不能用於合同溝通。它們存儲在交易日誌中,只能被鏈應用程序訪問。

問:事件消耗多少汽油?事件消耗氣體,因為它們是交易的一部分。確切的成本取決於參數的數量和大小,尤其是它們是否為索引。

問:事件是否永久存儲在區塊鏈上?是的,事件存儲在以太坊日誌中,這些日誌是區塊鏈的一部分。但是,智能合約無法直接訪問它們。

問:我可以沒有任何參數發出事件嗎?是的,您可以在沒有任何參數的情況下聲明和發射事件。這對於發出特定動作而無需傳遞任何數據很有用。

免責聲明:info@kdj.com

所提供的資訊並非交易建議。 kDJ.com對任何基於本文提供的資訊進行的投資不承擔任何責任。加密貨幣波動性較大,建議您充分研究後謹慎投資!

如果您認為本網站使用的內容侵犯了您的版權,請立即聯絡我們(info@kdj.com),我們將及時刪除。

相關知識

期貨中如何管理情緒和“報復性交易”?

期貨中如何管理情緒和“報復性交易”?

2026-02-05 00:19:32

了解期貨市場的情緒觸發因素1. 市場波動直接影響心理狀態,往往會因價格快速波動而加劇恐懼或興奮。 2. 損失會激活大腦的威脅反應系統,導致衝動決策而不是系統分析。 3. 社交媒體信息和群聊經常強化情緒化敘事,扭曲客觀風險評估。 4. 過度接觸實時損益更新會增加皮質醇水平,從而降低頭寸管理期間的認知靈...

如何利用恐懼和貪婪指數分析市場情緒?

如何利用恐懼和貪婪指數分析市場情緒?

2026-02-05 07:40:21

了解恐懼和貪婪指數1. 恐懼和貪婪指數是一個綜合指標,旨在量化加密貨幣投資者普遍的情緒狀態。它匯總了多個來源的數據,包括波動性、市場勢頭、社交媒體活動、調查結果、Bitcoin 主導地位和搜索趨勢。 2. 0分代表極度恐懼,100分代表極度貪婪。 0-24 之間的值表示強烈恐懼,25-49 表示恐懼...

如何使用成交量概況來查找關鍵的期貨入場水平?

如何使用成交量概況來查找關鍵的期貨入場水平?

2026-02-04 23:39:35

了解卷配置文件結構1. 成交量概況顯示指定時間段內特定價格水平的交易量分佈,在圖表上形成水平直方圖。 2. 控制點(POC)代表成交量集中度最高的價格水平,通常充當價格反轉的磁石。 3. 價值區域高位 (VAH) 和價值區域低位 (VAL) 包含佔總交易量 70% 的範圍,標誌著統計上顯著的支撐和阻...

如何以100倍槓桿交易Bitcoin期貨? (高風險設置)

如何以100倍槓桿交易Bitcoin期貨? (高風險設置)

2026-02-05 11:00:08

了解 Bitcoin 期貨機制1. Bitcoin 期貨合約代表在未來以預定價格和日期買賣 BTC 的協議,在受監管或離岸衍生品交易所進行交易。 2. 與現貨交易不同,期貨允許交易者通過多頭和空頭頭寸從價格上漲和下跌中獲利。 3. 每個合約都有標準化的規格——報價大小、保證金要求、資金費率區間和清算...

如何利用全倉槓桿交易最大化資金效率?

如何利用全倉槓桿交易最大化資金效率?

2026-02-05 00:40:24

全倉保證金交易基礎知識1. 全倉保證金交易允許交易者使用其全部賬戶餘額作為抵押品同時跨多個市場開倉。 2. 與逐倉保證金不同,全倉保證金會動態分配錢包中持有的所有資產的權益。 3. 當一種資產經歷短期波動而其他資產保持穩定或增值時,該模型降低了過早清算的風險。 4. 保證金利用率是根據投資組合範圍內...

重大新聞事件期間如何交易加密合約? (消費者物價指數/聯邦公開市場委員會)

重大新聞事件期間如何交易加密合約? (消費者物價指數/聯邦公開市場委員會)

2026-02-05 09:59:37

了解市場對宏觀數據發布的敏感性1. 由於加密貨幣期貨市場與貨幣政策預期直接相關,因此在美國 CPI 和 FOMC 公告期間,加密貨幣期貨市場表現出明顯的波動。 2. Bitcoin 和以太坊永續合約通常會在官方數據下降前幾分鐘將融資利率擴大 50-200 個基點,反映了預期定位。 3. 在發佈時間戳...

期貨中如何管理情緒和“報復性交易”?

期貨中如何管理情緒和“報復性交易”?

2026-02-05 00:19:32

了解期貨市場的情緒觸發因素1. 市場波動直接影響心理狀態,往往會因價格快速波動而加劇恐懼或興奮。 2. 損失會激活大腦的威脅反應系統,導致衝動決策而不是系統分析。 3. 社交媒體信息和群聊經常強化情緒化敘事,扭曲客觀風險評估。 4. 過度接觸實時損益更新會增加皮質醇水平,從而降低頭寸管理期間的認知靈...

如何利用恐懼和貪婪指數分析市場情緒?

如何利用恐懼和貪婪指數分析市場情緒?

2026-02-05 07:40:21

了解恐懼和貪婪指數1. 恐懼和貪婪指數是一個綜合指標,旨在量化加密貨幣投資者普遍的情緒狀態。它匯總了多個來源的數據,包括波動性、市場勢頭、社交媒體活動、調查結果、Bitcoin 主導地位和搜索趨勢。 2. 0分代表極度恐懼,100分代表極度貪婪。 0-24 之間的值表示強烈恐懼,25-49 表示恐懼...

如何使用成交量概況來查找關鍵的期貨入場水平?

如何使用成交量概況來查找關鍵的期貨入場水平?

2026-02-04 23:39:35

了解卷配置文件結構1. 成交量概況顯示指定時間段內特定價格水平的交易量分佈,在圖表上形成水平直方圖。 2. 控制點(POC)代表成交量集中度最高的價格水平,通常充當價格反轉的磁石。 3. 價值區域高位 (VAH) 和價值區域低位 (VAL) 包含佔總交易量 70% 的範圍,標誌著統計上顯著的支撐和阻...

如何以100倍槓桿交易Bitcoin期貨? (高風險設置)

如何以100倍槓桿交易Bitcoin期貨? (高風險設置)

2026-02-05 11:00:08

了解 Bitcoin 期貨機制1. Bitcoin 期貨合約代表在未來以預定價格和日期買賣 BTC 的協議,在受監管或離岸衍生品交易所進行交易。 2. 與現貨交易不同,期貨允許交易者通過多頭和空頭頭寸從價格上漲和下跌中獲利。 3. 每個合約都有標準化的規格——報價大小、保證金要求、資金費率區間和清算...

如何利用全倉槓桿交易最大化資金效率?

如何利用全倉槓桿交易最大化資金效率?

2026-02-05 00:40:24

全倉保證金交易基礎知識1. 全倉保證金交易允許交易者使用其全部賬戶餘額作為抵押品同時跨多個市場開倉。 2. 與逐倉保證金不同,全倉保證金會動態分配錢包中持有的所有資產的權益。 3. 當一種資產經歷短期波動而其他資產保持穩定或增值時,該模型降低了過早清算的風險。 4. 保證金利用率是根據投資組合範圍內...

重大新聞事件期間如何交易加密合約? (消費者物價指數/聯邦公開市場委員會)

重大新聞事件期間如何交易加密合約? (消費者物價指數/聯邦公開市場委員會)

2026-02-05 09:59:37

了解市場對宏觀數據發布的敏感性1. 由於加密貨幣期貨市場與貨幣政策預期直接相關,因此在美國 CPI 和 FOMC 公告期間,加密貨幣期貨市場表現出明顯的波動。 2. Bitcoin 和以太坊永續合約通常會在官方數據下降前幾分鐘將融資利率擴大 50-200 個基點,反映了預期定位。 3. 在發佈時間戳...

看所有文章

User not found or password invalid

Your input is correct