Що таке bounceable і non-bounceable адреса в TON
Bounceable-адреса в TON — форма запису адреси з прапорцем, який просить повернути переказ, якщо отримувач не зміг його обробити.
Акаунт у TON визначається workchain і 256-бітним хешем — це «сира» адреса виду 0:abc…. Для людей її записують у user-friendly формі base64 з прапорцями та контрольною сумою. Два основні варіанти: bounceable (зазвичай починається з EQ) і non-bounceable (зазвичай UQ). Є також варіанти для тестової мережі. Важливо: усе це один і той самий акаунт, змінюється лише запис і поведінка переказу.
Прапорець bounce визначає, що станеться, якщо повідомлення не вдалося обробити. Якщо контракт отримувача не розгорнуто або він завершився помилкою, bounceable-переказ повертається відправнику за вирахуванням комісії. Для смарт-контрактів, які точно існують, це корисний захист.
З гаманцями користувачів усе навпаки. Новий гаманець у TON — неініціалізований контракт, доки з нього не відправлять першу транзакцію. Якщо надіслати на такий гаманець bounceable-переказ, кошти можуть повернутися. Тому гаманці рекомендують давати для звичайних гаманців non-bounceable адресу (UQ…), і саме її сучасні гаманці показують за замовчуванням.
Для розробника головне — нормалізувати адреси: порівнювати їх у «сирій» формі, а не як рядки, інакше EQ… і UQ… однієї адреси вважатимуться різними, і платіж не знайдеться. Також варто перевіряти прапорець testnet, щоб не прийняти тестову адресу в основній мережі.
Moonvex видає для оплати в TON окрему адресу на кожен платіж і самостійно зіставляє всі форми запису, тож клієнт може платити з будь-якого гаманця.