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