Проєкт переходить на новий контракт, публікує коефіцієнт і відкриває вікно обміну. Гаманець і далі показує старий баланс, а число, яке ви зрештою триматимете, не написане ніде. Щоб перетворити оголошений коефіцієнт на зарахований баланс, потрібні три окремі перевірки, і хибною виявляється рідко те множення, на яке ви очікували.
Що коефіцієнт конвертації насправді задає
Коефіцієнт конвертації це фіксований курс між двома реєстрами: скільки одиниць нового токена дає кожна одиниця старого. Проєкт його встановлює, контракт обміну його забезпечує, і він не рухається за ринком. За якою б ціною два токени не переходили з рук у руки в день вашого обміну, ви отримуєте той коефіцієнт, який був записаний.
Перше, що треба з'ясувати, це напрямок, бо коефіцієнт, оголошений як один до чотирьох, читається двояко. Він може означати одну нову одиницю за кожні чотири старі або чотири нові одиниці за кожну одну стару, і ці два прочитання різняться в шістнадцять разів. Прив'яжіть прочитання до того, що ви можете перевірити самі: порівняйте нову загальну пропозицію зі старою. Якщо нова пропозиція менша з двох, кожна стара одиниця має перетворюватися менш ніж на одну нову, і будь-яке прочитання, що каже інакше, перевернуте.
Друге, що треба з'ясувати, це до якого балансу коефіцієнт застосовується. Міграція визначає прийнятну множину: баланси на момент знімка, баланси, що досі лежать у старому контракті, або баланси, подані контракту обміну до того, як він припинив виплати. Усередині цієї множини коефіцієнт однаковий для всіх, тож усе подальше припускає, що ваш баланс до неї входить. Чи вікно обміну ще відкрите це окреме питання від того, скільки коефіцієнт заплатив би, якби воно було відкрите.
Звідки береться це число
Коефіцієнт це рішення, і в рішення є арифметичний каркас. Проєкт спершу фіксує розмір нового реєстру, а потім ділить його на старі одиниці, які міграція має поглинути. Частка від ділення і є коефіцієнтом, і саме тому коефіцієнт і два числа пропозиції узгоджуються: помножте прийнятну стару пропозицію на коефіцієнт і ви отримаєте назад нову пропозицію, зарезервовану під обмін.
Візьміть проєкт, який фіксує нову пропозицію в 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 на цю тему:
- Як відкликати делегування в управлінні
- Чому міграція токена просить схвалення в гаманці
- Міграція токенів завершена, але нових токенів немає в гаманці
- 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






