スマートガス登場:Tangem Walletでネットワーク手数料をステーブルコインで支払い
スマートガストランザクションがTangem WalletでEthereum、BNB Smart Chain、Polygon、Arbitrum One、Baseに対応しました。
中央集権型取引所からセルフカストディ型ウォレットへ移行する際、多くのユーザーが同じ壁に直面します。トークンを新しいウォレットに出金し、取引を試みるものの、ネットワークのネイティブ通貨(EthereumならETH、BNB Smart ChainならBNB、PolygonならMATIC)がないため、ガス代が支払えず送金できません。
これは小さな不便ではありません。自分の資産を動かすだけでも、少額のネイティブトークンを入手する必要があります。少額購入に対応した取引所を探したり、必要額以上の出金手数料を払ったり、知人やファウセットから受け取ったりと、特にセルフカストディ初心者にはこの時点で諦めてしまうケースも多いです。
Tangemでは、この障壁を完全に解消するためにスマートガストランザクションを導入しました。
スマートガス決済とは?
スマートガス決済を利用すると、ネットワーク手数料をネイティブトークンの代わりに人気のステーブルコイン(USDCやUSDTなど)で直接支払えます。対応ネットワークでUSDCやUSDTを保有していれば、そのままガス代の支払いに使えます。
例:AliceがCoinbaseからEthereumネットワークのTangem Walletへ100 USDTを出金します。Bobに50 USDTを送りたいのですが、Tangem内にETHがなくガス代が払えません。スマートガストランザクションでは、アプリがUSDT残高を検知し、USDTでガス代を支払うオプションを提示します。Aliceが確認・署名すると、50 USDTがBobに送金され、ネットワーク手数料として約0.80 USDTが差し引かれます。ETHを入手する必要はありません。
対応ネットワークとトークン
スマートガストランザクションは、EIP-7702(Pectraアップグレード)を実装した主要EVMネットワークで利用可能です。流動性・ガス代の予測性・普及度を基準に、主にUSD連動のステーブルコインを選定しています。取引所から出金後に多くのユーザーが保有しているトークンです。
ネットワーク | 対応手数料トークン |
|---|---|
Ethereum | USDC, USDT |
BNB Smart Chain | USDC, BSC-USD |
Polygon | USDC, USDT0 |
Arbitrum One | USDC, USDT0 |
Base | USDC |
スマートガストランザクションの仕組み
この機能は、2025年5月のPectraアップグレードで導入されたEIP-7702(「Set Code for EOA」)によって実現しています。これはEthereumアカウントの仕組みに大きな進化をもたらす標準です。
EIP-7702の動作
従来、Ethereumには「外部所有アカウント(EOA)」と「コントラクトアカウント」の2種類がありました。EOAは秘密鍵で管理され、資産の保有や署名はできますが、独自ロジックの実行はできません。コントラクトアカウントは任意のコードを実行できますが、デプロイやセキュリティ面で異なる性質があります。
EIP-7702はこのギャップを埋めます。EOAがスマートコントラクトのコードを一時的に委任できるようになり、ユーザーは署名メッセージを通じて認可を与えます。重要なのは、この認可自体にオンチェーントランザクションが不要な点です。ユーザーはメッセージに署名し、その署名が第三者によるトランザクションに含まれることで処理されます。
これにより、スマートガストランザクションが実現します。ユーザーは追加のガス代なしで自分のアカウントにコントラクトロジックを一時的に付与できます。
Tangem独自のスマートコントラクト実装
Tangemでは既存のソリューションを採用せず、独自にスマートコントラクトを開発しました。既存の実装はユーザーにとってコストが高かったり、Tangemの用途に不要な機能で攻撃リスクが増すものが多かったためです。
弊社の実装では、2つのコントラクトを利用します。
Tangem7702Smart gasExecutor
これはユーザーのEOAから委任されるコントラクトで、以下を担います:
- Signature verification — スマートガストランザクションのパラメータがアカウント所有者によるEIP-712署名であることを検証
- Transaction execution — ユーザーの意図した取引(例:トークン送信)を実行
- Fee compensation — 実際に消費したガス量を計算し、手数料トークンを受取人へ送金
コントラクトは最小限のストレージ(リプレイ防止用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:エントリーポイントコントラクト
さらに、スマートガストランザクション実行のためにリレーのインターフェースとなるEntry Pointコントラクトをデプロイしています。役割はシンプルで重要です。ユーザーのアドレスに紐づくコントラクトコードが想定通りかを検証し、問題なければ実行に進みます。
function executeTransaction(
Smart gasTransaction calldata gasslessTx,
bytes calldata signature,
bool forced,
address executor
) externalforcedパラメータは、fee transferのガス消費がfeeTransferGasLimitを超えた場合の挙動を制御します:
- false — トランザクションをリバート(ガス見積もり時)
- true — イベントを発行して継続(実際の実行時、ガスは既に消費済み)
これによりリレーインフラを保護します。Tangem側がガス代を立て替え、ユーザーの手数料トークンから補填を受けるため、コントラクトが正しく計算・送金することが重要です。Entry Pointは、監査済みのコントラクトコードのみとやり取りすることを保証します。
手数料パラメータ
スマートガストランザクションを承認する際、次の内容を含むメッセージに署名します:
- Fee token:支払いに使うステーブルコイン(例:USDC)
- Token price:手数料トークンとネイティブ通貨の為替レート(換算用)
- Maximum fee:支払い上限額(Tangemアプリで表示されます)
- リプレイ防止や取引詳細の追加パラメータ
Maximum feeにより、ユーザーはコストの上限を把握できます。実際の請求額は実ガス消費に基づき、通常はこの上限より低くなります。
セキュリティモデル
既存ソリューションも検証しましたが、Tangem独自コントラクトを構築したのはセキュリティ上の判断です。目的をトークン送信+手数料支払いに絞ることで、監査や安全性の確保が容易になります。
要素 | ERC-4337 | Tangemの実装 |
|---|---|---|
ガスオーバーヘッド | 高い(バンドラーインフラ) | 低い(直接実行) |
攻撃面 | 広い(多機能) | 最小(単一用途) |
ストレージ衝突リスク | 実装依存 | カスタムストレージで回避 |
アップグレード性 | 多くは管理者キーで可能 | アップグレード不可 |
監査
このコントラクトは、スマートコントラクト監査を専門とするPessimistic社による監査を受けています。監査レポート全文はGitHubで公開中です。
ユーザー体験
技術的な仕組みは複雑ですが、ユーザーの操作はとてもシンプルです:
- 対応ネットワークで送金・スワップなどのトランザクションを開始
- 対応ステーブルコインの残高があれば、そのトークンで手数料支払いオプションが表示されます
- ステーブルコイン建ての最大手数料を確認してトランザクションを承認
- 裏側では、EIP-7702認可(Tangemのスマートコントラクトをアカウントに付与)とスマートガストランザクションパラメータの両方に署名
- 署名済みバンドルがTangemのバックエンドに送信され、ネットワークへ提出
- トランザクションが実行され、手数料がステーブルコイン残高から差し引かれます
ユーザーから見ると、通常のトランザクションと変わりません。違いはネイティブコインが不要な点だけです。
制限事項・注意点
スマートガストランザクションは、記事内で紹介したステーブルコインに対応しています。流動性・普及度・技術的要件をもとに選定しています。その他の制限事項:
- 手数料プレミアム:スマートガストランザクションは、追加のコントラクト実行や価格換算のオーバーヘッドにより、ネイティブガス支払いより若干高くなる場合があります。Tangemのコントラクトはこのプレミアムを最小化するよう最適化されています。
- ネットワーク対応:EIP-7702はPectraアップグレード済みネットワークでのみ利用可能です。EIP-7702対応とステーブルコイン流動性の両方が揃ったネットワークで機能を有効化しています。
まとめ
スマートガストランザクションは、セルフカストディの大きな障壁のひとつを解消します。EIP-7702を活用することで、ユーザーは保有しているトークンだけで取引が可能になりました。
取引所から移行するユーザーにとっては、出金したトークンがすぐに使えるというメリットがあります。より広い仮想通貨エコシステムにとっても、ガス代の仕組みを理解しなくても資産を動かせる、ユーザー本位のインフラへの前進です。