Objective
By the end of this guide, you will:- Send a single TON transfer from your Highload Wallet v3
- Understand how
query_id,created_at, and send modes work
Prerequisites
- Completed wallet creation with funded balance and saved configuration in
.wallet.json
Step 1: Load wallet configuration
Load the wallet data and create the wallet instance:Step 2: Prepare the transfer message
Create an internal message with the transfer details:Step 3: Send the transfer
Send the transfer using thesendExternalMessage method:
Parameter explanation
query_id — Unique identifier for replay protection:
- Each
query_idcan only be processed once within the protection window HighloadQueryIdis a wrapper class that represents the compositequery_idas a sequential counter- Provides
getNext()method to increment to the next unique ID - Total range: 8,380,416 unique IDs
- See Query ID structure for details
createdAt — Message timestamp for expiration:
- Set to 30 seconds before current time:
Math.floor(Date.now() / 1000) - 30 - Compensates for blockchain time lag (lite-servers use last block time, not current time)
- See Timestamp validation for why this is necessary