Создание Красивого Адреса
Введение
Это руководство объясняет, как создать красивые (vanity) адреса в блокчейне TON — контракты или кошельки с заданным шаблоном (например, определёнными начальными или конечными символами), которые делают адрес визуально узнаваемым. Такие адреса часто используются для брендинга, лучшей читаемости или просто эстетики.
Красивый адрес контракта
Чтобы создать красивый адрес контракта (например, для Jetton Master-контракта), выполните следующие шаги.
Клонируйте репозиторий
Установите зависимости
Запустите генератор
- Замените
{suffix}
на желаемое окончание для генерируемого адреса. - Замените
{owner_address}
на адрес кошелька, с которого будет выполняться развертывание.
Пример:
python src/generator/run.py --end NESS -w -0 --case-sensitive UQCZq3_Vd21-4y4m7Wc-ej9NFOhh_qvdfAkAYAOHoQ__Ness
Если совпадение будет найдено, вы увидите сообщение вроде:
Found: EQC7PA9iWnUVWv001Drj3vTu-pmAkTc30OarHy5iDJ1uNESS salt: 7c9398f0999a96fe5480b5d573817255d53377a000be18d0fb47d090a5606dfe
Развёртывание контракта
Скопируйте значение salt
и вставьте его в константу SALT
в скрипте развертывания:
from tonutils.client import ToncenterV3Client
from tonutils.jetton import JettonMasterStandard
from tonutils.jetton.content import JettonOnchainContent
from tonutils.vanity import Vanity
from tonutils.wallet import WalletV4R2
# Set to True for test network, False for main network
IS_TESTNET = True
# Mnemonic phrase
MNEMONIC = "word1 word2 word3 ..."
# The salt for the vanity address
SALT = ""
async def main() -> None:
client = ToncenterV3Client(is_testnet=IS_TESTNET, rps=1, max_retries=1)
wallet, _, _, _ = WalletV4R2.from_mnemonic(client, MNEMONIC)
jetton_master = JettonMasterStandard(
content=JettonOnchainContent(
name="Ness Jetton",
symbol="NESS",
description="Probably nothing",
decimals=9,
image="https://ton.org/download/ton_symbol.png",
),
admin_address=wallet.address,
)
vanity = Vanity(
owner_address=wallet.address,
salt=SALT,
)
body = vanity.build_deploy_body(jetton_master)
tx_hash = await wallet.transfer(
destination=vanity.address,
amount=0.05,
body=body,
state_init=vanity.state_init,
)
print(f"Successfully deployed contract at address: {vanity.address.to_str()}")
print(f"Transaction hash: {tx_hash}")
if __name__ == "__main__":
import asyncio
asyncio.run(main())
Красивый адрес кошелька
Note
Сгенерированные с помощью данного инструмента мнемоническая фраза и ID кошелька подходят только для WalletV3R2
.
Чтобы создать красивый адрес кошелька с использованием ускорения на GPU, выполните следующие шаги.
Проверьте требования
Требуется видеокарта NVIDIA с установленным драйвером версии 555.* или выше.
Скачайте бинарник
Скачайте исполняемый файл gpu-generator-linux
с последнего релиза.
Запуск генератора
Чтобы запустить генератор в интерактивном режиме:
Чтобы запустить генерацию с заранее заданными условиями напрямую из командной строки:
Следуйте инструкциям на экране, чтобы отслеживать прогресс и просматривать результаты.
После успешного совпадения инструмент выведет мнемоническую фразу и ID кошелька для использования с кошельком типа WalletV3R2
.
Синтаксис ограничений
-
Допустимые символы:
A-Z
,a-z
,0-9
,_
,-
-
Ограничение по началу (после префикса
UQ
, третий символ):Пример →
start[A][P][P][L][E]
илиstart[*][T][O][N]
-
Ограничение по окончанию:
Пример →
end[T][O][N]
илиend[Tt][Oo][Nn]
-
Комбинированные ограничения:
Пример →
start[*][T][O][N] & end[T][O][N]
-
Несколько вариантов (ИЛИ):
Пример →
start[*][T][O][N] & end[T][O][N] | start[D][D][D] | end[0][0][0]
Ориентировочная производительность
Hardware | 5 chars | 6 chars | 7 chars | 8 chars |
---|---|---|---|---|
Intel i5-8350U | 4 min | 4 h 40 m | 12.5 days | > 2 years |
AMD Ryzen 5 3600 | 26 sec | 30 min | 31.5 h | 84 days |
NVIDIA GTX 1650 SUPER | 2 sec | 2 min | 2 h | 5.5 days |
NVIDIA RTX 4090 | <1 sec | 13 sec | 13.5 min | 14.5 h |
Использование сгенерированного кошелька
После получения мнемонической фразы и ID кошелька используйте следующий код:
from tonutils.client import ToncenterV3Client
from tonutils.wallet import WalletV3R2
# Set to True for test network, False for main network
IS_TESTNET = True
# Mnemonic phrase
MNEMONIC = "word1 word2 word3 ..."
# Wallet ID
WALLET_ID = 0
def main() -> None:
client = ToncenterV3Client(is_testnet=IS_TESTNET, rps=1, max_retries=1)
wallet, public_key, private_key, mnemonic = WalletV3R2.from_mnemonic(client, MNEMONIC, WALLET_ID)
print(f"Address: {wallet.address.to_str()}")
if __name__ == "__main__":
main()
Заключение
Красивые (vanity) адреса — это визуальная особенность, позволяющая выделить ваш кошелёк или контракт в сети TON. Хотя они не дают функциональных преимуществ, такие адреса могут быть полезны для брендинга, маркетинга или личной эстетики.