Smart Gas登場:Tangem Walletでネットワーク手数料をステーブルコインで支払い
Smart gasトランザクションがTangem WalletでEthereum、BNB Smart Chain、Polygon、Arbitrum One、Baseで利用可能になりました。
中央集権型取引所からセルフカストディ型ウォレットへ移行する際、多くのユーザーが同じ壁に直面します。トークンを新しいウォレットに出金し、トランザクションを試みるものの、ガス代が必要で実行できません。EthereumならETH、BNB Smart ChainならBNB、PolygonならMATICといったネットワークのネイティブ通貨が必要ですが、手元にありません。
これは単なる小さな不便ではありません。自身の資産を動かすだけでも、少額のネイティブトークンを入手する必要があります。少額購入に対応した取引所を探し、必要以上の出金手数料を支払ったり、知人やファウセットからもらったりしなければなりません。特にセルフカストディ初心者の多くは、ここで諦めてしまいます。
Tangemでは、この障壁を完全に解消するためにSmart gasトランザクションを導入しました。
Smart gas決済とは?
Smart gas決済を使えば、ネットワーク手数料(ガス代)をネイティブ通貨の代わりに主要なステーブルコインで支払うことができます。対応ネットワークでUSDCやUSDTを保有していれば、そのままガス代の支払いに利用できます。
例:AliceがCoinbaseからEthereumネットワーク上のTangem Walletに100 USDTを出金します。Bobに50 USDTを送りたいのですが、Tangem上にETHがなくガス代が払えません。Smart gasトランザクションなら、アプリがUSDT残高を検出し、USDTでガス代を支払うオプションを提示します。Aliceが確認・署名すると、50 USDTがBobに送金され、約0.80ドル分のUSDTがネットワーク手数料として差し引かれます。ETHを用意する必要はありません。
対応ネットワークとトークン
Smart gasトランザクションは、EIP-7702(Pectraアップグレード)を実装した主要EVMネットワークで利用できます。流動性・転送ガスコスト・普及度を基準に、主にUSD連動ステーブルコインを選定しています。多くのユーザーが取引所から出金後に保有しているトークンです。
ネットワーク | 対応Feeトークン |
|---|---|
Ethereum | USDC, USDT |
BNB Smart Chain | USDC, BSC-USD |
Polygon | USDC, USDT0 |
Arbitrum One | USDC, USDT0 |
Base | USDC |
Smart gasトランザクションの仕組み
この機能は、2025年5月のPectraアップグレードで導入されたEIP-7702(「EOAへのコードセット」)によって実現しています。Ethereumアカウントの仕組みを大きく進化させる標準です。
EIP-7702の仕組み
従来、Ethereumには2種類のアカウントがありました。秘密鍵で管理するExternally Owned Account(EOA)と、実行コードを持つコントラクトアカウントです。EOAは資産の保有や署名はできますが、独自ロジックの実行はできません。コントラクトアカウントは任意のコードを実行できますが、デプロイやセキュリティ面で異なる特徴があります。
EIP-7702はこのギャップを埋めます。EOAが一時的にスマートコントラクトのコードを委任できるようになり、認可メッセージへの署名だけで実現します。重要なのは、この認可にオンチェーントランザクションが不要な点です。ユーザーがメッセージに署名し、その署名を他者がトランザクションに含めて送信できます。
この仕組みにより、ユーザーはガス代を支払うことなく、自身のアカウントにコントラクトロジックを一時的にアタッチでき、Smart gasトランザクションが可能になります。
Tangem独自のスマートコントラクト実装
Tangemでは既存ソリューションではなく、独自にカスタムスマートコントラクトを開発しました。既存の実装は、ユーザーにとってコストが高かったり、不要な機能で攻撃面が広がるものが多かったためです。
Tangemの実装は2つのコントラクトで構成されています。
Tangem7702Smart gasExecutor
これはユーザーのEOAから委任されるコントラクトで、以下を担当します。
- Signature verification — Smart gasトランザクションのパラメータがアカウント所有者によってEIP-712型データ署名で署名されているか検証
- Transaction execution — ユーザーが意図したトランザクション(例:トークン送金)を実行
- Fee compensation — 実際に消費したガス量を計算し、適切なFeeトークンを受取人に送金
コントラクトは最小限のストレージしか保持しません。リプレイ防止用のnonceのみです。Solidityのカスタムストレージレイアウト機能を使い、他のコントラクトをアタッチした際の衝突も防止しています。
// Core data structures
struct Transaction {
address to;
uint value;
bytes data;
}
struct Fee {
address feeToken; // Token used for fee payment
uint maxTokenFee; // Maximum fee in token units
uint coinPriceInToken; // Native currency price in token
uint feeTransferGasLimit; // Gas limit for fee transfer
uint baseGas; // Fixed overhead (signature verification, nonce update)
address feeReceiver; // Fee collection address
}
struct Smart gasTransaction {
Transaction transaction;
Fee fee;
uint nonce; // From user's contract storage
}主な定数:
- BASE_GAS = 60,000 — 署名検証・nonce更新・実行準備のための固定ガスオーバーヘッド
Tangem7702EntryPoint:エントリーポイントコントラクト
また、Smart gasトランザクションを実行するためのリレー用インターフェースとしてEntry Pointコントラクトも展開しています。このコントラクトは、ユーザーアドレスにアタッチされたコードが想定通りであることを確認してから実行を転送します。
function executeTransaction(
Smart gasTransaction calldata gasslessTx,
bytes calldata signature,
bool forced,
address executor
) externalこのforcedパラメータは、fee transferのガス消費がfeeTransferGasLimitを超えた場合の挙動を制御します。
- false — トランザクションをリバート(ガス見積もり時)
- true — イベントを発行し継続(実際の実行時、ガスはすでに消費済み)
これにより、Tangemのリレー基盤を保護します。実際のガス代を立て替え、ユーザーのFeeトークン残高から補填を受けるため、アタッチされたコントラクトが正しく補填処理を行うことが必要です。Entry Pointは、監査済みのコントラクトコードのみとやり取りすることを保証します。
Feeパラメータ
Smart gasトランザクションを承認する際、以下を含むメッセージに署名します。
- Fee token:支払いに使うステーブルコイン(例:USDC)
- Token price:Feeトークンとネイティブ通貨のレート(コスト計算に使用)
- Maximum fee:ユーザーが支払う上限額(Tangemアプリに表示)
- リプレイ防止やトランザクション詳細の追加パラメータ
Maximum feeにより、ユーザーはコストの上限を把握できます。実際の手数料は消費ガス量に基づき、通常この上限より低くなります。
セキュリティモデル
既存ソリューションも検討しましたが、独自コントラクト構築は意図的なセキュリティ判断です。このコントラクトはFee支払い付きトークン送金専用で、機能を絞ることで監査や安全性の検証が容易になります。
要素 | ERC-4337 | Tangem実装 |
|---|---|---|
ガスオーバーヘッド | 高い(バンドラー基盤) | 低い(直接実行) |
攻撃面 | 広い(多機能) | 最小限(単一用途) |
ストレージ衝突リスク | 実装による | カスタムストレージレイアウトで回避 |
アップグレード性 | 多くは管理者キーでアップグレード可能 | アップグレード不可 |
監査
このコントラクトは、スマートコントラクト監査専門のブロックチェーンセキュリティ企業Pessimisticによる監査を受けています。監査レポート全文はGitHubで公開されています。
ユーザー体験
技術的には複雑ですが、ユーザーの操作はとてもシンプルです。
- 対応ネットワークで送金・スワップ・スワップ経由送金を開始
- 対応ステーブルコイン残高があれば、アプリがそのトークンで手数料支払いを提案
- ステーブルコイン建ての最大手数料を確認し、トランザクションを承認
- 裏側で、EIP-7702認可(Tangemスマートコントラクトのアタッチ)とSmart gasトランザクションパラメータの両方に署名
- 署名済みバンドルがTangemのバックエンドに送信され、ネットワークへ送信
- トランザクションが実行され、手数料がステーブルコイン残高から差し引かれる
ユーザー視点では、ネイティブコインを用意せずに通常通りトランザクションが完了します。
制限事項と注意点
Smart gasトランザクションは、記事冒頭で紹介したステーブルコインのみ対応しています。流動性・普及度・技術的互換性を基準に選定しています。その他の制限事項:
- 手数料プレミアム:Smart gasトランザクションは、追加のコントラクト実行や価格換算のため、ネイティブガス支払いより若干コストが高くなる場合があります。Tangemではこのプレミアムを最小化するよう最適化しています。
- ネットワーク対応:EIP-7702はPectraアップグレード済みネットワークのみ対応です。EIP-7702対応かつステーブルコイン流動性が十分なネットワークでのみ有効化しています。
まとめ
Smart gasトランザクションは、セルフカストディにおける最大の障壁のひとつを解消します。EIP-7702の活用により、ユーザーは既に保有しているトークンだけでトランザクションが可能になりました。
取引所から移行するユーザーにとっては、出金したトークンをすぐに使えるという大きなメリットです。エコシステム全体としても、ガスの仕組みを理解しなくても資産を動かせる、よりユーザー本位の暗号資産インフラへの一歩となります。