@tetherto/wdk-wallet-evm

Note: This package is currently in beta. Please test thoroughly in development environments before using in production.
A simple and secure package to manage BIP-44 wallets for EVM-compatible blockchains. This package provides a clean API for creating, managing, and interacting with Ethereum-compatible wallets using BIP-39 seed phrases and EVM-specific derivation paths.
About WDK
This module is part of the WDK (Wallet Development Kit) project, which empowers developers to build secure, non-custodial wallets with unified blockchain access, stateless architecture, and complete user control.
For detailed documentation about the complete WDK ecosystem, visit docs.wdk.tether.io.
⬇️ Installation
To install the @tetherto/wdk-wallet-evm package, follow these instructions:
You can install it using npm:
🚀 Quick Start
Importing from @tetherto/wdk-wallet-evm
Create a Wallet Manager (seed-based)
Single Account (no manager): Private key
Single Account (no manager): Seed + path
Managing Multiple Accounts (seed-based manager)
Checking Balances
Owned Account
For accounts where you have the seed phrase and full access:
Read-Only Account
For addresses where you don't have the seed phrase:
Sending Transactions
Send native tokens and estimate fees using WalletAccountEvm. Supports EIP-1559 and auto-populates gas/fee fields where possible.
Token Transfers
Transfer ERC20 tokens and estimate fees using WalletAccountEvm. Uses standard ERC20 transfer function.
Token Approvals
Approve a spender for a specific amount (uses ERC20 approve):
Message Signing and Verification
Sign messages using WalletAccountEvm and verify signatures using WalletAccountReadOnlyEvm.
Fee Management
Retrieve current fee rates using WalletManagerEvm. Supports EIP-1559 fee model.
Memory Management
Clear sensitive data from memory using dispose methods in WalletAccountEvm and WalletManagerEvm.
🔐 Signers
Signers provide the cryptographic primitives for accounts. There are two signer implementations:
- SeedSignerEvm (root + child): Derives accounts from a BIP-39 seed using the BIP-44 Ethereum path. Can act as a root (for
WalletManagerEvm) and derive children (for WalletAccountEvm).
- PrivateKeySignerEvm (child only): Wraps a raw private key in a memory-safe buffer. Cannot derive. Use directly with
WalletAccountEvm. Not supported by WalletManagerEvm.
Examples:
Key Capabilities
- BIP-39 Seed Phrase Support: Generate and validate mnemonic seed phrases
- BIP-44 Derivation Paths: Standard Ethereum derivation (m/44'/60')
- Multi-Account Management: Derive multiple accounts from a single seed phrase
- EIP-1559 Transaction Support: Modern fee estimation and transaction sending
- ERC-20 Token Support: Query balances and transfer tokens
- Message Signing: Sign and verify messages (EIP-191 and EIP-712)
- Fee Estimation: Real-time network fee rates with normal/fast tiers
- Secure Memory Disposal: Clear private keys from memory when done
- Signer Submodule: Create your own signer from ISignerEvm, support for Seed and Private key signers
- EIP-7702 Delegation: Delegate EOAs to smart contracts, sign authorizations, and send type 4 transactions
Compatibility
- Ethereum Mainnet and testnets (Sepolia)
- Layer 2 Networks: Arbitrum, Optimism, Base
- Other EVM Chains: Polygon, Avalanche C-Chain, and any EVM-compatible chain
Documentation
Examples
| Example | Description |
|---|
| Create Wallet | Initialize a wallet manager and derive accounts from a seed phrase |
| Manage Accounts | Work with multiple accounts and custom derivation paths |
| Check Balances | Query native token and ERC-20 balances for owned accounts |
| Read-Only Account | Monitor balances for any address without a private key |
| Send Transaction | Estimate fees and send native token transactions (EIP-1559 + legacy) |
| Token Transfer | Transfer ERC-20 tokens and estimate transfer fees |
For detailed walkthroughs, see the Usage Guide.
See all runnable examples in the wdk-examples repository.
Community
Join the WDK Discord to connect with other developers.
Support
For support, please open an issue on GitHub or reach out via email.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.