Transactions
為什麼乙太坊中的交易嘗試不是普通的默克爾嘗試?
我知道乙太坊區塊頭包含一個用於全域狀態的 Merkle Patricia Trie (MPT) 根,一個用於收據(我不明白但目前不關注),一個用於塊中的所有交易。
我也理解為什麼 MPT 可能更有效地用於狀態樹,即因為它更容易保護圍繞帳戶 ID 建構並由帳戶 ID 引用的數據。
但是我不明白為什麼該塊的事務樹需要是 MPT 而不是普通的 Merkle Trie。大概你可以只使用塊中的交易列表來修改狀態樹,並確保交易列表在普通的 Merkle Trie 根下是有效的。
我看不出將交易結構化為 Patricia Trie 的任何好處,其中交易可能由其唯一的雜湊組織,並且指向永遠不會改變的數據。
那麼為什麼不直接使用普通的 Merkle Trie 進行交易呢?是否只是為了與儲存和狀態嘗試的結構方式保持一致(並且 MPT 結構的好處更清晰)?
首先,應該注意的是,沒有“普通的 Merkle Trie”這樣的東西。在比特幣中發現的默克爾樹不是基數樹(trie)。
乙太坊使用 Patricia Trie 進行交易的主要原因僅僅是一致性。目前協議恰好指定了一種樹狀資料結構。切換到標準的 Merkle 樹需要指定一個額外的資料結構,以及在每個客戶端中實現這個資料結構。重用現有機器更簡單。