英語のオリジナルリンク: https://medium.com/nervosnetwork/my-comparison-between-the-utxo-and-account-model-821eb46691b2
現在のブロックチェーンの世界には、UTXO モデル (Unspent Transaction Output) とアカウント モデルという 2 つの主要な記録保持方法があります。ビットコインはUTXOモデルを使用し、イーサリアムはアカウントモデルを使用します。
ビットコインはもともとピアツーピアの電子キャッシュ システムとして設計され、各トランザクションは前のトランザクションによって生成された UTXO を消費し、その後、アカウントの残高はそのアカウントに属するすべての未使用の UTXO のセットになります。ビットコインのグローバル状態は、現在使用されていないすべての UTXO の集合です。イーサリアムは、ユーザーがスマート コントラクトを記述し、さまざまな分散型アプリケーションを作成できるチューリング完全プログラミング言語をサポートする、より一般的なプロトコルを作成する予定です。 UTXO モデルには状態の保存とプログラム可能性の点で欠点があるため、イーサリアムではアカウント モデルが導入されました。
以下では、2 つのモデルの長所と短所をさらに詳しく説明します。
UTXOモデル
UTXO モデルでは、トランザクションは UTXO コレクションへの変更のみを表します。口座と残高の概念は UTXO コレクションのより高度な抽象化であり、口座番号と残高の概念はウォレットにのみ存在します。
アドバンテージ:
計算はオフチェーンで行われ、トランザクション自体が結果であり証明でもあります。ノードは検証を実行するだけで済み、トランザクションで追加の計算を実行する必要はなく、追加の状態ストレージもありません。トランザクション自体の出力UTXOの計算はウォレット内で完結するため、トランザクションの計算負担は全てウォレット側で負担され、チェーンの負担がある程度軽減されます。
Coinbase トランザクションを除き、トランザクションの入力は常に UTXO の背後でリンクされます。トランザクションは再実行できず、トランザクションの順序と依存関係を簡単に検証でき、トランザクションが消費されたかどうかも簡単に証明できます。
UTXO モデルはステートレスであり、同時処理が容易です。
P2SH タイプのトランザクションのプライバシーが向上します。トランザクションの入力は相互に関連しておらず、CoinJoin などのテクノロジーを使用して、ある程度のプライバシーを高めることができます。
欠点:
より複雑なロジックを実装することはできず、プログラム性も劣ります。状態の保存が必要な複雑なロジックやコントラクトの場合、実装は難しく、状態空間の使用率は比較的低くなります。
入力が増えると、監視スクリプトも増加します。署名自体は、より多くの CPU とストレージ容量を消費します。
アカウントモデル
Account モデルの場合、Account モデルはワールド状態を保存し、チェーンの状態は通常、ブロック内の StateRoot および ReceiptRoot の形式で合意されます。トランザクションは単なるイベントそのものであり、トランザクションの合意と状態の合意は本質的に分離できます。
アドバンテージ:
コントラクトはコードの形式でアカウントに保存され、アカウントは独自の状態を持ちます。このモデルはプログラム可能性が高く、開発者にとって理解しやすく、幅広いシナリオが可能です。
一括取引の方が安くなります。 UTXO では、マイニング プールがマイナーに手数料を支払うことを想像してください。各入力と出力には個別の監視スクリプトまたはロック スクリプトが必要になるため、トランザクション自体が非常に大きくなり、署名検証とトランザクション ストレージがチェーン上の貴重なリソースを消費します。 。アカウント モデルでは、契約を通じてコストを大幅に削減できます。
欠点:
アカウント モデルのトランザクション間には依存関係がないため、リプレイの問題を解決する必要があります。
ライトニングネットワーク/サンダーネットワーク、プラズマなどの実装では、ユーザー証拠にはより複雑な証明メカニズムが必要であり、メインチェーンへのサブチェーンの状態移行にはより複雑なプロトコルが必要です。
UTXO VS アカウント
上記のメリットとデメリットを分析して比較してみましょう。
まず、計算問題についてですが、
UTXO トランザクション自体にはブロックチェーンの複雑な計算がありません。簡単に言えば、それは 2 つの理由があります。まず、ビットコイン自体のトランザクションのほとんどは P2SH であり、Witness スクリプトは完全ではありません。ループ文が存在します。イーサリアムなどのアカウント モデルの場合、ほとんどの計算がチェーン上で行われ、チューリングが完了するため、一般に計算はより複雑になり、契約のセキュリティが比較的大きな問題になりやすいです。もちろん、それがチューリング完全であるかどうかは、それがアカウントモデルであるかどうかに直接関係しません。しかし、アカウント モデルの導入後は、契約が誰にも管理されない独立したエンティティとして存在できるため、これは非常に重要です。
2つ目は、UTXOのほうが同時実行しやすいという問題についてです。
UTXO モデルでは、ワールド状態は UTXO のコレクションであり、トランザクションをより高速に検証するために、ノードはすべての UTXO のインデックスをメモリに保存する必要があるため、UTXO は非常に高価です。長期間使用されなかった UTXO は常にノードのメモリを占有します。したがって、このモデルの場合、理論的には、ユーザーは UTXO の生成を減らし、UTXO の消費を増やすことが推奨されるはずです。ただし、並列トランザクションに UTXO を使用する場合は、入力としてより多くの UTXO が必要になると同時に、同時実行性を確保するためにより多くの UTXO を生成する必要があります。これは本質的にネットワークに対するダスト攻撃です。また、トランザクションはウォレット内で構築されるため、より複雑なウォレットの設計が必要になります。アカウント モデルを振り返ると、各アカウントは互いに影響を及ぼさない別個のステート マシンとみなすことができ、アカウントはメッセージを通じて通信します。したがって、理論的には、ユーザーが複数のトランザクションを開始し、これらのトランザクションが互いに同じアカウントを呼び出さない場合、トランザクションは同時に実行できます。
第三に、アカウントモデルのトランザクションリプレイの問題について
イーサリアムでは、Accountにnonceを追加する方式を採用しており、各トランザクションにnonceが対応しており、その都度nonceがインクリメントされます。この方法はリプレイの問題を解決することを目的としていますが、シーケンシャルな問題も引き起こし、トランザクションを並列化できなくなります。たとえば、イーサリアムでは、ユーザーが複数のトランザクションを送信すると、最初のトランザクションのパッケージ化に失敗すると、後続のトランザクションは正常にパッケージ化されません。 CITA では、ランダム ノンス スキームを使用するため、ユーザー トランザクション間の順序依存性がなく、シリアル エラーが発生せず、トランザクションの並列処理も可能になります。
4 番目に、ストレージの問題
UTXO モデルでは状態はトランザクション内でのみ保存できるためです。アカウント モデルの状態はノードに保存され、ブロックではコンセンサス StateRoot のみが必要です。このように、オンチェーン データの場合、アカウント モデルは実際には小さくなり、ネットワーク送信の量も少なくなります。同時に、MPT メソッドを使用して状態がノード上にローカルに保存されるため、より効率的になります。スペースの使用。たとえば、A が B に送金する場合、UTXO に 2 つの入力と 2 つの出力がある場合、アカウント モデルでは 2 つの監視スクリプトと 2 つのロック スクリプトが必要となり、必要な署名は 1 つだけで、トランザクションの内容には金額のみが含まれます。 。最新のSegregated Witnessの実装後、ビットコイントランザクションデータの量も大幅に削減されましたが、実際には、検証ノードとフルノードは依然としてWitnessスクリプトを送信して検証する必要があります。
第 5 に、ライトノードが特定のアドレスステータスを取得する場合、UTXO はより複雑です。
たとえば、ウォレットでは、フル ノードから特定のアドレスに関するすべての UTXO をリクエストする必要があります。フル ノードはいくつかの UTXO を送信できますが、UTXO が消費されたかどうかを検証することは困難です。ウォレットは、UTXO が部分的なコレクションではなく完全なセットであることを証明します。 Account モデルは非常に単純です。State の対応する州は、現在の州の State Proof によって契約データの信頼性を証明できます。もちろん、UTXO の場合、UTXO のルートも各ブロックで検証できます。これはビットコインの現在の実装に関連するものであり、UTXO の機能ではありません。
結論は
要約すると、アカウント モデルにはプログラマビリティと柔軟性の点でより多くの利点があります。単純なビジネスとクロスチェーンでは、UTXO には非常にユニークで画期的な利点があります。どのモデルを選択するかは、特定のビジネス シナリオに基づいて選択する必要があります。