Gas
乙太坊事件日誌最大大小
我正在考慮通過發出事件將一些數據儲存在日誌中,但我無法輕易找到以下問題的答案:
- 一個事件的總大小限制是多少?
- 我可以在事件日誌數據中儲存大量 string32 嗎?它們使用什麼編碼?
- 需要多少費用?
流程將是:將交易發送到包含字元串的合約 -> 合約完成其工作 -> 合約發出帶有作業結果 + 傳遞的字元串的事件。
也歡迎就這個想法提出一般性建議。
大多數可能的答案都在黃皮書中。 根據公式 20,第 5 頁:
日誌條目 O 是記錄器地址 Oa 、一系列 32 字節日誌主題 Ot 和一些字節數據 Od 的元組
- 數據沒有大小限制:您將受到您擁有多少乙太幣的限制。(當然還有塊氣體限制。)
- 如果使用 Solidity,您似乎只能記錄單個
bytes32
數據。但是上面的黃皮書很清楚,日誌數據的字節數沒有限制。Solidity 最多允許 4 個主題(EVM 支持的最大值)。- 附錄 G 是所有 gas 成本的表格,這裡是與 LOG 相關的價格。375 gas 用於 LOG 操作。每個主題 375 gas。LOG 操作數據的每個字節需要 8 個氣體。