2025-09-19 00:49:45 +08:00
# Address Lookup Table Guide
This guide explains how to use Address Lookup Tables (ALT) in Sol Trade SDK to optimize transaction size and reduce fees.
## 📋 What are Address Lookup Tables?
Address Lookup Tables are a Solana feature that allows you to store frequently used addresses in a compact table format. Instead of including full 32-byte addresses in transactions, you can reference addresses by their index in the lookup table, significantly reducing transaction size and cost.
## 🚀 Core Benefits
- **Transaction Size Optimization**: Reduce transaction size by using address indices instead of full addresses
- **Cost Reduction**: Lower transaction fees due to reduced transaction size
- **Performance Improvement**: Faster transaction processing and validation
- **Network Efficiency**: Reduced bandwidth usage and block space consumption
## 🛠️ Implementation
Include lookup tables in your trade parameters:
```rust
2025-10-07 20:56:02 +08:00
let lookup_table_key = Pubkey ::from_str ( "use_your_lookup_table_key_here" ). unwrap ();
2026-06-23 04:29:14 +08:00
let alt = fetch_address_lookup_table_account ( & client . rpc , & lookup_table_key ). await ? ;
2025-09-19 00:49:45 +08:00
// Include lookup table in trade parameters
let buy_params = sol_trade_sdk ::TradeBuyParams {
dex_type : DexType ::PumpFun ,
mint : mint_pubkey ,
sol_amount : buy_sol_amount ,
slippage_basis_points : Some ( 100 ),
2025-09-21 21:56:17 +08:00
recent_blockhash : Some ( recent_blockhash ),
2025-09-19 00:49:45 +08:00
extension_params : Box ::new ( PumpFunParams ::from_trade ( & trade_info , None )),
2026-06-23 04:29:14 +08:00
address_lookup_table_accounts : vec ! [ alt ], // One ALT
2025-09-19 00:49:45 +08:00
wait_transaction_confirmed : true ,
create_wsol_ata : false ,
close_wsol_ata : false ,
create_mint_ata : true ,
open_seed_optimize : false ,
};
// Execute transaction
client . buy ( buy_params ). await ? ;
```
2026-06-23 04:29:14 +08:00
Multiple lookup tables are also supported:
```rust
let alt1 = fetch_address_lookup_table_account ( & client . rpc , & lookup_table_key_1 ). await ? ;
let alt2 = fetch_address_lookup_table_account ( & client . rpc , & lookup_table_key_2 ). await ? ;
let params = SimpleBuyParams ::new (
DexType ::PumpFun ,
TradeTokenType ::SOL ,
mint_pubkey ,
BuyAmount ::ExactInput ( buy_lamports ),
extension_params ,
recent_blockhash ,
gas_fee_strategy ,
)
. address_lookup_table_accounts ( vec! [ alt1 , alt2 ]);
```
Use the same `address_lookup_table_accounts` field for one or many ALTs: `vec![alt]` for a single ALT, `vec![alt1, alt2]` for multiple ALTs.
2025-09-19 00:49:45 +08:00
## 📊 Performance Comparison
| Aspect | Without ALT | With ALT | Improvement |
|--------|-------------|----------|-------------|
| **Transaction Size** | ~1,232 bytes | ~800 bytes | 35% reduction |
| **Address Storage** | 32 bytes per address | 1 byte per address | 97% reduction |
| **Transaction Fees** | Higher | Lower | Up to 30% savings |
| **Block Space Usage** | More | Less | Improved network efficiency |
## ⚠️ Important Notes
1. **Lookup Table Address** : Must provide a valid address lookup table address
3. **RPC Compatibility** : Ensure your RPC provider supports lookup tables
4. **Network Specific** : Lookup tables are network-specific (mainnet/devnet/testnet)
5. **Testing** : Always test on devnet before using on mainnet
## 🔗 Related Documentation
- [Trading Parameters Reference ](TRADING_PARAMETERS.md )
- [Example: Address Lookup Table ](../examples/address_lookup/ )
## 📚 External Resources
2026-06-23 04:29:14 +08:00
- [Solana Address Lookup Tables Documentation ](https://docs.solana.com/developing/lookup-tables )