Solidity
為什麼智能合約不能訪問事件
瀏覽這裡的文章大多數都提到了說智能合約無法訪問事件數據的文件。
無法從合約內部訪問日誌及其事件數據(甚至無法從創建它們的合約中訪問)。
但是我沒有提到為什麼會這樣,如果將數據儲存在事件日誌中更便宜,為什麼契約不能讀取它,是開發人員做出的選擇還是我錯過了一些關於事件的事情使它們無法用於智能合約,我認為能夠與事件日誌互動,即使它是只讀的,也會非常有用。
這是二手資訊和猜測。我試圖聯繫那些參與原始活動的人。
- 日誌旨在用作第三方系統的證據,證明區塊鏈中發生了某些事情。現在,不同區塊鏈之間的橋樑使用日誌來實現此目的。
- 日誌旨在可清除,即完整節點僅記錄了 X 年 - 這就是 gas 成本較低的原因。
- 日誌被編入索引,因此它們很容易在客戶端進行搜尋(例如所有到該地址的交易)。然而,這樣的查詢在智能合約中成本太高。
- 因為日誌可能存在也可能不存在,因此無法從需要確定性的狀態訪問它們
請注意,其他一些區塊鏈在全節點級別沒有日誌概念。對於 EOS,您需要有一個第三方應用程序來索引區塊鏈事件,以便從中獲得有用的輸出,用於資源管理器、儀表板等應用程序。
例如,免費的 CloudFlare乙太坊節點僅儲存價值 128 個區塊的事件。