コントラクトアカウントとは何ですか?
Adalberto Villanueva
Adalberto Villanueva
はい、もちろんです!この「コントラクトアカウント」が一体何なのか、平易な言葉で解説しますね。
さあ、始めましょう!「コントラクトアカウント」とは何か?
イーサリアムの世界では、2種類の「アカウント」が存在します。これらを2種類の異なる「人間」だと想像してみてください。
- あなたや私のような「一般人」:これは 外部所有アカウント(Externally Owned Account, EOA)と呼ばれます。
- ルールに従って動く「ロボット」:これが今日お話しする コントラクトアカウント(Contract Account)です。
簡単に言うと、コントラクトアカウントとは、ブロックチェーン上に存在し、コードによって制御され、自動的にタスクを実行できる「ロボット」のことです。
普段私たちが使っているウォレットアカウントとどう違うのでしょうか?
普段私たちが使っているMetaMask(メタマスク)などのウォレットで作成され、イーサリアム(ETH)や様々なトークンを保管できるもの、それが「外部所有アカウント」(EOA)です。それはあなたの銀行口座に非常によく似ていますが、主な違いは次のとおりです。
1. 誰が制御しているのか?
- 外部所有アカウント(あなたのウォレット):あなたが制御します。制御権はあなたの秘密鍵(またはシードフレーズ)です。秘密鍵を持っている人が、そのアカウントの所有者です。秘密鍵を紛失すると、銀行カードとパスワードを紛失したのと同じように、お金は失われます。
- コントラクトアカウント(ロボット):秘密鍵はありません!誰によっても直接制御されることはなく、その内部にデプロイされたスマートコントラクトコードに完全に従って行動します。コードに書かれた通りに、厳密に、絶対的に従います。
2. 何を能動的に行えるのか?
- 外部所有アカウント(あなたのウォレット):様々な操作を能動的に開始できます。例えば、友達に送金したい場合や、分散型取引所(DEX)でコインを購入したい場合など、すべてあなたが能動的に「送信」や「取引」をクリックして開始します。それが出発点です。
- コントラクトアカウント(ロボット):それは「融通の利かない」もので、自分自身でいかなる操作も能動的に開始することはできません。それは「外部所有アカウント」または他の「コントラクトアカウント」からの命令を受動的に受け取り、そのコードのルールに基づいて反応するだけです。自動販売機のようなもので、硬貨を投入してボタンを押さなければ、決してコーラは出てきません。
3. どのようにして誕生するのか?
- 外部所有アカウント(あなたのウォレット):ウォレットソフトウェアで「アカウントを作成」をクリックすれば誕生します。本質的には、公開鍵と秘密鍵のペアが生成されます。
- コントラクトアカウント(ロボット):それは「外部所有アカウント」によって作成されます。開発者はまずスマートコントラクトコード(ロボットに設定するプログラム)を作成し、その後、「外部所有アカウント」を通じてガス代を支払い、このコードをイーサリアムネットワーク上に「デプロイ」します。デプロイが成功すると、このコントラクトは固有のアドレスを獲得し、このアドレスが「コントラクトアカウント」となります。
例を見てみましょう:自動販売機
この例えは、より良く理解するのに役立つでしょう。
- あなた(外部所有アカウント):ポケットにお金(ETH)があり、飲み物を買いたいと思っています。
- 自動販売機(コントラクトアカウント):それは街角に設置されており(イーサリアム上にデプロイされており)、その内部のプログラムは、「5元を受け取ったらコーラを1本出す;6元を受け取ったらスプライトを1本出す」と設定されています。
全体の流れは次のようになります。
- あなたは自動販売機の前に立ちます(ウォレットを開き、コントラクトと対話する準備をします)。
- あなたは5元を投入し、「コーラ」のボタンを押します(これはあなたの外部所有アカウントから取引を開始し、コントラクトアカウントのアドレスに5ETHを送信し、
buyCoke()
という関数を呼び出すことに相当します)。 - 自動販売機内部のプログラムが動き始めます(コントラクトコードがトリガーされて実行されます)。
- 受け取った金額がちょうど5元であるかを確認します。
- コーラの在庫があるかを確認します。
- すべて満たされていれば、「コーラ」1本(NFTまたはトークンである可能性があります)をあなたのアドレスに送信します。
- 取引完了です。
ご覧の通り、一連のプロセスはすべてあなたが能動的に開始しています。自動販売機(コントラクトアカウント)は、単なる受動的な実行者に過ぎません。決してあなたに「コーラはいかがですか?」と能動的に尋ねてくることはありません。
まとめ
- 外部所有アカウント (EOA):私たちが使っているウォレットであり、秘密鍵によって制御される、ブロックチェーン世界の「行動者」です。
- コントラクトアカウント (Contract Account):コードによって制御されるプログラムであり、秘密鍵を持たず、ブロックチェーン世界の「自動ツール」または「サービス」です。
これらの、自動的に実行され、公開透明で、妥協のない「コントラクトアカウント」が存在するからこそ、今日私たちが目にしている、様々な面白いブロックチェーンアプリケーションが誕生しました。例えば、分散型金融(DeFi)、NFTマーケットプレイス、分散型自律組織(DAO)などです。これらにより、ブロックチェーンは単なる台帳に留まらず、「世界のコンピューター」へと変貌を遂げたのです。