JavaScript Runtime Dependencies
Cryptography (@noble/@scure ecosystem)
| Package | Used In | Purpose |
|---|---|---|
@noble/ciphers | ChaCha20Poly1305, Keystore | AEAD encryption, AES-CTR |
@scure/bip32 | HDWallet | Hierarchical deterministic key derivation |
@scure/bip39 | Bip39 | Mnemonic generation, validation, seed derivation |
@noble ecosystem is the gold standard for JavaScript cryptography. These libraries are:
- Audited by multiple security firms (Cure53, Trail of Bits)
- Constant-time implementations that resist timing attacks
- Actively maintained with rapid security response
- Used by major wallets and infrastructure projects
ENS Support
| Package | Used In | Purpose |
|---|---|---|
@adraffy/ens-normalize | Ens | ENSIP-15 name normalization |
ABI Types
| Package | Used In | Purpose |
|---|---|---|
abitype | Abi | Type-level ABI inference |
- Inferring function argument/return types from ABI
- Type-safe contract interactions without runtime overhead
- Compatibility with the broader Ethereum TypeScript ecosystem
Ethereum Utilities
| Package | Used In | Purpose |
|---|---|---|
ox | Rlp, Base64, Siwe, EventLog, EIP712 | Core Ethereum utilities |
Chain Metadata
| Package | Used In | Purpose |
|---|---|---|
@tevm/chains | Chain | Chain definitions, RPC URLs, explorers |
ABI Detection
| Package | Used In | Purpose |
|---|---|---|
@shazow/whatsabi | Bytecode analysis | ABI inference from bytecode |
Optional Integration
| Package | Used In | Purpose |
|---|---|---|
effect | */effect exports | Effect.ts Schema APIs |
/effect subpath exports. Does not affect bundle size for users who don’t use Effect.
Hardware Wallets (lazy-loaded)
| Package | Used In | Purpose |
|---|---|---|
@ledgerhq/hw-transport-webusb | LedgerWallet | WebUSB transport to Ledger |
@ledgerhq/hw-app-eth | LedgerWallet | Ethereum app communication |
@trezor/connect-web | TrezorWallet | Trezor device communication |
Native Dependencies (Zig/WASM builds)
For native and WASM builds, Voltaire uses battle-tested C and Rust libraries compiled into static binaries.Rust (compiled into libcrypto_wrappers.a)
| Package | Used For | Purpose |
|---|---|---|
ark-bn254 | BN254 | BN254 curve operations |
ark-bls12-381 | BLS12-381 | BLS12-381 curve operations |
ark-ec, ark-ff | Both | Elliptic curve and finite field abstractions |
keccak-asm | Keccak256 (native) | Assembly-optimized Keccak |
tiny-keccak | Keccak256 (WASM) | Pure Rust Keccak for WASM |
C Libraries
| Library | Used For | Purpose |
|---|---|---|
libwally-core | HDWallet, BIP39 | Wallet primitives |
c-kzg-4844 | KZG | Polynomial commitments (EIP-4844) |
- libwally-core is from Blockstream, used in production Bitcoin/Liquid wallets
- c-kzg-4844 is the official Ethereum Foundation implementation for blob transactions
What Ships to End Users
| Category | Dependencies | Bundle Impact |
|---|---|---|
| Core crypto | @noble/ciphers, @scure/bip32, @scure/bip39 | Tree-shakeable, only pay for what you use |
| ENS | @adraffy/ens-normalize | Only included if ENS features used |
| Types | abitype | Types only, zero runtime cost |
| Utilities | ox | Shared with viem/ethers users |
| Effect | effect | Optional, only if /effect imports used |
| Hardware | @ledgerhq/, @trezor/ | Lazy-loaded, zero cost if unused |
| Native | Compiled into .wasm/.so/.dylib | Single binary, no runtime deps |
Dependency Philosophy
We evaluate dependencies on these criteria:- Security: Is it audited? Who uses it in production? How quickly are vulnerabilities addressed?
- Maintenance: Is it actively maintained? What’s the bus factor?
- Bundle impact: Is it tree-shakeable? Can we lazy-load it?
- Specialization: Does the author have domain expertise users benefit from?
- Ecosystem alignment: Does using it benefit users who also use related libraries?
- Unaudited reimplementations of security-critical code
- Slower security patches when vulnerabilities are discovered
- Subtle bugs from underspecified edge cases

