イーサリアムアカウントの種類と、それぞれの違いは何ですか?

Hans-Helmut Kraus
Hans-Helmut Kraus
Ethereum smart contract auditor and security expert; 以太坊智能合约审计师与安全专家。

はい、承知いたしました。イーサリアムアカウントについて、平易な言葉で解説しましょう。

イーサリアムの世界では、アカウントは私たちがお金を預ける銀行口座のように一種類だけではありません。主に2つのタイプに分けられ、それぞれ異なる種類の「デジタルID」と考えることができます。


2種類のアカウントタイプ

1. 外部所有アカウント (Externally Owned Account, EOA) - あなたの個人ウォレット

これは、私たち一般ユーザーが最も頻繁に触れるアカウントです。

あなたの個人銀行口座Eメールアドレスを想像してみてください。これは完全にあなたのものであり、あなたがコントロールするアカウントです。

  • 制御方法: **プライベートキー(Private Key)**によって制御されます。このプライベートキーは、銀行のキャッシュカードの暗証番号とセキュリティトークンを組み合わせたようなもので、最高の権限を持ちます。プライベートキーを所有している人が、そのアカウント内のすべての資産を所有することになります。私たちがよく使うMetaMask、imToken、Ledgerなどのウォレットは、このプライベートキーの管理を助けています。
  • できること: すべてのアクションの発信源です。ETHの送信やスマートコントラクトの呼び出しなど、取引を自ら開始できるのはEOAだけです。
  • 特徴: それ自体にはコードがなく、資産の送受信や命令の開始に使われるシンプルなアドレスです。

一言でまとめると: EOAは、私たちユーザーの手にある「リモコン」であり、イーサリアムの世界への入り口です。プライベートキーをなくすことは、このリモコンを捨ててしまい、二度と見つけられないのと同じことです。

2. コントラクトアカウント (Contract Account) - 「コードロボット」または「自動販売機」

このアカウントは、人が直接制御するのではなく、コード(一般的に「スマートコントラクト」と呼ばれるもの)によって制御されます。

自動販売機、または厳格なルールが設定された企業の業務用口座を想像してみてください。

  • 制御方法: ブロックチェーン上にデプロイされたスマートコントラクトのコードによって制御されます。このコードには、何ができるか、何ができないか、どのような条件下で何をするかなどが厳密に記述されており、一度デプロイされると、そのルールは簡単に変更できません。
  • できること: 自ら取引を開始することはできません。ロボットのように、命令を待ち続ける受動的な存在です。EOA(または別のコントラクトアカウント)が取引を送信すると、「アクティベート」され、自身のコードロジックに従って操作を実行します。
  • 特徴: プライベートキーはありません。その核となるのはコードであり、このコードがすべてのアクションを決定します。例えば、Uniswapの流動性プールやNFTコントラクトなどは、すべてコントラクトアカウントです。

一言でまとめると: コントラクトアカウントは、プログラム通りに動く「ロボット」です。指令(関数の呼び出し)を与えれば、コードに厳密に従って実行され、誰にでも公平に機能します。


違いは何?一目でわかる比較表

より明確に理解していただくために、簡単な表にまとめました。

特性外部所有アカウント (EOA)コントラクトアカウント (CA)
制御方法プライベートキーで制御(人間)スマートコントラクトのコードで制御(プログラム)
自ら取引を開始できるかできる ✅ (すべての取引の起点)できない ❌ (受動的に応答するのみ)
コードを含むか含まない含む
作成コストほぼゼロ(公開鍵と秘密鍵のペアを生成するだけ)コントラクトのデプロイにガス代を消費する
一般的な例あなたのMetaMaskウォレットアドレスUniswapの流動性プール、有名なNFTプロジェクト(BAYCなど)

それらはどのように連携するのか?

これは非常に重要なので、具体的な例を挙げて説明しましょう。

分散型取引所Uniswapで、ETHを使ってUNIトークンを交換したいとしましょう。

  1. あなた(EOA) がMetaMaskウォレットを開き、交換したい数量を入力して「確認」をクリックします。この操作は、あなたのEOAが自ら取引を開始したことになります。
  2. この取引はUniswapの**コントラクトアカウント(CA)**に送信されます。
  3. Uniswapのコントラクトアカウントはこの取引を受信すると「アクティベート」され、そのコードが実行を開始します。自動的に交換レートを計算し、あなたのEOAアカウントからETHを受け取ります。
  4. コードの実行が完了すると、コントラクトアカウントは計算されたUNIトークンをあなたのEOAアカウントに送り返します。

この一連のプロセス全体で、あなたは発信者(EOA)であり、Uniswapは自動的に交換タスクを実行するロボット(CA)のようなものです。あなたがEOAとして指示を出さない限り、Uniswapのコントラクトアカウントはそれ自体では動きません。

簡単なまとめ

  • 外部所有アカウント (EOA):私たち一般ユーザーのことです。人がプライベートキーを使って直接制御し、すべての操作の発信者となります。
  • コントラクトアカウント (CA):コードによって制御される「ロボット」です。自ら動くことはなく、受信した指令に受動的に反応するだけです。

この説明が、イーサリアムのアカウントについて明確な理解をもたらしてくれることを願っています!