dart_web3_chains
A comprehensive network registry for EVM-compatible blockchains. This package provides metadata, RPC configurations, and contract addresses for dozens of networks.
π Features
- Standardized Metadata: Access chain IDs, currency symbols, and explorer URLs.
- Multi-Chain Support: Pre-configured data for Ethereum, Polygon, BSC, Avalanche, Base, etc.
- Advanced Features Settings: Built-in flags for EIP-1559 and Blob support per network.
- Customizable: Create and register custom private or devnet configurations effortlessly.
Usage Flow
sequenceDiagram
participant D as Developer
participant R as ChainRegistry
participant C as ChainConfig
D->>R: getByChainId(1)
R->>C: lookup metadata
C-->>D: Ethereum Mainnet Config
ποΈ Architecture
graph TD
Registry[ChainRegistry] --> Categories[Network Groups]
Categories --> Mainnets[Production Chains]
Categories --> Testnets[Testing Chains]
subgraph Data [Metadata Nodes]
Chain[ChainConfig]
RPC[RpcUrl]
Contracts[Well-known Contracts]
end
Mainnets --> Data
π Technical Reference
Core Classes
| Class | Responsibility |
|---|---|
Chain |
The primary object containing all metadata for a network. |
Chains |
A static collection of production-ready chain configurations. |
Currency |
Describes native tokens (name, symbol, decimals). |
| 40: | BlockExplorer |
π‘οΈ Security Considerations
- ChainID Validation: Always verify the
chainIdreturned by the RPC matches theChainConfigto prevent replay attacks on unintended networks. - RPC Privacy: Use the
rpcUrlsprovided as a starting point, but encourage users to provide their own private RPC keys for production apps to avoid rate limiting and metadata tracking.
π» Usage
Querying Network Metadata
import 'package:dart_web3_chains/dart_web3_chains.dart';
void main() {
final chain = Chains.arbitrum;
print('Network: ${chain.name}');
print('Native Asset: ${chain.nativeCurrency.symbol}');
print('Supports EIP-1559: ${chain.features.supportsEIP1559}');
}
π¦ Installation
dependencies:
dart_web3_chains: ^0.1.0
Libraries
- web3_universal_chains
- Chain configurations for Ethereum and EVM-compatible networks.