外部所有アカウント(EOA)
外部所有アカウント(EOA)とは主に、ユーザーが
秘密鍵を用いて管理する
Ethereumネットワーク上におけるアカウントの一種を指します。つまり、トランザクションの送信またはEther(ETH)の管理用のアカウントであると言えます。コードでのみ管理されるスマートコントラクトアカウントとは異なり、EOAはユーザーにより直接管理されます。
Ethereumには、大きく分けて2種類のアカウントが存在します。
外部所有アカウント(EOA)– 秘密鍵を持つユーザーにより管理されます。
コントラクトアカウント(CA)– コードまたは
スマートコントラクトにより管理されます。同アカウントは、秘密鍵を介さずに動作します。
EOAとコントラクトアカウントの両方において、ETHを保有・送付できます。一方、トランザクションの開始はEOAでのみ行えます。コントラクトアカウントは、EOAまたはその他のスマートコントラクトがトリガーすることで動作する仕組みとなっています。
すべてのEOAは、暗号化された2種類の鍵(
秘密鍵と
公開鍵)に紐付けられています。秘密鍵は主にアカウント管理用であり、トランザクションへの署名と承認を行っているのが確かに自身であることを証明するために用いられます。一方、
公開鍵は、他者へのETHの送付時に開示が必要となるEthereumアドレスの生成に用いられます。
ここで、EOAの役割について以下に簡単にまとめます。
トランザクション:EOAでは、他のアカウントへのトークン送付、スマートコントラクトとのやり取り、ブロックチェーン上における特定の機能の呼び出しが可能となります。
ガス代:すべてのトランザクションには
ガス代が必須となり、ガス代はETHにより支払われます。ガス代は、トランザクションを処理するマイナーまたはバリデーターに配布されます。
セキュリティ:EOAのセキュリティは、秘密鍵がそのすべてとなります。他者が秘密鍵を知り得た場合、その他者にアカウントの管理権が移ってしまいます。
EOAとコントラクトアカウントの両方においてトークンとデータを保有できるものの、両者には大きな違いが複数存在します。
EOA:秘密鍵により管理され、ユーザーが操作します。EOAではトランザクションを送信できるものの、コードは自動的に実行されません。
コントラクトアカウント(CA):秘密鍵を介さず、コード(スマートコントラクト)により管理されます。CAのみではトランザクションの送付ができないため、これにはEOAまたはその他のコントラクトが必要となります。ただし、一度トリガーされた特定の指示またはルールは実行できます。
分散型取引所(
DEX)上でETHを他のトークンとスワップするとします。EOAはDEX(コントラクトアカウント)とやり取りし、この結果スワップが実行されます。DEX自体は、(EOA経由で)指示が出されてはじめて動作します。
EOAは、Ethereumネットワークとやり取りする手段であり、同ネットワーク内でバックボーンとしての役割を担っています。Ethereum上のすべての操作は、EOAを介して実行されます。EOAの存在がなければ、それ自体では動作できないスマートコントラクトは意味をなしません。つまり、EOAの存在により、ETHの送付、
dAppとのやり取り、スマートコントラクトのトリガーが機能すると言えます。
EOAの使用に伴う重要な点として、秘密鍵の安全な保管が挙げられます。秘密鍵を紛失した場合、保有中のアカウントへのアクセス権と資産が永久に失われます。また、秘密鍵が盗難に遭った場合、保有中のアカウントの管理権が犯罪者の手に渡り、アカウントから全資産が抜かれます。
外部所有アカウント(EOA)は、Ethereumにおけるユーザー管理型アカウントです。同アカウントにより、Ethereumネットワーク上でETHの送付、スマートコントラクトとのやり取りをはじめとする多くの機能を利用できるようになります。EOAは、コードにより管理され、動作にあたりEOAによるトリガーが必須となるコントラクトアカウントとは異なります。また、Ethereumの運用は両アカウントにより支えられています。