Transactions

乙太坊餘額與 UTXO 的優缺點是什麼?

  • December 10, 2021

乙太坊有一個更簡單的模型,它沒有像比特幣這樣的 UTXO(未使用的交易輸出)。乙太坊沒有 UTXO 會“放棄”什麼,它會獲得什麼?

比特幣 UTXO系統中的主要驗證約束是:

  • 每個引用的輸入都必須有效且尚未使用
  • 交易必須具有與每個輸入的輸入所有者匹配的簽名
  • 投入的總值必須等於或超過產出的總值

相比之下,基於乙太坊帳戶的系統中的功能是:

  • 全域狀態儲存具有餘額、程式碼和內部儲存的帳戶列表
  • 如果發送賬戶有足夠的餘額來支付交易,則交易有效,在這種情況下,發送賬戶被借記,接收賬戶被記入金額
  • 如果接收賬戶有程式碼,程式碼會執行,並且內部儲存也可能會更改,或者程式碼甚至可能會向其他賬戶創建額外的消息,從而導致進一步的借記和貸記

這些系統確實有各種權衡。例如,雖然乙太坊將賬戶餘額作為全域狀態的一部分來維護,但比特幣使用者的“餘額”是使用者擁有能夠生成有效簽名的私鑰的總價值。

一般來說,UTXO 的好處是:

  • 更高程度的隱私:如果使用者為他們收到的每筆交易使用一個新地址,則可能很難將賬戶相互關聯
  • 潛在的可擴展性範式:UTXO 在理論上與某些類型的可擴展性範式更兼容

帳戶的好處是:

  • 節省大量空間:因為每筆交易只需要做一個引用和一個簽名並產生一個輸出
  • 更大的可替代性:由於沒有區塊鏈級別的特定硬幣來源的概念,因此制定紅名單/黑名單方案變得不太實用
  • 簡單:更容易編碼和理解,尤其是涉及到更複雜的腳本時
  • 恆定的輕客戶端參考:輕客戶端可以通過在特定方向向下掃描狀態樹隨時訪問與帳戶相關的所有數據

賬戶範式的一個弱點是,為了防止重放攻擊,每筆交易都必須有一個“隨機數”,並且賬戶必須跟踪使用的隨機數。

接受的答案是對以下 wiki 的一個很好的總結:

https://eth.wiki/en/fundamentals/design-rationale#accounts-and-not-utxos

請參閱它以獲取更多詳細資訊,包括乙太坊的基本原理:

我們已經決定,特別是因為我們正在處理包含任意狀態和程式碼的 dapp,帳戶的好處大大超過了其他選擇。此外,本著 We Have No Features 原則的精神,我們注意到如果人們真的關心隱私,那麼可以通過合約內部的簽名數據包協議建構混合器和 coinjoin。

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