[{"data":1,"prerenderedAt":19},["ShallowReactive",2],{"blog-content-ja-erc-20-vs-spl-vs-jetton":3},{"slug":4,"title":5,"excerpt":6,"description":7,"bodyHtml":8,"faqItems":9},"erc-20-vs-spl-vs-jetton","ERC-20 vs SPL vs Jetton：「同じ」トークンがチェーンごとに違う動きをする理由","ERC-20、SPL、Jetton はいずれも「トークン」を表しますが、残高の保存場所はまったく異なります。Ethereum、Solana、TON の内部で実際に何が起きているのか、そしてそれが送金の成否をどう変えるのかを解説します。","ERC-20、SPL、Jetton の違い：Ethereum、Solana、TON でトークン残高がどこに存在するのか、そして同じティッカーがチェーンごとに別のトークンである理由。","\u003Cblockquote>ERC-20、SPL、Jetton は、残高を記録する数値がどこに保存されるのかという一つの問いに、三通りの答えを出しています。Ethereum はすべての保有者の残高を共有された一つのトークンコントラクトに、Solana は保有者ごとに分かれたトークンアカウントに、TON は保有者ごとに分かれたコントラクトに保持します。この違いが、承認、手数料、そして大半の失敗パターンを説明し、同じティッカーがチェーンごとに別のトークンである理由にもなります。EVM、Solana、TON をカバーする（ただしネイティブでは Bitcoin に対応しない）WATS のように三つすべてを扱うウォレットは、この三つの文法をすべて話せなければなりません。\u003C\u002Fblockquote>\u003Ch2>「トークン規格」とは実際のところ何か\u003C\u002Fh2>\u003Cp>トークン規格とは合意されたインターフェースです。関数名、メッセージ形式、イベントといった、ウォレットや取引所が前提とする取り決めのことです。その下にあるのは普通のコードであり、各チェーンがそのコードをどう実行するかがトークンの姿を決めます。\u003C\u002Fp>\u003Cp>\u003Cstrong>ERC-20、SPL、Jetton は同じものの三つの方言ではありません。\u003C\u002Fstrong>これらは一つの問いに三通りの答えを出しています。\u003Cem>「あなたは 500 トークンを保有している」と言う数値は、どこに存在するのか?\u003C\u002Fem> Ethereum は共有された一つのコントラクトに、Solana は保有者ごとに分かれたアカウントに、TON は保有者ごとに分かれたコントラクトに保持します。この保存モデルの違いが、実務上のほぼすべての癖を説明します。その土台となるアーキテクチャの比較は \u003Ca href=\"\u002Fblog\u002Fevm-vs-solana-vs-ton\">EVM、Solana、TON\u003C\u002Fa> を参照してください。\u003C\u002Fp>\u003Ch2>Ethereum の ERC-20：一つのコントラクトが全員の残高を保持する\u003C\u002Fh2>\u003Cp>ERC-20 トークンは一つのアドレスにある一つのスマートコントラクトであり、アドレスと数値を対応づける台帳を保持します。あなたがトークンを「持っている」のではなく、あなたのアドレスに一定額の債権があるという記録をコントラクトが保持しているのです。\u003C\u002Fp>\u003Cp>送金は\u003Cem>トークンコントラクトへの\u003C\u002Fem>呼び出しであり、ある行を減らし別の行を増やします。あなたのアドレス側に事前準備は不要で、そのトークンに一度も触れたことのないアドレスでも任意の ERC-20 を受け取れます。\u003C\u002Fp>\u003Cp>だからこそ、あるトークンを大量に保有していても動かせない、という事態が起こります。コントラクトの呼び出しにはガスがかかり、既定ではチェーンのネイティブトークンで決済されるからです。2026 年時点でこの既定は絶対ではありません。ERC-4337 のペイマスターを使えばアカウント所有者以外が支払えますし、EIP-7702 ではアカウントの委任を設定する type-4 トランザクションを第三者が送信・支払いできます（ただしその後のスポンサーシップは、委任先コードの実装内容に依存します）。ネットワークは依然として処理に対して課金しており、変わるのは支払者だけです。\u003C\u002Fp>\u003Ch2>Solana の SPL：トークンアカウント、レント、そしてミント\u003C\u002Fh2>\u003Cp>Solana は役割を二つに分けます。\u003Cstrong>ミントアカウント\u003C\u002Fstrong>がトークンそのもの（供給量、小数桁数、ミントやフリーズを行える権限）を定義します。残高は別個の\u003Cstrong>トークンアカウント\u003C\u002Fstrong>に存在します。そのアカウントデータを所有するのは Token Program で、アカウント側は保有者を owner かつ支払権限として指定します。1 ミントにつき 1 アカウントという制限はありません。\u003C\u002Fp>\u003Cp>そのためウォレットは、ウォレットアドレス・ミント・トークンプログラム ID から導出される関連トークンアカウント（ATA）に標準化しています。これは存在し、かつ資金が入っている必要があります。レント免除として少額の SOL がアカウント内にロックされ（返還可能）、アカウントを存続させます。\u003C\u002Fp>\u003Cp>したがって新しい SPL トークンを受け取ることはオンチェーンのイベントになりますが、多くの送金はアカウント作成を同じトランザクションにまとめています。2026 年時点で Token-2022 は、任意の転送手数料、秘匿残高、トランスファーフックを追加しています。そのプログラム ID が導出のシードとなるため、Token-2022 のミントは従来のものとは異なる関連トークンアカウントを導出します。\u003C\u002Fp>\u003Ch2>TON の Jetton：保有者ごとに専用コントラクトを持つ\u003C\u002Fh2>\u003Cp>TON はこの分割を最も徹底しています。ジェットンはメタデータと供給量を保持する\u003Cstrong>マスターコントラクト\u003C\u002Fstrong>を持ち、保有者はそれぞれ自分専用の\u003Cstrong>ジェットンウォレットコントラクト\u003C\u002Fstrong>を持って、その 1 トークンの自分の残高だけを保存します。\u003C\u002Fp>\u003Cp>送金は共有台帳への呼び出しではなく、非同期のメッセージです。あなたのジェットンウォレットコントラクトが受取人のコントラクトへメッセージを送り、そこで残高が加算されます。TON はシャード化されているため、これは一つの原子的なステップではなく複数の連続したブロックにまたがって解決されます。\u003C\u002Fp>\u003Cp>各メッセージは、それが下流で引き起こす計算（必要なら受取人のジェットンウォレットのデプロイを含む）を賄うだけの TON を持たせる必要があります。少なすぎるとバウンスしたり滞留したりします。この方向性（2026 年時点の TEP-74）によって TON は水平方向にスケールできますが、EVM 向けに書かれた素朴な送金コードはつまずきます。\u003C\u002Fp>\u003Ch2>承認、手数料、失敗パターン：三者が分かれるところ\u003C\u002Fh2>\u003Cp>最も鋭く分かれるのが承認（approval）です。ERC-20 にはアローワンスのパターンがあります。あるコントラクトに、自分のトークンを一定額まで動かす許可を与え、それは取り消すまで残り続けます。だからこそ不用意な署名一つが数か月後にウォレットを空にし得るのです。\u003Ca href=\"\u002Fblog\u002Ftoken-approvals-and-permit-explained\">トークン承認と permit の解説\u003C\u002Fa>および\u003Ca href=\"\u002Fblog\u002Fhow-to-revoke-token-approvals\">トークン承認の取り消し方法\u003C\u002Fa>を参照してください。\u003C\u002Fp>\u003Cp>Solana が解毒剤になるわけではありません。SPL の approve はトークンアカウントにデリゲートを設定し、それはトランザクション後も残ります。さらに setAuthority はアカウントの権限そのものを付け替えられます。いずれも既知のドレイナーの手口です。Solana のトランザクションは触れるアカウントをすべて列挙しますが、それが制約するのは署名したそのトランザクションだけで、恒常的な許可ではありません。TON には ERC-20 型のアローワンスはありません。\u003C\u002Fp>\u003Cp>手数料も異なります。EVM は計算量の単位ごとにガスを価格づけし、Solana は署名ごとの定額のベース手数料に任意のプライオリティ手数料を加え、TON はメッセージ単位です。失敗パターンも同様です。EVM ではトークンを扱えないコントラクトに取り残される、Solana ではトークンアカウントが存在しない、TON では付与した価値が少なすぎる、といった具合です。\u003C\u002Fp>\u003Ch2>同じティッカーがチェーンをまたいで同じトークンではない理由\u003C\u002Fh2>\u003Cp>ティッカーを共有する二つの資産は、技術的には何も共有していません。Ethereum の USDC はコントラクトアドレス、Solana ではミントアドレスです。TON では USDT のようにネイティブ発行されたステーブルコインが、それ自身のジェットンマスターの背後にあります。それぞれが独自の供給量を持つ別個のオンチェーンオブジェクトであり、ブリッジ版はさらに別の債権です。\u003C\u002Fp>\u003Cp>エコシステムをまたいで送ること（EVM トークンを Solana や TON のアドレスへ送るなど）は通常は回復不能です。何が救えるのかは\u003Ca href=\"\u002Fblog\u002Fsent-crypto-to-wrong-network-how-to-recover\">間違ったネットワークに送金した場合の回復方法\u003C\u002Fa>にまとめています。EVM 同士なら寛容なことが多くあります。外部所有アカウント（EIP-7702 で委任されたものを含む）は、どのチェーンでも同一アドレスで同じ鍵によって制御されますし、宛先チェーンで未デプロイの ERC-4337 型スマートアカウントも、通常は同一のファクトリと init コードでそこに再デプロイできます。アドレス形式はその手がかりであり、\u003Ca href=\"\u002Fblog\u002Fcrypto-address-formats-explained\">暗号資産のアドレス形式の解説\u003C\u002Fa>で扱っています。単一の正規供給が移動するのか、新しい債権が発行されるのかという違いは、\u003Ca href=\"\u002Fblog\u002Fomnichain-vs-wrapped-bridged-tokens\">オムニチェーントークンとラップド／ブリッジトークン\u003C\u002Fa>の差です。\u003C\u002Fp>\u003Ch2>これがあなたのウォレットにとって意味すること（そして WATS の扱い方）\u003C\u002Fh2>\u003Cp>マルチチェーンウォレットはこの三つの文法をすべて話せなければならず、利用者はその差を意識せずに済むべきです。しかし手数料だけは表に漏れ出します。各チェーンが自分のネイティブなガストークンを求めるからです。2026 年時点では、そのように設計されたウォレットであればこの前提は交渉可能です。\u003C\u002Fp>\u003Cp>WATS Hot Wallet はまさにそれを行います。送金、スワップ、ステーキングといったあらゆる操作の手数料が、チェーンのネイティブガスの代わりに ATS という一つのトークンで課金されます。EVM では ERC-4337 のペイマスターを通じて、Solana と TON では同等のフィーペイヤーおよびリレイヤーを通じてです（ERC-4337 は EVM 専用のため）。ATS は LayerZero の OFT なので、一つの残高が EVM、Solana、TON にまたがって機能します。これはネットワークが課す金額を変えるものではなく（\u003Ca href=\"\u002Fats-fee\">ATS 手数料\u003C\u002Fa>は実際のネットワークコストに連動します）、そのコストをどのトークンで決済するかを変えるものです。徴収された ATS はバーンされ、1 億から 3000 万というフロアに向かって減っていきます。ノンカストディアルであることも変わりません。鍵はあなたが保有し、WATS が鍵を保持することはありません。WATS は、ERC-4337 と OFT による単一トークン手数料（ネイティブガスの代わりに課金される）を、このバーンと組み合わせた最初で唯一のウォレットです。\u003C\u002Fp>",[10,13,16],{"q":11,"a":12},"SPL トークンの受け取りが Solana ではコストを伴い、Ethereum では伴わないのはなぜですか?","Ethereum では残高はトークン自身のコントラクト内の 1 行にすぎないため、受け取りは受取人にとって無料で、事前準備も不要です。Solana では、あるミントを初めて受け取る際にそのためのトークンアカウントが存在している必要があり、そのアカウントをオンチェーンに維持するには少額のレント免除デポジット（SOL）が必要です。これはアカウントを閉じれば回収できます。実際には送金者のトランザクションが同じステップでそのアカウントを作成・資金拠出することが多いため、コストは送金者側にかかり、受取人が目にすることはありません。",{"q":14,"a":15},"TON のジェットン送金は ERC-20 の送金と何が違いますか?","ジェットンでは保有者ごとに、自分の残高だけを保存する専用のスマートコントラクトが与えられます。送金はあなたのジェットンウォレットコントラクトから受取人のコントラクトへの非同期メッセージであり、一つの原子的な呼び出しではなく連続したブロックにまたがって解決されます。各メッセージは、それが引き起こす処理を賄うだけの TON を持たせる必要があり、足りなければバウンスすることがあります。",{"q":17,"a":18},"Ethereum の USDC と Solana の USDC は同じトークンですか?","いいえ。ティッカーと発行体が同じでも、それぞれ別のアドレス、別の供給量、別の規格を持つ独立したオンチェーンオブジェクトです。一方をもう一方のチェーンのアドレスへ送ると通常は回復不能であり、ブリッジ版のティッカーはネイティブ発行のものとは別物です。",1786059414065]