Introduction
Vanity addresses are often used for branding, better recognizability, or aesthetic purposes. A contract address on TON is a hash of its initial code and data, so a vanity address is found by brute force: a generator iterates salt values inside a special vanity contract’s initial code until the resulting address matches the desired pattern. The vanity contract is then deployed at that address and immediately replaces its own code and data with those of the target contract.Vanity Contract Address
To deploy a contract (for example, a jetton master) at a vanity address, first generate the address, then deploy through the vanity contract.Generate the Address
Clone the generator repository:- Replace
{OWNER_ADDRESS}with the wallet address from which the deployment will be made. Only the owner can deploy through the generated vanity contract. - Replace
{SUFFIX}with the desired ending of the address. Use--startinstead of (or in addition to)--endfor a prefix constraint.
addresses.jsonl — one JSON object per line containing the found address, the contract init (code and fixed prefix length), the generation config, and a timestamp. Copy the matching line; the deployment script parses it with VanityResult.from_json.
Deploy the Contract
The script below deploys a stablecoin jetton master at the generated vanity address. It builds the target contract’s initial state, wraps its code and data in aVanityDeployBody, and sends it to the vanity contract together with the vanity state_init. The vanity contract validates the owner and replaces its own code and data with the payload, becoming the actual jetton master.
Vanity Wallet Address
The mnemonic phrase and wallet ID generated by this tool are only compatible with
WalletV3R2.Check Requirements
NVIDIA GPU (driver version 555.* or later).Download Binary
Download thegpu-generator-linux binary from the latest release.
Run the Generator
To start the generator with interactive input:WalletV3R2 wallet.
Constraints Syntax
- Allowed characters:
A-Z,a-z,0-9,_,- - Start constraint (after
UQprefix, third character):start[A][P][P][L][E]orstart[*][T][O][N] - End constraint:
end[T][O][N]orend[Tt][Oo][Nn] - Combined constraints:
start[*][T][O][N] & end[T][O][N] - Multiple variants (OR):
start[*][T][O][N] & end[T][O][N] | start[D][D][D] | end[0][0][0]
Use the Generated Wallet
Import the wallet with the generated mnemonic and wallet ID. The wallet ID is passed assubwallet_id in a WalletV3Config:
See Also
Vanity Deployment Example
Full runnable vanity contract deployment script on GitHub.