メインコンテンツまでスキップ

ユーザーガイド:トランザクションと失敗したトランザクション

注記

暗号通貨や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のアカウントに追加されます。ネットワークプロトコルにプログラムされた認証プロセスを経たのちに、実行されます。

トランザクションとはそれだけのことです。あるアドレスから別のアドレスに何かを再割り当てするための、台帳へのリクエストのことです。

うまくいかなかった場合

さまざまな理由で、うまくいかないことがあります。しばしば、それらが「ソフトウェアの本質」というものです。MetaMaskにはバグがありますし、使用しようとしているネットワークでもなにか間違って設定されていることがあります。また、接続エラーもあります。

**共通する問題には、トランザクションで支払いを少なくしようとして、ユーザーがガスリミットを大変低く設定するというものがあります。**そしてネットワークが大変混雑して、そのような「安い」トランザクションを引き受けるスペースが、時には長時間どのブロックにもない状態が続きます。その結果、トランザクションは「古く」なってしまい、ユーザーはキャンセルせざるを得なくなります。

トランザクションを送信したにもかかわらずファイナライズされない場合は、MetaMask上で状態が「pending」(保留)と表示されます。

トランザクションに失敗した場合、最も多い原因は、ガスの不足です。言い換えれば「ガス欠」です。そのトランザクションにかかるガスのコストがガス価格を乗じると、ネットワークのネイティブ通貨の総額がウォレットに入っている額より大きくなってしまったのが原因です。

インフォメーション

ガスの計算についての詳細は、こちらのガスガイドをご覧ください。

これが起こる理由は多くありますが、一つ考慮しておくべきことは、実行しようとしているトランザクションは何かということです。ネットワークトラフィックのピーク時にNFTをミントするには、大量にガスを消費します。もし、新しいあるいは実験的なトランザクションを試そうとしているのであれば、実際のライブネットワーク代を支払う前に、テストネットワークで試す価値があるかもしれません。

問題の解決

重要な要因 その1。ローカルまたはネットワークへのブロードキャスト

トランザクションの問題を診断する際に、特にトランザクションが保留になってしまった場合、トランザクションがまだローカルのメムプールにあるのか、あるいはすでにネットワークにあるが、何らかの理由でそこにスタックされているのか、を確認する必要があります。まだローカルメムプールにある場合は、解決するのはシンプルで、自分のMetaMaskウォレットをロックし、解除するというだけです。(これを行う前に、ご自分のパスワードとSecret Recovery Phraseを覚えていることを必ず確認してください)ネットワークでスタックされている場合、解決するのはより複雑になる可能性があります。

これらの問題を解決する詳細については、以下のリンクをご覧ください。

重要な要因 その2。ノンス

この言葉は、いくつか異なることを意味する可能性があります。これは「number only used once」(1回のみ使用された番号)の短縮形であり、この文脈では、送信アドレスが行った最初のトランザクションから始まる、「トランザクション番号」を大まかに指します。例えば、同じウォレットアドレスで、MetaMaskの異なるインスタンスから異なる2つのトランザクションを同時に開始しようとする場合、これは本当に困ったことになります。**あなたのアドレスのトランザクションは、そのノンスに従い、昇順である必要があります。**しかし、ノンスがトランザクションのスタックを引き起こす可能性がある場合、ノンスはトランザクションを円滑に進めるカギとなり得ます。

この方法についての詳細は、こちらをご覧ください

次のステップ

失敗、保留中のトランザクションがある場合は、次のリソースに相談してサポートを受けてください。

MetaMaskウォレットからトークンを送信する方法

保留中トランザクションをスピードアップあるいはキャンセルする方法

トランザクションが「Out of Gas」(ガス欠)のエラーで失敗したのはなぜですか。

Uniswapトラブルシューティング

ユーザーガイド、ガス

確認済みのトランザクションを元に戻すことはできますか。

FAQ

*質問。ウォレットのあるアカウントに、保留中あるいは順番待ちのトランザクションがあります。同じウォレットの別のアカウントから別のトランザクションを開始することはできますか。*答え。はい、可能です。ノンスは、ウォレットごとではなく、アカウントごとにカウントされています。