💬 Почему у кошельков ТОН разные адреса?
Адреса в сети TON представлены в нескольких форматах в зависимости от назначения и типа сети (Mainnet или Testnet). Основные причины:
- Возвращать транзакции: Bounceable и Non-Bounceable кошельки обозначают, можно ли вернуть транзакцию («bounce»), если целевой кошелёк не инициализирован. Примечание - стоимость “газа” не возвращается.
- Различать сети: Для различия Mainnet (основная сеть) от Testnet (тестовая сеть).
- Raw и Friendly форматы:
- Raw: Технический, низкоуровневый формат адреса (например,
0:fe
или-1:fe
). - Friendly: Более удобный для пользователя формат, часто закодированный в Base64 с дополнительными флагами безопасности.
- Raw: Технический, низкоуровневый формат адреса (например,
Эти различия помогают юзерам и приложениям корректно обрабатывать адреса и предотвращают ошибки, такие как отправка средств на тестовый кошелёк или неинициализированный bounceable-адрес.
💎 Типы кошельков ТОН
Bounceable и Non-Bounceable
- Bounceable (с Bounce-флагом):
- Формат по умолчанию.
- Позволяет средствам возвращаться обратно, если получающий кошелёк не инициализирован.
- Чаще всего используется для пользовательских кошельков.
- Non-Bounceable (без Bounce-флага):
- Предотвращает возврат транзакций обратно.
- Обычно используется для смарт-контрактов или ситуаций, где транзакция обязана состояться (как правило, небольшие платежи для инициализации).
Пример:
- Bounceable (дружественный формат):
EQ...
- Non-Bounceable:
UQ...
Mainnet и Testnet
- Mainnet: Используется для реальных транзакций с настоящими Toncoin.
- Bounceable начинается с
EQ...
- Non-Bounceable начинается с
UQ...
- Bounceable начинается с
- Testnet: Используется для тестирования транзакций с тестовыми Toncoin.
- Bounceable начинается с
kQ...
- Non-Bounceable начинается с
0Q...
- Bounceable начинается с
Это разделение гарантирует, что пользователи случайно не отправят реальные средства на тестовые кошельки или наоборот.
Raw формат
- Техническое шестнадцатеричное представление адреса.
- Структура:
workchain:hash
.
Пример:
0:fe2345a67b...
(workchain 0, Mainnet)-1:abcd1234...
(workchain -1, используется для смарт-контрактов).
Friendly формат
- Адрес в формате Base64, разработанный для удобства восприятия пользователем.
- Включает флаги для bounceable и Testnet-определения.
Пример:
- Bounceable (Mainnet):
EQD...
- Non-Bounceable (Mainnet):
UQD...
- Bounceable (Testnet):
kQD...
Тип | Назначение | Формат | Префикс |
---|---|---|---|
Mainnet Bounceable | Реальные кошельки, возврат средств | Дружественный (Base64) | EQ... |
Mainnet Non-Bounce | Реальные кошельки, без возврата | Дружественный (Base64) | UQ... |
Testnet Bounceable | Тестовые кошельки, возврат средств | Дружественный (Base64) | kQ... |
Testnet Non-Bounce | Тестовые кошельки, без возврата | Дружественный (Base64) | 0Q... |
Raw формат | Низкоуровневое представление | Шестнадцатеричный формат | 0: или -1: |
👀 Почему существуют Bounceable и Non-Bounceable адреса?
- Bounceable адреса: Безопасны для кошельков, которые ещё не инициализированы. Средства могут “вернуться” обратно, если кошелёк получателя не существует.
- Non-Bounceable адреса: Используются для смарт-контрактов, где транзакция должна состояться, даже если адрес не инициализирован.
🧠 Как это помогает?
- Разные префиксы (
EQ
,UQ
,kQ
,0Q
) чётко указывают тип сети и возврат средств. - Non-Bounceable адреса обеспечивают выполнение смарт-контрактов без сбоев.
- Префиксы Testnet, такие как
kQ
, предотвращают случайное использование тестовых средств в основной сети.
В целом, гибкость адресов у ТОН Кошельков нужна, чтобы повысить удобство использования и безопасность. Основные различия:
- Mainnet vs Testnet - для изоляции сетей.
- Bounceable vs Non-Bounceable для работы с неинициализированными кошельками.
- Raw vs Friendly для технического и пользовательского представления.