Web3js

Event 中的變數是否儲存在區塊鏈中?

  • June 24, 2020

嘿,我有以下活動

event Submitted(bytes32 indexed docHash);

事件由函式呼叫

function submitHash(bytes32 docHash) public onlyOwner() {
       Submitted(docHash);
   }

即使只呼叫了事件,看起來 docHash 也被保存在區塊鏈中。我有另一個程式碼

bytes32 docHash;
function submitHash(bytes32  docHash) public onlyOwner() {
       docHash = docHash;
   }

我想要的是將 docHash 儲存在區塊鏈中,以便證明存在帶有時間戳的 docHash。與事件一起儲存會花費更多嗎?是否可以搜尋 docHash,因為它已在其中建立索引?哪個會是更好的選擇?

如果一個事件被索引,這意味著它可以(很容易)被搜尋到:被索引的關鍵字有什麼作用?. 所有事件都儲存在事務中(因此也儲存在區塊鏈中),無論它是否被索引。

發出事件是在區塊鏈中儲存數據的最便宜的方式。以下是一些快速Google搜尋的計算:https ://www.reddit.com/r/ethdev/comments/78ugki/do_indexed_pa​​rameters_in_events_cost_more_gas/

事件的唯一缺點是任何合約都無法訪問它們的數據(甚至發送它們的合約也無法訪問)。因此,一旦發出事件,就無法在區塊鏈內部檢索該資訊 - 它只能在區塊鏈外部對節點客戶端可用。事件不會在區塊鏈/合約狀態中儲存任何資訊。

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