validator0x
v0.2.0
Published
Multi-chain wallet address validator and formatter for Ethereum, Solana, Bitcoin, Polygon, Litecoin, Dogecoin, Cardano, Ripple, and more. Supports batch validation and zero dependencies.
Downloads
76
Maintainers
Readme
validator0x
A production-ready, zero-dependency wallet address validator and formatter for Ethereum, EVM-compatible chains, Solana, Bitcoin, Cardano, Ripple, Litecoin, Dogecoin, and more.
Features
- Multi-Chain Support: Validates addresses for Ethereum (EIP-55), EVM Chains (BSC, Avalanche, Arbitrum, Optimism, Base, Polygon), Solana (Base58), Bitcoin (Legacy, SegWit, Taproot), Litecoin, Dogecoin, Cardano, and Ripple.
- Batch Validation: Validate multiple addresses in a single call for better performance.
- Zero Dependencies: Lightweight and secure. All cryptographic primitives (Keccak-256, Base58, Bech32) are implemented internally.
- Security Focused:
- Input sanitization against control characters and length attacks.
- Burn address detection (e.g.,
0x00...00or System Programs).
- Comprehensive Formatting: Checksumming, lowercasing, and safe shortening.
- TypeScript First: Full type definitions included.
Installation
npm install validator0xUsage
import { validateAddress, validateBatch, formatAddress, detectBlockchain } from 'validator0x';
// 1. Validation
const result = validateAddress('0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', 'ethereum');
if (result.valid) {
console.log('Valid Address!', result.details);
} else {
console.error('Invalid:', result.error); // e.g. "Invalid checksum"
}
// 2. Formatting
const formatted = formatAddress('0xd8da6bf26964af9d7eed9e03e53415d37aa96045', 'ethereum', {
checksum: true,
shorten: true
});
console.log(formatted); // "0xd8dA...6045"
// 3. Auto-Detection
const chain = detectBlockchain('bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq');
console.log(chain); // "bitcoin"
// 4. Batch Validation
const batchResults = validateBatch([
'0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045',
'invalid_address'
], 'ethereum');
console.log(batchResults.map(r => r.valid)); // [true, false]Supported Chains
- Ethereum & EVM Chains: (Polygon, BSC, Avalanche, Arbitrum, Optimism, Base). 0x-prefixed, 40-char hex. Supports EIP-55.
- Solana: Base58 encoded, 32-44 chars.
- Bitcoin:
- Legacy (P2PKH): Starts with
1. - SegWit (P2WPKH): Starts with
bc1q. - Taproot (P2TR): Starts with
bc1p.
- Legacy (P2PKH): Starts with
- Litecoin: Starts with
L,M, orltc1. - Dogecoin: Starts with
D. - Cardano: Starts with
addr1orAe2. - Ripple (XRP): Starts with
r.
Development
npm install
npm test
npm run buildTest Coverage
| Category | Statements | Branches | Functions | Lines | | :--- | :--- | :--- | :--- | :--- | | All Files | 91.53% | 84.64% | 97.87% | 92.30% | | Detectors | 100% | 100% | 100% | 100% | | Formatters | 100% | 100% | 100% | 100% | | Security | 100% | 100% | 100% | 100% | | Utils | 95.08% | 83.33% | 100% | 98.03% | | Validators | 88.67% | 80.13% | 96.77% | 89.06% |
Contributing
We welcome contributions! Please follow these steps to set up your development environment:
Clone the repository:
git clone https://github.com/Samarth208P/validator0x.git cd validator0xInstall dependencies:
npm install # Note: We use dev-dependencies for testing and building. # The core package is zero-dependency.Run Tests:
npm test # Run specific test file npx jest tests/ethereum.test.tsLint & Format:
npm run lint npm run formatBuild:
npm run build # Output will be in /dist
License
MIT
