[{"data":1,"prerenderedAt":19},["ShallowReactive",2],{"blog-content-ru-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 против SPL и Jetton: почему «один и тот же» токен работает по-разному в каждой сети","ERC-20, SPL и Jetton описывают «токен», но хранят балансы в совершенно разных местах. Разбираем, что на самом деле происходит под капотом в Ethereum, Solana и TON и почему от этого зависит, пройдёт перевод или сорвётся.","Чем отличаются ERC-20, SPL и Jetton: где хранятся балансы токенов в Ethereum, Solana и TON и почему один и тот же тикер — это разные токены в разных сетях.","\u003Cblockquote>ERC-20, SPL и Jetton дают три разных ответа на один вопрос: где хранится число, фиксирующее ваш баланс. Ethereum держит балансы всех держателей в одном общем контракте токена, Solana — в отдельном токен-аккаунте на каждого держателя, TON — в отдельном контракте на каждого держателя. Именно это различие объясняет аппрувы, комиссии и большинство сценариев сбоев, а также то, почему один и тот же тикер — это разные токены в разных сетях. Кошельки, охватывающие все три модели, например WATS, который поддерживает EVM, Solana и TON, но не Bitcoin нативно, вынуждены говорить на всех трёх грамматиках.\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>ERC-20 в Ethereum: один контракт хранит балансы всех\u003C\u002Fh2>\u003Cp>Токен ERC-20 — это один смарт-контракт по одному адресу, внутри которого лежит реестр, сопоставляющий адреса и числа. Вы не «держите» токен: контракт хранит запись о том, что вашему адресу причитается некоторая сумма.\u003C\u002Fp>\u003Cp>Перевод — это вызов \u003Cem>к контракту токена\u003C\u002Fem>, который уменьшает одну строку и увеличивает другую. Ваш адрес не требует никакой подготовки: вы можете получить любой ERC-20 на адрес, который никогда не соприкасался с этим токеном.\u003C\u002Fp>\u003Cp>Отсюда и ситуация, когда вы владеете состоянием в токене и всё равно не можете его сдвинуть: вызов контракта стоит газа, который по умолчанию оплачивается нативным токеном сети. По состоянию на 2026 год это умолчание не абсолютно: paymaster в рамках ERC-4337 позволяет платить не владельцу аккаунта, а EIP-7702 позволяет третьей стороне отправить и оплатить транзакцию типа 4, задающую делегирование аккаунта, хотя дальнейшее спонсирование зависит от того, что реализует делегированный код. Сеть по-прежнему берёт плату за работу — меняется только плательщик.\u003C\u002Fp>\u003Ch2>SPL в Solana: токен-аккаунты, рента и mint\u003C\u002Fh2>\u003Cp>Solana разделяет задачу надвое. \u003Cstrong>Mint-аккаунт\u003C\u002Fstrong> описывает токен: эмиссию, число знаков после запятой и то, какая инстанция вправе чеканить или замораживать. Балансы живут в отдельных \u003Cstrong>токен-аккаунтах\u003C\u002Fstrong>. Данными такого аккаунта владеет Token Program, а сам аккаунт указывает держателя как своего владельца и распорядителя средств; ограничения «один аккаунт на mint» нет.\u003C\u002Fp>\u003Cp>Поэтому кошельки стандартизировались на associated token account, который выводится из адреса вашего кошелька, mint и program id токена. Он должен существовать и быть профинансирован: rent-exemption блокирует в аккаунте небольшую возвратную сумму SOL, чтобы тот продолжал жить.\u003C\u002Fp>\u003Cp>Получение нового SPL-токена, таким образом, является ончейн-событием, хотя большинство переводов включают создание аккаунта в ту же транзакцию. По состоянию на 2026 год Token-2022 добавляет опциональные комиссии за перевод, конфиденциальные балансы и transfer hooks; поскольку его program id участвует в выводе адреса, его mint'ы дают другой associated token account, чем у прежнего стандарта.\u003C\u002Fp>\u003Ch2>Jetton в TON: у каждого держателя свой контракт\u003C\u002Fh2>\u003Cp>TON доводит разделение до предела. У джеттона есть \u003Cstrong>мастер-контракт\u003C\u002Fstrong> с метаданными и эмиссией, а каждый держатель получает собственный \u003Cstrong>контракт jetton-кошелька\u003C\u002Fstrong>, хранящий только его баланс по этому одному токену.\u003C\u002Fp>\u003Cp>Переводы — это асинхронные сообщения, а не вызовы к общему реестру: контракт вашего jetton-кошелька отправляет сообщение контракту получателя, и тот зачисляет баланс. Поскольку TON шардирован, всё это разрешается за несколько последовательных блоков, а не одним атомарным шагом.\u003C\u002Fp>\u003Cp>Каждое сообщение должно нести достаточно TON для вычислений, которые оно запускает дальше по цепочке, включая деплой jetton-кошелька получателя, если тот ещё не создан; приложите слишком мало — и сообщение может отскочить или зависнуть. Такая ориентация (TEP-74, по состоянию на 2026 год) позволяет TON масштабироваться горизонтально и подводит наивный код перевода, написанный под EVM.\u003C\u002Fp>\u003Ch2>Аппрувы, комиссии и сценарии сбоев: где три модели расходятся\u003C\u002Fh2>\u003Cp>Резче всего расходятся аппрувы. В ERC-20 работает паттерн allowance: вы выдаёте контракту разрешение перемещать до определённой суммы ваших токенов, и оно действует, пока его не отозвали, — поэтому одна неосторожная подпись способна опустошить кошелёк спустя месяцы; см. \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 allowance в стиле ERC-20 отсутствует.\u003C\u002Fp>\u003Cp>Комиссии тоже расходятся: EVM тарифицирует газ за единицу вычислений, Solana — фиксированная базовая комиссия за подпись плюс опциональная приоритетная, TON — за сообщение. Расходятся и сценарии сбоев: в EVM токены застревают в контракте, который не умеет с ними обращаться; в Solana не хватает токен-аккаунта; в TON к сообщению приложено слишком мало ценности.\u003C\u002Fp>\u003Ch2>Почему один и тот же тикер — это разные токены в разных сетях\u003C\u002Fh2>\u003Cp>Два актива с общим тикером технически не имеют между собой ничего общего. USDC в Ethereum — это адрес контракта, в Solana — адрес mint; в TON нативно выпущенный стейблкоин вроде USDT стоит за собственным jetton-мастером. Каждый из них — отдельный ончейн-объект со своей эмиссией, а мостовая версия — это уже совсем другое требование.\u003C\u002Fp>\u003Cp>Отправка между экосистемами — EVM-токена на адрес Solana или TON — обычно невосстановима; в материале \u003Ca href=\"\u002Fblog\u002Fsent-crypto-to-wrong-network-how-to-recover\">отправил крипту не в ту сеть: как вернуть\u003C\u002Fa> разобрано, что вообще можно спасти. Переводы EVM → 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, вместо нативного газа сети: через paymaster ERC-4337 в EVM и эквивалентный механизм плательщика комиссии и релеера в Solana и TON, поскольку ERC-4337 работает только в EVM. ATS — это LayerZero OFT, поэтому один баланс работает в EVM, Solana и TON. Это не меняет того, сколько берёт сеть: \u003Ca href=\"\u002Fats-fee\">комиссия в ATS\u003C\u002Fa> следует за актуальной стоимостью сети — меняется лишь то, каким токеном эта стоимость оплачивается. Собранный ATS сжигается: со 100 миллионов в сторону нижней границы в 30 миллионов. Кошелёк остаётся некастодиальным: ключи держите вы, а WATS никогда не хранит ключ. WATS — первый и единственный кошелёк, который сочетает ERC-4337 и OFT-комиссии в одном токене, взимаемые вместо нативного газа, с таким сжиганием.\u003C\u002Fp>",[10,13,16],{"q":11,"a":12},"Почему получение SPL-токена в Solana чего-то стоит, а в Ethereum нет?","В Ethereum ваш баланс — это просто строка внутри контракта самого токена, поэтому получение бесплатно для получателя и не требует подготовки. В Solana при первом получении конкретного mint для него должен существовать токен-аккаунт, а чтобы этот аккаунт жил в блокчейне, нужен небольшой депозит SOL по схеме rent-exemption, возвращаемый при закрытии аккаунта. На практике транзакция отправителя обычно создаёт и финансирует этот аккаунт тем же шагом, так что расходы ложатся на отправителя, а получатель их не видит.",{"q":14,"a":15},"Чем перевод джеттона в TON отличается от перевода ERC-20?","Джеттон даёт каждому держателю собственный смарт-контракт, который хранит только его баланс. Перевод — это асинхронное сообщение от контракта вашего jetton-кошелька к контракту получателя, разрешающееся за несколько последовательных блоков, а не одним атомарным вызовом. Каждое сообщение должно нести достаточно TON, чтобы оплатить запускаемую им работу, иначе оно может отскочить.",{"q":17,"a":18},"USDC в Ethereum и USDC в Solana — это один и тот же токен?","Нет. Это отдельные ончейн-объекты с разными адресами, эмиссиями и стандартами, даже если у них общий тикер и общий эмитент. Отправка одного на адрес в другой сети, как правило, невосстановима, а мостовые версии тикера отличаются от нативно выпущенных.",1786059391390]