Проект переезжает на новый контракт, публикует коэффициент и открывает окно обмена. Кошелёк по-прежнему показывает старый баланс, а сколько окажется у вас на руках, не написано нигде. Чтобы превратить объявленный коэффициент в зачисленный баланс, нужно пройти три независимые проверки, и ошибка почти никогда не случается в том умножении, которого вы ждёте.
Что именно задаёт коэффициент конвертации
Коэффициент конвертации — это фиксированный курс между двумя реестрами: сколько единиц нового токена покупает каждая единица старого. Его устанавливает проект, его исполняет контракт обмена, и он не двигается вслед за рынком. По какой бы цене эти два токена ни переходили из рук в руки в день вашего обмена, вы получите тот коэффициент, который был записан заранее.
Первое, что нужно определить, — это направление, потому что коэффициент, записанный как «один к четырём», читается двумя способами. Он может означать одну новую единицу за каждые четыре старые или четыре новые единицы за каждую одну старую, и эти два прочтения различаются в шестнадцать раз. Привяжите прочтение к тому, что вы можете проверить самостоятельно: сравните новое общее предложение со старым. Если новое предложение меньше, то каждая старая единица обязана превращаться менее чем в одну новую, и любое прочтение, утверждающее обратное, перевёрнуто.
Второе, что нужно определить, — к какому балансу коэффициент вообще применяется. Миграция задаёт допустимое множество: балансы на момент снимка, балансы, всё ещё лежащие в старом контракте, или балансы, поданные в контракт обмена до того, как он перестал выплачивать. Внутри этого множества коэффициент одинаков для всех, поэтому всё дальнейшее исходит из того, что ваш баланс в него входит. Открыто ли окно обмена прямо сейчас — отдельный вопрос, не совпадающий с тем, сколько коэффициент заплатил бы, будь оно открыто.
Откуда берётся это число
Коэффициент — это решение, и у решения есть арифметический костяк. Проект сначала фиксирует размер нового реестра, а затем делит его на число старых единиц, которые миграция обязана поглотить. Частное и есть коэффициент, и именно поэтому коэффициент и две цифры предложения сходятся: умножьте допустимое старое предложение на коэффициент и получите обратно новое предложение, зарезервированное под обмен.
Возьмём проект, который фиксирует новое предложение в 400 000 000 единиц и имеет 1 000 000 000 старых единиц, допущенных к миграции. Коэффициент — это первое число, делённое на второе, так что каждая старая единица превращается в 40% одной новой. В обратную сторону: пять старых единиц дают две новые.
Этот вывод даёт вам проверку, которую можно применить к любому объявлению. Если проект публикует обе цифры предложения и коэффициент, все три обязаны сходиться. Когда они не сходятся, либо одна из трёх цифр неверна, либо допустимое множество уже, чем вы предполагали, и выяснить, что именно, важнее, чем пересчитывать свой баланс по цифре, которая не сходится.
Как посчитать собственную долю
Когда направление и коэффициент определены, ваша цифра — это одно умножение: старый баланс на коэффициент. Баланс в 12 500 старых единиц при коэффициенте 40% превращается в 5 000 новых единиц. Ничто в этом шаге не зависит от цены и ничто не зависит от того, в какой день внутри окна вы обмениваете.
Делайте это умножение в тех единицах, которые показывает кошелёк, потому что именно эту форму можно приложить к объявлению. Контракт выполняет то же самое умножение в другой системе единиц, и совпадут они только тогда, когда сойдутся десятичные разряды. Это следующая проверка, и именно она даёт ответы, промахивающиеся на целые степени десяти.
| Что вам нужно | Где это прочитать | Что сломается без этого |
|---|---|---|
| Коэффициент и его направление | Объявление, сверенное с двумя цифрами предложения | Результат выйдет перевёрнутым |
| Число десятичных разрядов обоих токенов | Функция decimals в каждом контракте токена | Результат промахнётся на степень десяти |
| Правило округления | Целочисленная арифметика внутри функции обмена | Остаток останется в старом контракте |
| Какой баланс допустим | Объявление и то, что контракт готов принять | Вы посчитаете единицы, которые обмен не возьмёт |
Десятичные разряды — это вторая конвертация, и именно её пропускают
Контракты токенов не хранят дробные величины. Они хранят целые числа, а отдельное значение указывает, где стоит десятичная точка. В стандарте ERC-20 необязательная функция decimals возвращает число десятичных разрядов токена; спецификация поясняет это на токене со значением восемь, у которого хранимую величину надо разделить на сто миллионов, чтобы получить представление для пользователя.
Именно потому, что эта функция необязательна, стандарт указывает: интерфейсы и другие контракты не должны рассчитывать на присутствие этого значения. Когда его нет, число разрядов становится соглашением, которое вам придётся установить другим способом, а закрывать этот пробел предполагаемым по умолчанию значением — так баланс и прочитывают с ошибкой на порядки.
Миграция между двумя токенами с разным числом разрядов накладывает это масштабирование поверх коэффициента. Если старый токен использует восемнадцать разрядов, а новый шесть, одна и та же отображаемая величина хранится целыми числами, различающимися в 1 000 000 000 000 раз. Контракт обмена несёт это масштабирование внутри себя, поэтому кошелёк, знающий оба значения decimals, покажет вам верное число. Сырые целые числа, скопированные из блокчейн-эксплорера, — другое дело: значение, прочитанное прямо из вызова контракта, выражено в базовых единицах, и поставить базовую единицу одного токена рядом с базовой единицей другого значит сравнить две разные шкалы.
Читайте коэффициент из контракта, а не из объявления
Объявление — это проза, а платит контракт обмена. Откройте его верифицированный исходный код и найдите две константы, на которые функция обмена умножает и делит. Эти константы и есть коэффициент в исполняемой форме. Если они расходятся с объявлением, ваш баланс пропустят именно через них.
Заодно прочитайте значение decimals в обоих контрактах токенов. Две константы и два значения decimals — это весь расчёт целиком, и все четыре доступны как бесплатные публичные чтения.
Затем подтвердите результат, прежде чем отдавать баланс. Контракту обмена нужно одобрение токена, чтобы вообще сдвинуть ваши старые токены, и одобрение можно выдать на малую сумму вместо всего баланса. Обменять немного, сверить пришедшее со своей арифметикой и только затем одобрить остальное — так расчёт превращается из выведенного в увиденное.
Округление и единицы, которые остаются позади
Контракт работает с целыми числами, а целочисленное деление отбрасывает дробную часть. Когда ваша старая величина не кратна знаменателю коэффициента, деление выбрасывает остаток вместо округления вверх. При восемнадцати разрядах отброшенный кусок — дробь, слишком малая, чтобы иметь отображаемую форму, и при этом вполне настоящая.
Остаток становится видимым, когда выплата квантуется грубее. Баланс в 12 502 старых единиц при том же коэффициенте 40% даёт 5 000 новых единиц и хвостик; контракт, зачисляющий только целые единицы, зачислит 5 000, а хвостик останется на месте. Заранее решите, что перед вами: остаток округления, которым можно пренебречь, или старый баланс, который вы всё ещё будете держать после закрытия окна.
Чего коэффициент не говорит о стоимости
Коэффициент конвертации фиксирует количества и ничего не утверждает о ценности. Число единиц у вас на руках меняется, и это всё, что коэффициент гарантирует. Читать коэффициент меньше единицы как убыток, а больше единицы как прибыль значит принимать арифметическое преобразование за движение цены.
Миграция меняет другое: то, какой реестр оценивает рынок. Как только оба токена существуют, они торгуются раздельно, и их цены задаёт встречающийся им спрос, а не коэффициент, связавший их предложения. Полученный вами токен ERC-20 — это новый контракт со своим собственным рынком, а коэффициент — единственное неизменное, что перенесено через границу.
| Что коэффициент фиксирует | Что он оставляет рынку |
|---|---|
| Сколько новых единиц получится из вашего баланса | Сколько стоит одна новая единица |
| Соотношение между двумя цифрами предложения | Будет ли новый токен торговаться выше или ниже старого |
| Арифметику, которую выполняет контракт обмена | Стоимость вашей позиции после обмена |
Итог
Коэффициент конвертации — это одно умножение, обёрнутое в три проверки. Определите направление коэффициента, сверив его с двумя цифрами предложения; прочитайте число десятичных разрядов обоих токенов, чтобы масштабирование не сдвинуло ответ на степень десяти; найдите правило округления, чтобы знать, что останется позади.
Затем проверяйте, а не доверяйте: константы внутри контракта обмена и есть коэффициент, который применят на деле, а маленький пробный обмен превращает вашу арифметику в наблюдение. Чтобы продолжать разбираться в основах, следите за материалами Bitbase Academy.
Похожие материалы
Другие материалы Bitbase по этой теме:
- Как отозвать делегирование в управлении
- Почему миграция токена просит одобрение в кошельке
- Миграция токенов завершена, но новые токены не пришли
- Признаки ваш-трейдинга с NFT
Дисклеймер: эта статья — образовательный материал Bitbase Academy, только для информационных целей. Она не является инвестиционным, торговым, налоговым или финансовым советом. Криптоактивы волатильны — оценивайте риски самостоятельно. Написано в сентябре 2026 года; сверяйтесь с актуальной официальной информацией.
Источники
[1] Ethereum Improvement Proposals, ERC-20: Token Standard (EIP-20, Final), метод decimals eips.ethereum.org
[2] Документация для разработчиков ethereum.org, ERC-20 Token Standard ethereum.org






