Objective
By the end of this guide, you will have:- A 24-word mnemonic phrase (seed phrase) for your wallet
- A calculated wallet address (but not yet deployed on-chain)
- Configuration parameters:
subwalletIdandtimeout
Prerequisites
- Node.js 18+ or TypeScript environment
@ton/ton,@ton/core,@ton/cryptopackages installed- Highload Wallet v3 wrapper and compiled contract code
Step 1: Set up dependencies
Install required packages:Step 2: Choose configuration parameters
Highload Wallet v3 requires two configuration parameters at creation time:timeout
Type: uint22 (0 to 4,194,303 seconds)Purpose: Validity window for external messages and cleanup cycle duration The
timeout determines:
- How long a signed external message remains valid:
created_atmust be within[now - timeout, now] - When old processed messages rotate to
old_queries: everytimeoutseconds - When
old_queriesis cleared: after2 × timeout
| Range | Use case |
|---|---|
| Short (60–300s) | Fast certainty if message expires; lower storage costs; requires tight synchronization |
| Medium (1–6 hours) | Balanced; suitable for most production use |
| Long (24+ hours) | High tolerance for blockchain congestion; higher storage costs; slower certainty on expiration |
subwalletId
Type: uint32 (0 to 4,294,967,295)Purpose: Isolate multiple wallets derived from the same keypair A single mnemonic can generate multiple independent wallet addresses by varying
subwalletId. Each wallet has its own balance, state, and transaction history.
Why this matters:
If you use the same subwalletId across different wallet types (e.g., Highload v3 and standard wallet v5), they might share the same address, causing conflicts. Using 0x10ad ensures isolation from standard wallets.
See Storage structure in the specification for details.
Step 3: Generate or load a mnemonic
A mnemonic is your wallet’s master secret. It derives the private key used to sign all transactions.Generate a new mnemonic
Load an existing mnemonic
Step 4: Derive the keypair
Convert the mnemonic to an Ed25519 keypair:Step 5: Create the wallet instance
Create a Highload Wallet v3 contract instance with your chosen parameters:Step 6: Get the wallet address
Calculate the wallet’s address:CODE, publicKey, subwalletId, and timeout. The same parameters always produce the same address.
Account status: nonexist
The calculated address exists only as a deterministic value. No account exists on the blockchain yet — no balance, no code, no data.
Step 7: Fund the wallet
Required before deployment: Send TON to your wallet address (from Step 6) to prepare it for deployment. External messages (which deploy the wallet) require gas to execute. By funding the address, you transition the account fromnonexist to uninit status and provide the balance needed for deployment. See Account status for details on how account states work.
Send TON using a faucet (testnet) or from another wallet (mainnet). After funding, the account transitions to uninit status — it has a balance and can accept external messages, but no code or data yet.