
コインとトークン:USDC を送るのに ETH が必要な理由
暗号資産で最もよくある驚きのひとつです。Ethereum 上に 500 ドル分の USDC があり、送金しようとすると、ウォレットに残高不足と表示される。いったい何が足りないのでしょうか。答えはコインとトークンの違いにあります。これが腑に落ちれば、ウォレットの多くの挙動が一気に理解できるようになります。
コインはチェーン自身のお金
どのブロックチェーンにも、そのルールに組み込まれたネイティブ資産があります。Bitcoin には BTC、Ethereum には ETH、Solana には SOL、Polygon には POL があります。これらがコインです。ネットワーク自体がその残高を管理しており、ネットワークがトランザクション処理の対価として受け取るのもこのコインです。
コインを送ると、チェーンはそれを直接移動させます。間にコントラクトは存在せず、あるのはプロトコル自身の帳簿だけです。
トークンはコントラクトの中に存在する
トークンは別物です。Ethereum や同様のチェーンでは、USDC、USDT、ガバナンストークンといったトークンは、独自の台帳を持つスマートコントラクトです。台帳には、アドレスの一覧と、それぞれがそのトークンをどれだけ保有しているかが記録されています。Solana では、トークンは SPL 規格に従い、残高は個別のトークンアカウントに保持されます。
あなたの「USDC 残高」は、実際には USDC のコントラクト内にある、一定額があなたのアドレスに属すると記したエントリーです。USDC を送るとは、そのコントラクトに台帳の更新を依頼すること、つまりあなたのエントリーから他の人のエントリーへ数値を移すことを意味します。
だからこそ、同じトークンが複数のチェーン上でまったく別個のものとして存在しうるのです。Ethereum 上の USDC と Polygon 上の USDC は、別々の台帳を持つ別々のコントラクトです。ネイティブに発行されたバージョンもあれば、別の場所で保管されている資産のラップ版やブリッジ版もあります。
ガス代は常にコインで支払う
驚きの原因はここにあります。トークンのコントラクトに残高の移動を依頼することも、やはりチェーン上のトランザクションであり、チェーンはすべてのトランザクションに手数料を課します。それがガス代です。この手数料は、送ろうとしているトークンではなく、ネイティブコインで支払われます。
つまり、Ethereum で USDC を送るには、同じアドレスに次の 2 つが必要です。
- 送りたい USDC
- トランザクション手数料を支払うための少量の ETH
ETH がなければ USDC は動かせなくなります。失われたわけではなく、ETH を追加するまで移動できないだけです。同じルールはどこでも当てはまります。Polygon のトークンにはガス代として POL が、BNB Chain では BNB が、Avalanche では AVAX が、Base では ETH が必要です。
Solana ならではの追加ポイント
Solana も根本的には同じ仕組みで、手数料は SOL で支払いますが、ひとつ追加の要素があります。保有するトークンごとに専用のトークンアカウントが必要で、その作成にはレントと呼ばれる少額の SOL のデポジットが必要です。これまで保有したことのないトークンを誰かから送られた場合、そのためのトークンアカウントを作成しなければなりません。詳しくはトークンアカウントとレントの仕組みで解説していますが、要するに SPL トークンを保有・移動するためにも、少しの SOL を手元に置いておくべきだということです。
これで説明できるミス
コインとトークンの区別がはっきりすると、いくつかの典型的なトラブルの理由がわかります。
- トークン残高は十分なのに「残高不足」と出る。 ガス代に使うネイティブコインが尽きています。
- トークンを間違ったネットワークに送ってしまう。 あるチェーンで送った USDC は、たとえ同じアドレスでも別のチェーンには表示されません。別の台帳上の別のコントラクトだからです。
- 最後のコインまで送ってしまう。 ETH を完全に使い切ると、そのアドレスにあるトークンはすべて、補充するまで動かせなくなります。
- 売れない「無料」トークン。 頼んでもいないのに届いたトークンは、移動にガス代がかかることがあり、しかも動かそうとするとその価値以上のコストがかかるよう設計されている場合があります。
SSP での仕組み
SSP では、コインとトークンがチェーンごとに、各チェーンのウォレット内に表示されます。EVM チェーンでは、SSP アカウントはあなたの 2-of-2 マルチシグが管理するスマートアカウントであり、トークン送金のガス代は同じボールトのネイティブコインから支払われます。そのため、トークンと一緒に少量の ETH(または POL、BNB、AVAX)を置いておきましょう。トークンを送るとき、SSP Key はトランザクションからデコードしたトークン送金の内容、つまり単なる生のコントラクト呼び出しではなく、トークンの受取人と数量を表示します。
Solana では、SSP のリレーがネットワーク手数料を立て替え、ボールトが同じ送金の中で SOL でそれを払い戻すため、ボールトにはやはりいくらかの SOL が必要です。
率直なまとめ
コインはチェーン自身のお金であり、トークンはチェーン上で動くコントラクトの中の残高です。すべてのトランザクションはコインで手数料が支払われます。トークンを移動するトランザクションも例外ではありません。
トークンを保有しているすべてのチェーンでネイティブコインを少し余分に確保しておき、トークンを送受信する前にどのネットワーク上にあるかを確認すれば、暗号資産で最もよくある「お金はどこへ消えた?」という場面を避けられます。


