「アカウントモデル」は、チェーン上の取引を記録、保存、実行するために使用されます。イーサリアムはこのモデルを使用しており、ビットコインは別のモデルである UTXO モデルを使用しています。
アカウントモデルの動作原理#
アカウントモデルでは、取引のためのアカウント内残高が会計単位として使用されますが、UTXO モデルでは取引中の未使用の暗号通貨部分が会計基準として使用されます。
アカウントモデルは、伝統的な銀行のデジタルバージョンと見なすことができ、デジタル資産はアカウント内の残高として記録され、伝統的な銀行口座と同様に扱われます。取引が発生すると、システムはユーザーの取引指示に基づいてノードをトリガーしてアカウント残高を変更します。その後、システムは各アカウントの残高変化を計算し、残高の最新状態を記録します。
イーサリアムネットワーク内のアカウントモデル#
イーサリアムでは、外部所有アカウント(EOA)とコントラクトアカウント(CA)の 2 種類のアカウントがあります。
外部所有アカウント(EOA, Externally Owned Account)
ユーザーが秘密鍵で制御するアカウントを指します。ユーザーは MetaMask ウォレットなどでこのタイプのアカウントを作成できます。各「EOA」には秘密鍵とアドレスがあり、直接取引を開始できます。
コントラクトアカウント(CA,Contract Account)
スマートコントラクトコードによって制御されるアカウントを指します。EOA とは異なり、コントラクトアカウントには秘密鍵がなく、スマートコントラクトコードを持っています。このアカウントはそのスマートコントラクトコードによって動作します。コードはコントラクトアカウントが作成されるとチェーン上に記録され、EVM によって実行されます。
アカウントモデルの特徴#
アカウントモデルでは、取引の結果は残高状態に依存します。アカウント残高は取引出力よりも大きくなければなりません。したがって、アカウントモデルを使用するネットワークでは、取引順序の検証と残高の検証が非常に重要です。アカウントモデル内のノードは、取引指示を受信すると送信者の残高状態を確認し(それが転送される出力量よりも大きいか等しいかどうかを確認します)。