Как рассчитать коэффициент конвертации при миграции токена

2026-09-03

Как рассчитать коэффициент конвертации при миграции токена

Проект переезжает на новый контракт, публикует коэффициент и открывает окно обмена. Кошелёк по-прежнему показывает старый баланс, а сколько окажется у вас на руках, не написано нигде. Чтобы превратить объявленный коэффициент в зачисленный баланс, нужно пройти три независимые проверки, и ошибка почти никогда не случается в том умножении, которого вы ждёте.

Как рассчитать коэффициент конвертации при миграции токена: путь от объявленного коэффициента до зачисленного баланса

Что именно задаёт коэффициент конвертации

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

Первое, что нужно определить, — это направление, потому что коэффициент, записанный как «один к четырём», читается двумя способами. Он может означать одну новую единицу за каждые четыре старые или четыре новые единицы за каждую одну старую, и эти два прочтения различаются в шестнадцать раз. Привяжите прочтение к тому, что вы можете проверить самостоятельно: сравните новое общее предложение со старым. Если новое предложение меньше, то каждая старая единица обязана превращаться менее чем в одну новую, и любое прочтение, утверждающее обратное, перевёрнуто.

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

Откуда берётся это число

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

Возьмём проект, который фиксирует новое предложение в 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

- ADX и измерение силы тренда

Дисклеймер: эта статья — образовательный материал 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