Getting Started

Comparison with ethers and viem

A functional yes/no matrix. The columns are what each library can do out of the box — not how it does it, not how nicely, not how ergonomically. Just the capabilities.

“Yes” means the feature ships in the library itself, with first-party support, and is usable without reaching for a third-party package. “Partial” means the building blocks exist but the feature is not exposed as a single ready-to-use API. “No” means you would need to write it yourself or pull in an external library.

Chain access

CapabilityEthernautaethersviem
Read chain state (eth_call, balances, blocks, logs)YesYesYes
Subscribe to logs / blocks over WebSocketYesYesYes
Send pre-signed raw transactionsYesYesYes
Batch JSON-RPC requestsYesYesYes
500+ pre-defined EIP-155 chain entriesYesNoYes
Multicall aggregationYesNoYes

Signing

CapabilityEthernautaethersviem
Sign transactions via an injected walletYesYesYes
Sign EIP-712 typed dataYesYesYes
Sign EIP-191 personal messagesYesYesYes
Sign-then-broadcast as separate operationsYesYesYes
In-process HD wallet / mnemonic-backed signerNoYesYes
Bundled browser wallet extension (MV3)YesNoNo

ABI

CapabilityEthernautaethersviem
ABI encode / decodeYesYesYes
Decode revert reasons / custom errorsYesYesYes
Decode event logsYesYesYes
Generate typed bindings from ABI (CLI)YesNoYes
Strict TypeScript inference from inline ABIPartialNoYes

Wallet-protocol standards

CapabilityEthernautaethersviem
EIP-1102 — eth_requestAccountsYesYesYes
EIP-1193 — provider consumptionYesYesYes
EIP-2255 — wallet_getPermissions / requestPermissionsYesNoYes
EIP-3085 — wallet_addEthereumChainYesNoYes
EIP-3326 — wallet_switchEthereumChainYesNoYes
EIP-4361 — Sign-In with EthereumYesNoYes
EIP-5792 — wallet_sendCalls (batched calls)YesNoYes
EIP-6963 — multi-wallet discoveryYesNoYes
EIP-7702 — set-code (delegated) transactionsYesPartialYes

Signature verification

CapabilityEthernautaethersviem
Verify EIP-191 personal-message signaturesYesYesYes
Verify EIP-712 typed-data signaturesYesYesYes
Verify EIP-1271 contract signaturesYesPartialYes
Verify ERC-6492 signatures from predeploy / undeployed accountsYesNoYes
Single universal verify_signature across 191 / 712 / 1271 / 6492YesNoYes

ENS

CapabilityEthernautaethersviem
Forward resolution (name → address)YesYesYes
Reverse resolution (address → name)YesYesYes
ENSIP-15 name normalizationYesYesYes
ENSIP-10 wildcard / off-chain resolversYesYesYes
Text-record / content-hash readsYesYesYes

Tokens

CapabilityEthernautaethersviem
ERC-20 read / write helpersYesPartialYes
ERC-721 read / write helpersYesPartialYes
ERC-1155 read / write helpersYesPartialYes
Permit (EIP-2612) typed-data signaturesYesPartialYes
Pre-generated selector registryYesNoNo

Transactions and lifecycle

CapabilityEthernautaethersviem
Wait for receiptYesYesYes
Track pending → mined → confirmed → reorged statesYesNoPartial
Persistable transaction store across reloadsYesNoNo
Gas estimationYesYesYes
EIP-1559 fee field handlingYesYesYes
EIP-2930 access listsYesYesYes
EIP-2718 typed-transaction encodingYesYesYes
EIP-4844 blob transactionsPartialYesYes

Testing

CapabilityEthernautaethersviem
First-party test client with anvil / hardhat actionsNoNoYes
Mockable transport via plain functionYesPartialYes
Time / block manipulation helpers (mine, setNextBlockTimestamp)NoNoYes
Account impersonation helpersNoNoYes
Snapshot / revert helpersNoNoYes
Local-node fork helpersNoNoYes

Framework integrations

CapabilityEthernautaethersviem
First-party React hooksYesNoPartial
Server-side / SSR-safeYesYesYes
Tree-shakeable per-method importsYesPartialYes

Validation and runtime safety

CapabilityEthernautaethersviem
Schema-validated wire boundaries at runtimeYesNoPartial
Throwing parse at the boundary (no silent coercion)YesNoNo
Types derived from runtime schemasYesNoNo

Operational stance

PropertyEthernautaethersviem
No hosted-service dependency for any featureYesYesYes
No mandatory paid RPC providerYesYesYes
Bundled wallet extension shipped with the libraryYesNoNo

How to read this

The matrix is deliberately functional. Two libraries marked “Yes” on the same row can have very different ergonomics, type safety, bundle sizes, and architectural commitments — none of which this page tries to capture. For the architectural commitments specific to Ethernauta — two consumer paths, schemas as types, folder-shaped standards, EIP-1193 as a transport — see the Concepts section.