Solidity

哪種方法在區塊鏈中記錄數據有效?通過智能合約發送事件或在沒有價值的交易中發送數據?

  • July 13, 2020

我想在乙太坊區塊鏈中記錄數據。很明顯,我們可以創建一個發出事件並從中檢索數據的智能合約。

但是發送一個有數據但沒有 ETH 價值的交易(只有 gas,沒有 ETH)比部署一個發出事件的合約更有效嗎?

我想從以下幾個方面入手:

  1. 成本- 兩種方法中哪一種更便宜?
  2. 檢索- 是否有任何方法提供比其他方法更快的數據檢索?
  3. 刪除- 刪除智能合約數據是否也會刪除事件?

很想知道上面的一些答案。

謝謝!:)

在乙太坊中,您為發送的每個字節付費——無論是發送給智能合約還是發送給 EOA(外部擁有的地址)。使用智能合約,您還需要為執行(以及初始合約部署)付費。

我會說這取決於你想對數據做什麼。如果您只是將帶有任意數據的交易發送到任何地址,這是可能的,但非常非正常,因此此類功能的工具可能很差。也沒有數據的結構,也沒有太多其他的組織方式。

因此,如果您想要任何簡單的方法來訪問數據,您應該將其發送到合約(甚至可能發出事件)。

數據檢索始終可以從您的本地節點完成,因此無論數據以哪種方式儲存,它始終是高效的。

如果您刪除合約,它只會從該區塊開始從區塊鏈中刪除其字節碼 - 所有歷史記錄都會被保留。所以在那之後契約根本無法使用。

引用自:https://ethereum.stackexchange.com/questions/84983