Address Validation
Validate and format Stacks addresses and principals.
Overview
Stacks addresses follow specific formats that differ between mainnet and testnet. Proper validation ensures your application handles addresses correctly, preventing loss of funds and improving user experience. This guide covers address validation, formatting, and conversion utilities.
Basic address validation
Validate Stacks addresses:
import {
validateStacksAddress,
validateContractName
} from '@stacks/transactions';
// Validate standard addresses
const isValidMainnet = validateStacksAddress('SP2J6Y09JMFWWZCT4VJX0BA5W7A9HZP5EX96Y6VZY');
console.log('Valid mainnet:', isValidMainnet); // true
const isValidTestnet = validateStacksAddress('ST2JHG361ZXG51QTKY2NQCVBPPRRE2KZB1HR05NNC');
console.log('Valid testnet:', isValidTestnet); // true
const isInvalid = validateStacksAddress('invalid-address');
console.log('Valid:', isInvalid); // false
// Validate contract names
const validContract = validateContractName('my-contract');
console.log('Valid contract name:', validContract); // true
const invalidContract = validateContractName('My Contract!');
console.log('Valid contract name:', invalidContract); // falseAddress types and detection
Identify address types and networks:
Address generation
Generate addresses from keys:
Contract address handling
Work with contract principals:
Address conversion utilities
Convert between formats and networks:
Advanced validation patterns
Comprehensive address validator
Create a robust validation system:
Address formatting
Format addresses for display:
Input validation hooks
React hooks for address inputs:
Security considerations
Implement secure address handling:
Testing utilities
Test address validation:
Best practices
Always validate user input: Never trust addresses from users
Check network compatibility: Ensure addresses match your network
Handle edge cases: Contract addresses, multisig, etc.
Cache validation results: Avoid redundant validation
Provide clear error messages: Help users fix invalid inputs
Common mistakes
Not checking network type:
Assuming address format:
Last updated
Was this helpful?
