Contract-Design
不斷增長的合約儲存如何增加天然氣支出?
為簡單起見,假設我想在乙太坊之上創建一種加密貨幣。
“處理”這種加密貨幣的合約將具有將地址與餘額相關聯的映射。
現在,讓我們想像一下,這是一種非常流行的貨幣,被全世界數百萬人使用,每年進行數十億筆交易。
隨著越來越多的人開始“註冊”以使用該代幣,合約的儲存使用量無限增長。
問題:
- 為了使合約執行,需要在記憶體中載入多少儲存空間?
- 儲存的大小是否會影響執行它所需的記憶體量?
- 所有這些數據是否總是儲存在鏈數據中?還是其中一些進入狀態數據?
- 增加契約儲存量究竟如何增加天然氣支出?
儲存的數據完全儲存在狀態中。除了您的合約在程式碼中明確載入的那些條目外,無需將任何儲存載入到 VM 記憶體中即可在合約上執行交易。
因此,gas 成本與您擁有的儲存數據量無關(除非您正在執行諸如迭代每個儲存值之類的操作)。你需要為儲存或更新一個值支付 gas,從 state 中檢索數據需要支付更少的 gas,並為從儲存中刪除值返還一些 gas。