1. 現在チェーンで使用されているモデルは何ですか?

Ethereum、EOS、Solana などの有名なチェーンはすべてアカウント モデルを使用しており、UTXO モデルを使用しているのは BTC や DOGE などの一部の確立されたプロジェクトのみであり、プロジェクトの 90% 以上がアカウント モデルを使用しているとさえ言えます。 、LTC、もちろん、Layer2 で OP スキームを使用する FUEL など、いくつかの比較的新しいプロジェクトでもこのモデルが使用されます。

2. アカウントモデルとは何ですか?

簡単に理解すると、銀行間の送金、Alipay、WeChat 送金などの銀行口座システムがすべてアカウント モデルに属します。例を挙げてみましょう。

Aが100、Bが100の場合

このとき、AさんはBさんに50元を送金します。

システム内の表現形式は次のとおりです。

A -50、B +50

それで彼らのバランスは

A 50、B 150

これは転送です。

もう一度、A がまだ 100 ドルを持っており、新しく口座を開設した 100 人に 1 元を送金したいとします。

このとき、Aさんは1元を100人に同時に送金する必要があります。

トランザクション 1

A -1、1人目 +1

それで彼らのバランスは

A 99、人 1 1

2ストローク目

A-1、2人目+1

それで彼らのバランスは

A 98、人物 2 1

No.3

A-1、3人目+1

それで彼らのバランスは

A 97、人物 3 1

等々

......

100人目

A -1、100人目+1

それで彼らのバランスは

A 0、100人目 1

理論的には 100 回の送金が必要で、次の送金は最初に前の送金を完了する必要があります。そうしないと、アカウント残高の一貫性が保証されず、複数の送金があるかどうか、残高が送金に十分であるかどうかなど、混乱が生じます。 、など。

理論的には、トランザクションの数が増えると、実行に必要な時間も長くなります。

3.UTXOモデルとは何ですか?

前述したように、多くの既存のメインストリームプレーヤーはUTXOを使用しており、このサークルの祖先であるビットコインもUTXOモデルを使用しています。 ちなみに、我が国が発行する法定デジタル通貨であるDCEPもUTXOモデルに基づいています。このモデルには独自性があるはずです。

UTXO の正式名は Unspent Transaction Output で、簡単に言えば、そのモデルは日常生活における現金システムに似ています。

Aさんは額面1元、額面10元、額面100元の財布(本物の財布)を持っています。

AさんはBさん、Cさん、Dさんにそれぞれ1元を渡したいと考えています。

A 方法は3つあります

タイプ 1: B に額面 1 元を与える

2 番目のオプション: C に額面 10 元を渡し、9 元を返してもらいます。

3番目の方法: Dに額面100元を渡し、99元を返してもらいます。

3 つの方法すべてでこのトランザクションを完了できます。

チェーンに戻って、ここでのすべての額面が実際にはチェーン上の UTXO であると想像してください。使用中の UTXO は転送されず、常に破壊され、再構築されます。たとえば、次のようになります。

A は 2 番目の方法を使用して C に送金します。額面 10 元の UTXO は破棄され、額面 1 元の UTXO が再作成されます。 C に渡され、9 元が A に返されます。

3番目の方法も同様で、100元を破棄すると、額面1元と99元のUTXOが印刷され、1元がDに渡され、99元がAに返されます。

これが UTXO とアカウント モデルの転送方法の違いです。さらにすごいのは、UTXO モデルは分散型 UTXO を通じて残高が存在するため、実際には各額面を同時に転送できることです。上記 3 つの方法 アカウントの一貫性の問題がなく、各 UTXO が独立して計算されるため、1 つのトランザクションで同時に完了できます。

上記のアカウント モデルを比較すると、各トランザクションは前のトランザクションの完了に依存する必要があり、パフォーマンスのギャップが想像できます。このようにして、中央銀行のデジタル通貨が UTXO モデルを使用する理由がわかります。そうでない場合、深センはどのようにして 1,000 万のデジタル人民元を 50,000 のウォレットに送金できるでしょうか。

上の例に戻りましょう

A は 100 を持っており、新しく口座を開設した 100 人に 1 元を送金したいと考えています。

額面 100 の UTXO を額面 1 元の 100 個の UTXO に分割し、トランザクションで 100 人に即座に直接配布できます。

つまり、UTXO の額面は、チェーン上で常に破壊され、再構築される、より柔軟な現金であると考えてください。

このウォレットアドレスにいくらあるのかを知りたい場合は、UTXO残高の数を数えて合計する必要があります。

4. アカウントモデルとUTXOのメリット・デメリット

アカウントモデルの利点:

コントラクトはコードの形式でアカウントに保存され、アカウントは独自の状態を持ちます。このモデルはプログラム可能性が高く、開発者にとって理解しやすく、幅広いシナリオが可能です。

一括取引の方が安くなります。 UTXO では、マイニング プールがマイナーに手数料を支払うことを想像してください。各入力と出力には個別の監視スクリプトまたはロック スクリプトが必要になるため、トランザクション自体が非常に大きくなり、署名検証とトランザクション ストレージがチェーン上の貴重なリソースを消費します。 。アカウント モデルでは、契約を通じてコストを大幅に削減できます。

アカウント モデルの欠点:

アカウント モデルのトランザクション間には依存関係がないため、リプレイの問題を解決する必要があります。イーサリアムはこの問題をどのように解決するのでしょうか? イーサリアムは各トランザクション Tx に独自の Nonce フィールドを使用しており、この Nonce フィールドを繰り返すことができないため、リプレイ攻撃を回避できることがわかっています。

ライトニングネットワーク/サンダーネットワーク、プラズマなどの実装では、ユーザー証明にはより複雑な証明メカニズムが必要であり、サブチェーンからメインチェーンへの状態移行にはより複雑なプロトコルが必要です。

UTXO の利点:

計算はオフチェーンで行われ、トランザクション自体が結果であり証明でもあります。ノードは検証を実行するだけで済み、トランザクションで追加の計算を実行する必要はなく、追加の状態ストレージもありません。トランザクション自体の出力UTXOの計算はウォレット内で完結するため、トランザクションの計算負担は全てウォレット側で負担され、チェーンの負担がある程度軽減されます。

Coinbase トランザクションを除き、トランザクションの入力は常に UTXO の背後でリンクされます。トランザクションは再実行できず、トランザクションの順序と依存関係を簡単に検証でき、トランザクションが消費されたかどうかも簡単に証明できます。

UTXO モデルはステートレスであり、同時処理が容易です。

P2SH タイプのトランザクションのプライバシーが向上します。トランザクションの入力は相互に関連しておらず、CoinJoin などのテクノロジーを使用して、ある程度のプライバシーを高めることができます。

UTXOの欠点:

より複雑なロジックを実装することはできず、プログラム性も劣ります。状態の保存が必要な複雑なロジックやコントラクトの場合、実装は難しく、状態空間の使用率は比較的低くなります。

入力が増えると、監視スクリプトも増加します。署名自体は、より多くの CPU とストレージ容量を消費します。

5. アカウント モデルと UTXO の簡単な違いは何ですか?

勘定残高

アカウントモデル: アカウント内の金額を簡単かつ明確に確認できます。

UTXO モデル: アドレスの下に UTXO がいくつあるかを数え、それらを合計した結果が残高となります。

トランザクション数が急激に増加した場合

アカウントモデル: ますます難しくなるでしょう。

UTXO モデル: 高い同時実行性を当然サポートします。

スマートコントラクト/開発者の観点から

アカウント モデルは開発者の論理的な習慣に準拠しており、ロジックを比較的簡単に作成できます。

UTXO スクリプト プログラミングはより複雑です