Solidity
哪種方法在區塊鏈中記錄數據有效?通過智能合約發送事件或在沒有價值的交易中發送數據?
我想在乙太坊區塊鏈中記錄數據。很明顯,我們可以創建一個發出事件並從中檢索數據的智能合約。
但是發送一個有數據但沒有 ETH 價值的交易(只有 gas,沒有 ETH)比部署一個發出事件的合約更有效嗎?
我想從以下幾個方面入手:
- 成本- 兩種方法中哪一種更便宜?
- 檢索- 是否有任何方法提供比其他方法更快的數據檢索?
- 刪除- 刪除智能合約數據是否也會刪除事件?
很想知道上面的一些答案。
謝謝!:)
在乙太坊中,您為發送的每個字節付費——無論是發送給智能合約還是發送給 EOA(外部擁有的地址)。使用智能合約,您還需要為執行(以及初始合約部署)付費。
我會說這取決於你想對數據做什麼。如果您只是將帶有任意數據的交易發送到任何地址,這是可能的,但非常非正常,因此此類功能的工具可能很差。也沒有數據的結構,也沒有太多其他的組織方式。
因此,如果您想要任何簡單的方法來訪問數據,您應該將其發送到合約(甚至可能發出事件)。
數據檢索始終可以從您的本地節點完成,因此無論數據以哪種方式儲存,它始終是高效的。
如果您刪除合約,它只會從該區塊開始從區塊鏈中刪除其字節碼 - 所有歷史記錄都會被保留。所以在那之後契約根本無法使用。