ユーザーガイド:トランザクションと失敗したトランザクション
暗号通貨やweb3は初めてですか?
MetaMask Learnで、web3を初めて使う人のために特別に設計された分かりやすい学習体験を提供しています。完全に無料で、複数の言語で利用することができ、MetaMaskに慣れるためのシミュレーションなどの便利なツールも含まれています。
この記事は、トランザクションとその失敗の原因に関する説明および資料へのリンク、さらには、よくあるトランザクションの失敗のシナリオとその対処方法についてのリンクで構成されています。
ブロックチェーントランザクションを解剖する
パブリックブロックチェーンネットワークで「トランザクション」について言及する場 合、通常は、2つのアドレス間のやり取りについて話しています。言い換えれば、ファンジブルトークンであろうとなかろうとトークンを、あるいは他の暗号資産をあるアドレスから別のアドレスに「送信」することを言います。また、「内部トランザクション」と言及されるトランザクションもあります。これは、スマートコントラクト間で行われるやり取りで、この記事の対象外となっています。
詳細については、こちらをご覧ください。
ブロックチェーンネットワークやその一般的な機能のしくみについての詳細は、こちらの紹介記事をご覧ください。見慣れない言葉にお困りの場合は、用語集も用意しています。
正確に言うと、実際には何もどこにも送信されません。Ethereumのようなスマートコントラクト対応のブロックチェーンネットワークには、さまざまなコンポーネントや機能があります。その1つは、「コンピュータ」と呼ばれるものです。つまりEthereum Virtual Machine(EVM)で、プログラム(「スマートコントラクト」)を実行できます。しかし、システムの「バックボーン」となる部分は、分散型台帳です。片方にすべての個別のEthereumウォレットアドレスが記載され、それぞれのアドレスにアドレスが持つ暗号資産の種類用の列があるスプレッドシートを想像してください。
例を用いて説明しましょう。GuillaumeがDoloresにトランザクションを送信したいとします。Guillaumeは、自分のアカウントに1.36ETH持っており、Doloresに、0.5ETH送信する予定です。弱気相場でも、Doloresにとって素敵な日になりそうですね。
Guillaumeは、自分のMetaMaskウォレットを開き、Doloresのアドレスを入力し、支払うのに問題のないガスパラメータを設定し、「send」(送信)を押します。
この時点で、トランザクションは、ローカルメモリプール、あるいはローカルメムプールとして知られているローカルの一時的な保持状態に入ります。このトランザクションは、その後ネットワーク上の最も近いノードによって「ピックアップ」されます。Guillaumeのガス設定に応じて、トランザクションが優先されることになり(Guillaumeのガスユニットあたりの支払額が多いほど、トランザクションはより速く処理されます)、そして、ネットワーク上の他のノードに伝播されます。ノードは、Guillaumeが支払うETHを持っていることを確認する作業を行い、実際に「トランザクション」を実行します。そして台帳が変更されます。Guillaumeの残高から0.5が引き落とされ、Doloresの残高に0.5が入金されます。
「動く手は、書き込んだ後、移動していく」。ETHはネットワークを通じて瞬時に移動したわけではありません。GuillaumeのコンピュータからDoloresのMetaMaskの受信トレイあるいは同様のものに送られたメールとは異なります。Guillaumeがリクエストを送信しました。これはMetaMaskを通じて秘密鍵によって認証され、**ネットワークに送信され、彼のアカウントから差し引かれ、Doloresのアカウントに追加されます。ネットワークプロトコルにプログラムされた認証プロセスを経たのちに、実行されます。