Монеты и токены: зачем нужен ETH, чтобы отправить USDC

·4 мин. чтения·Автор: SSP Editorial Team
Обложка SSP Academy: монеты, токены и газ

Монеты и токены: зачем нужен ETH, чтобы отправить USDC

Это один из самых частых сюрпризов в криптовалютах. У вас есть USDC на 500 $ в Ethereum, вы пытаетесь их отправить, а кошелёк сообщает, что средств недостаточно. Недостаточно чего? Ответ кроется в разнице между монетой и токеном — и как только вы её поймёте, многое в поведении кошельков внезапно станет логичным.

Монеты — собственные деньги блокчейна

У каждого блокчейна есть нативный актив, встроенный в его правила. У Bitcoin есть BTC, у Ethereum — ETH, у Solana — SOL, у Polygon — POL. Это монеты: их учёт ведёт сама сеть, и именно их сеть принимает в качестве оплаты за обработку транзакций.

Когда вы отправляете монету, блокчейн перемещает её напрямую. Никакого контракта посередине нет — только собственный учёт протокола.

Токены живут внутри контрактов

Токен устроен иначе. В Ethereum и подобных сетях токен вроде USDC, USDT или токена управления — это смарт-контракт, который ведёт собственный реестр: список адресов и то, сколько токенов принадлежит каждому из них. В Solana токены следуют стандарту SPL, а балансы хранятся в отдельных токен-аккаунтах.

Ваш «баланс USDC» на самом деле — это запись в контракте USDC о том, что определённая сумма принадлежит вашему адресу. Отправить USDC — значит попросить этот контракт обновить реестр, то есть перенести число из вашей записи в чужую.

Поэтому один и тот же токен может существовать в нескольких сетях как совершенно отдельные сущности. USDC в Ethereum и USDC в Polygon — это разные контракты с разными реестрами. Одни версии выпускаются нативно, другие представляют собой обёрнутые или перенесённые через мост представления актива, который хранится в другом месте.

Газ всегда оплачивается в монете

Вот откуда берётся сюрприз. Попросить контракт токена переместить ваш баланс — это всё равно транзакция в блокчейне, а блокчейн берёт комиссию за каждую транзакцию — газ. Эта комиссия оплачивается в нативной монете, а не в токене, который вы отправляете.

Значит, чтобы отправить USDC в Ethereum, на одном и том же адресе вам нужны две вещи:

  • USDC, которые вы хотите отправить, и
  • немного ETH для оплаты транзакции.

Без ETH ваши USDC застрянут — не пропадут, просто их нельзя будет переместить, пока вы не пополните баланс. Это правило действует везде: токенам в Polygon для газа нужен POL, в BNB Chain — BNB, в Avalanche — AVAX, а в Base — ETH.

Дополнительная особенность Solana

По сути Solana работает так же — комиссии оплачиваются в SOL, — но с одним дополнением. Для каждого токена, которым вы владеете, нужен свой токен-аккаунт, а его создание требует небольшого депозита в SOL, называемого рентой. Когда кто-то присылает вам токен, которого у вас раньше не было, для него нужно создать токен-аккаунт. В статье Как работают токен-аккаунты и рента всё объяснено подробно; если коротко, держите под рукой немного SOL, чтобы хранить и перемещать и SPL-токены.

Какие ошибки это объясняет

Когда разница между монетой и токеном ясна, несколько классических проблем становятся понятными:

  • «Недостаточно средств» при полном балансе токенов. У вас закончилась нативная монета для оплаты газа.
  • Токены, отправленные не в ту сеть. USDC, отправленные в одной сети, не появятся в другой, даже на том же адресе, потому что это другой контракт в другом реестре.
  • Отправка последних монет. Если полностью опустошить баланс ETH, все токены на этом адресе нельзя будет переместить, пока вы его не пополните.
  • «Бесплатные» токены, которые не получается продать. Для перемещения непрошеного токена может потребоваться газ — и он может быть устроен так, что попытка обойдётся вам дороже, чем он стоит.

Как это работает в SSP

SSP показывает монеты и токены по каждой сети, внутри кошелька соответствующей сети. В EVM-сетях ваш аккаунт SSP — это смарт-аккаунт под управлением вашего мультиподписного кошелька 2 из 2, а газ за отправку токена оплачивается нативной монетой того же хранилища, поэтому держите рядом с токенами немного ETH (или POL, BNB, AVAX). Когда вы отправляете токен, SSP Key показывает перевод токена, декодированный из транзакции, — получателя и сумму токена, а не просто «сырой» вызов контракта.

В Solana релей SSP заранее оплачивает сетевую комиссию, а хранилище возмещает её в SOL в рамках той же отправки, так что немного SOL в хранилище всё равно понадобится.

Честное резюме

Монеты — это собственные деньги блокчейна; токены — это балансы внутри контрактов, работающих в блокчейне. Каждая транзакция оплачивается в монете, включая транзакции, перемещающие токены.

Держите небольшой запас нативной монеты в каждой сети, где у вас есть токены, проверяйте, в какой сети находится токен, прежде чем отправлять или получать его, — и вы избежите самых распространённых в криптовалютах моментов «куда делись мои деньги?».

Поделиться статьёй

Похожие статьи