| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| 7.0.0 source code.tar.gz | 2026-10-01 | 265.7 MB | |
| 7.0.0 source code.zip | 2026-10-01 | 277.3 MB | |
| README.md | 2026-10-01 | 23.6 kB | |
| Totals: 3 Items | 543.0 MB | 1 | |
Nethereum 7.0.0
Nethereum 7.0 evolves Nethereum into a full Ethereum SDK and node toolkit for .NET.
Developers can now work with Ethereum at every level: interact through JSON-RPC, embed the EVM, execute and simulate transactions and blocks, connect directly to Ethereum over DevP2P, verify Ethereum through a beacon light client, follow mainnet, and, in the future, extend Ethereum with application-specific chains that remain anchored to Ethereum through L1 or L2s.
The goal is to make more of Ethereum itself directly usable from .NET — not only the APIs exposed by a remote node, but the execution, networking, verification and chain-building components underneath them.
The EVM is rebuilt as one engine that runs in a live node, a transaction simulator and a zkVM guest, and executes every fork from Frontier through Amsterdam (EIP-8037 two-dimensional gas, EIP-8038 repricing, EIP-7928 block access lists, EIP-7708 ETH-transfer logs). On top of it ship a complete node storage-and-execution engine with a RocksDB backend and a geth-compatible freezer, native devp2p networking with snap sync, a trust-minimised beacon light client, and a shared hosting layer that runs a read-only mainnet follower, the AppChain and the DevChain from the same building blocks. The client stack gains the post-Prague / Amsterdam JSON-RPC surface (eth_config, eth_simulateV1, Engine API DTOs), the Account Abstraction stack gains passkey signers, social recovery and an in-process bundler, X402 moves to protocol v2 with Permit2, Ethereum blocks can be proven inside the Zisk zkVM, and new Nethereum.DID packages resolve did:ethr identities. The repository moves to Nethereum.slnx.
Architecture
The diagram shows how the 7.0 packages compose, from the primitives at the bottom to the node hosts and applications at the top. You can use them at any level: the client stack against a remote node, the EVM embedded without a node, or a full node composed from the pieces in between.
Applications & extensions Account Abstraction · X402 · ENS · SIWE · DID · Uniswap · Circles · MUD
Indexing · Explorer · Solidity debugger · Wallet / UI · Unity
│
Client stack JsonRpc · RPC · Web3 · Contracts · Accounts ──► any Ethereum node,
│ including the hosts below
Node hosts MainnetChain · AppChain · DevChain
│ composed by
Hosting ChainNode.Hosting (storage + mempool + peer serving + sync → one ChainNode)
│
┌────────────────────────────┼────────────────────────────┐
CoreChain DevP2P · DevP2P.Sync Consensus
execute · import · produce RLPx · discovery · beacon light client ·
follow · JSON-RPC · Engine snap sync · serving Clique PoA gate
storage: in-memory · CoreChain.RocksDB · Freezer
└────────────────────────────┬────────────────────────────┘
│
EVM EVM.Core (stateless engine) · EVM.Precompiles · EVM (simulation & debugging) · EVM.Zisk (zkVM guest)
│
Foundations Model · RLP · SSZ · Signer · Util · Merkle
- Foundations — the block, transaction and wire data model, encodings, hashing, signing and tries every other layer uses.
- EVM — one engine compiled from one source tree:
Nethereum.EVM.Coreruns stateless from a witness,Nethereum.EVMhosts it for simulation and debugging over JSON-RPC, andNethereum.EVM.Ziskruns it as a zkVM guest. - CoreChain — the node engine that executes, validates, produces and follows blocks over the
IChainStoreBundlestorage interfaces, and serveseth_*JSON-RPC and the Engine API. - DevP2P — the wire protocol and the sync engine that fill a CoreChain store from real peers.
- Consensus — what makes a followed chain trustworthy: the beacon light client for mainnet and the Clique gate for proof-of-authority chains.
- Hosting —
Nethereum.ChainNode.Hostingcomposes those pieces into oneChainNode; the mainnet follower, the AppChain and the DevChain all compose from its building blocks. - Client stack and applications — the established Web3 client, which talks to any node and which the EVM and CoreChain also use for RPC types and live-state reads, and the application packages built on it.
Each section below summarises one area; the linked note for that area lists the full API-level delta.
Foundations — Model, Signer, Util, Merkle
The model, encoding, hashing, signing and trie primitives can now describe an Ethereum block end to end, from any fork's header down to its wire bytes.
- Per-fork block header codecs from Legacy through Amsterdam (
BlockHeaderCodecSelector,AmsterdamBlockHeaderCodecfor the 23-field header) and per-type transaction decoders - EIP-4844 blob transactions (
Transaction4844,BlobEncoder,BlobGasCalculatorwith the EIP-7918 reserve-price branch) andTransaction4844Signer - EIP-7928 block access lists (
AccountChanges,BlockAccessListRLPEncoder) and the devp2p / snap / LES wire message model with EIP-2124ForkId EvmUInt256/EvmInt256/EvmAddressvalue types for allocation-free 256-bit EVM arithmetic, and a Poseidon2 hashing stack over Goldilocks and BN254- Merkle-Patricia range proofs (
PatriciaRangeProofVerifier), pluggable trie node stores, and EIP-7864 binary-trie state diffs - ECDH / ECIES and ENR signing for networking, plus
EthECKeyBuilderFromSignedAuthorisationfor EIP-7702 authority recovery
Details: Foundations
RPC & Web3 — The Post-Prague / Amsterdam JSON-RPC Surface
The client stack reaches the JSON-RPC methods that landed with Prague and Amsterdam, typed and composed like every other web3.Eth.* call.
web3.Eth.Config(eth_config, EIP-7910),web3.Eth.SimulateV1(eth_simulateV1),web3.Eth.Capabilities,web3.Eth.Blocks.GetBlockAccessList(EIP-7928) and theweb3.TxPoolservice- Engine API DTOs (
ExecutionPayloadV1–V4,PayloadAttributesV1–V4,ForkchoiceStateV1, …) checked field by field against theexecution-apisOpenRPC spec - EIP-7702 authorization lists signed by
AccountSignerTransactionManager, andAccountAbstractionAccountfor smart-account signing - EIP-7708 ETH-transfer logs via
web3.Eth.EthTransfers, and emitter-scoped event decoding (DecodeEventEmittedBy,IsLogForEventEmittedBy) so ETH movements are not mistaken for ERC-20 transfers - ENS Universal Resolver (
web3.Eth.GetEnsUniversalResolverService()) with SSRF-hardened CCIP-Read and ENSIP-21 batch gateways RpcError.Codeaccepts a string error code without throwing;TransferEtherAsyncuses the node's gas estimate
Details: RPC & Web3
EVM — One Engine for Node, Simulator and zkVM, Through Amsterdam
You can execute a block or a transaction statelessly from a witness, replay a transaction against live chain state over plain JSON-RPC, and prove a block inside the Zisk zkVM — all from one source tree. Fork rules are chosen per block from Frontier through Amsterdam.
- New
Nethereum.EVM.Core— a synchronous, AOT- and trim-safe stateless engine (BlockExecutor.Execute,TransactionExecutor,HardforkRegistry,IChainActivations,IStateReader) - New
Nethereum.EVM.Precompiles— the default managed crypto backends andDefaultMainnetHardforkRegistry; BLS12-381 (EIP-2537) and KZG (EIP-4844) plug in withWithBlsBackend/WithKzgBackend, and an unwired precompile throwsUnwiredPrecompileExceptionrather than returning a wrong answer - Amsterdam executable and test-covered: EIP-8037 state-gas reservoir, EIP-8038 repricing, EIP-7928 block access lists, the four EIP-7002/7251/8282 request predeploys, EIP-7843, EIP-7708, EIP-8246, EIP-8024 and EIP-7954; Osaka BPO forks, EIP-7951
P256VERIFYand the EIP-7918 blob reserve price Nethereum.EVMsimulation and debugging —RpcNodeDataServicelive-state replay,ProgramResultDecodercall trees and revert reasons,StateChangesExtractorbalance changes, andEVMDebuggerSessionsource-level stepping
Details: EVM (Amsterdam)
Consensus — Beacon Light Client and Clique
You can bootstrap an Ethereum light client from a weak-subjectivity checkpoint, follow the beacon chain's finalized and optimistic heads with every sync-committee signature verified, and read a trusted execution header from it.
LightClientServicewith per-period sync-committee verification, provenanced block-hash history,TrustedHeaderProviderstaleness detection andLightClientStateCodecpersistence- Fork-aware consensus SSZ containers driven by one
ConsensusForkvalue, with aChainSpecslot→fork schedule through Fulu CliqueConsensusBlockGaterefuses a block whose seal is not an authorised signer before it executes;ICliqueProposalStoreholds validator votes- Beacon REST light-client mapping and EIP-4844 blob-sidecar retrieval in
Nethereum.Beaconchain
Details: Consensus
CoreChain & Storage — The Node Engine and Freezer
Give Nethereum.CoreChain a block and it tells you whether it is valid and what state it produces; give it transactions and it seals a block; point it at a block source and it follows a chain to the tip.
BlockExecutor,BlockImporter(seventeen self-naming validity checks),BlockProducer,FollowerChainNode, incremental state roots, EIP-1186ProofServiceand reorgRewindCoordinator- Full
eth_*/net_*/web3_*JSON-RPC aligned with geth and execution-apis, including multi-blocketh_simulateV1,debug_traceTransactionand Engine API handlers Nethereum.CoreChain.RocksDB— PBSS-style path-keyed state, bounded node history serving as-of proofs, split hot/history databases, boot recovery and write-pressure valves- New
Nethereum.Freezer— an append-only ancient store in go-ethereum's on-disk format, so a gethancient/directory imports directly - New
Nethereum.CoreChain.Freezer— finality-gated promotion into the freezer and the EIP-7745 filtermaps log index servingeth_getLogsover frozen history
Details: CoreChain & Storage
DevP2P & Sync — Native Networking and Snap Sync (preview)
Nethereum can join the Ethereum wire network directly — dial and accept real peers, discover them, and sync a chain from scratch — with no external client in the loop.
Nethereum.DevP2P— RLPx transport acrosseth/68–eth/71andsnap/1, discv4, discv5 and EIP-1459 DNS discovery, dial scheduling and inbound admissionNethereum.DevP2P.Sync— theSyncNodefacade: EIP-2124 fork-ID checks on every handshake, archive backfill, proof-verified snap sync with a rolling pivot, resumable checkpoints, flat-state verification, serving and transaction relay- Snap/2 (EIP-8189) bootstrap with block-access-list catch-up, off by default (
BalHealEnabled)
Details: DevP2P & Sync
Chain Hosting — Mainnet Follower (preview) and DevChain
One composition library, Nethereum.ChainNode.Hosting, turns storage, mempool, peer serving and sync into a single ChainNode from one ChainNodeConfig; the mainnet follower, the AppChain and the DevChain all compose from it.
ChainNode.StartAsync,ChainNodeConfigFactorypresets andChainNodeMempool/ChainNodeStoragebuilding blocksNethereum.MainnetChainand thenethereum-mainnetchaindotnet tool — a read-only mainnet follower that snap-syncs, validates every block, gates on a beacon light client, and serves JSON-RPC; it refuses to start without a--beaconendpoint unless--allow-unverified-consensusis givenNethereum.DevChainreworked onto the shared hosting layer, with a JWT-authenticated Engine API endpoint,debug_setHead, mempool-style nonce admission and a--rocksdbstorage mode
Details: Chain Hosting
AppChain — Application Chains on the Shared Stack (preview)
The AppChain runs as a single nethereum-appchain dotnet tool in a sequencer, follower or Clique validator role, and now composes on the shared DevP2P stack instead of its own networking code.
Nethereum.AppChain.Sequencervalidation pipeline and a fencing-token lease for high-availability producersNethereum.AppChain.PolicyMerkle-tree allowlists with a bootstrap → L1 migration pathNethereum.AppChain.Anchoring— seven data-availability × proof-mode anchoring strategies, restart recovery and cross-chain messaging- New
Nethereum.AppChain.Server.Core(the composable host) andNethereum.Explorer.Anchoring(anchoring explorer pages)
Details: AppChain
Account Abstraction — Passkeys, Recovery and an In-Process Bundler
You can create and drive modular ERC-7579 smart accounts, sponsor gas, scope session keys by policy, recover an account through guardians, upgrade an EOA in place with EIP-7702, and run it all against Nethereum's own bundler.
- New
Nethereum.AccountAbstraction.Bundler.InProcess,Nethereum.WebAuthn(+.Blazor,.Windows) andNethereum.AccountAbstraction.WebAuthn(passkey-owned accounts via EIP-7951P256VERIFY) services.AddNethereumAccountAbstraction(...)+IAAClient.CreateAccountAsyncon-ramp, SmartSession policies, multi-guardian social recovery andCreateEip7702Account- ERC-7562 rule enforcement, RocksDB-persistent mempool and reputation, and EIP-7623 floor pre-verification gas
Details: Account Abstraction
X402 — Protocol v2 and Permit2
Nethereum.X402 moves to x402 protocol version 2, interop-verified against the coinbase/x402 reference implementation in both directions, and adds a Permit2 asset-transfer method that works with any ERC-20.
- v2 wire format (CAIP-2 networks,
PAYMENT-REQUIRED/PAYMENT-SIGNATURE/PAYMENT-RESPONSEheaders) X402HttpClientwith a fail-closedMaxAmountand aPaymentPolicyallow-list checked before anything is signedX402Middlewareserve-before-settle replay protection, pre-settle simulation and ERC-1271 smart-wallet signatures
Details: X402
ZK / Zisk — Proving Ethereum Blocks
Nethereum.EVM.Core cross-compiles to a RISC-V ELF that runs inside the Zisk zkVM, where a block witness executes and cargo-zisk turns the execution into a STARK proof.
- New
Nethereum.Zisk.Coreguest runtime bindings, plus theNethereum.Zisk.Prover.ServerandNethereum.BlockProver.Serverexecutables and thezisk/build pipeline in the repository Nethereum.PrivacyPoolsgains full 256-bit key derivation, migration-aware recovery and SHA-256 circuit-artifact integrity checks
Details: ZK / Zisk
Indexing — Amsterdam Data in the SQL Stack
- EIP-7928 block-access-list index with EF Core and in-memory backends, and a Postgres migration (
AddBlockAccessListAndAuthorizationList) that upgrades a 6.1.0 database - EIP-7708 native-transfer discrimination so a system-emitted
Transferlog is never counted as a token balance EvmReplayInternalTransactionSourcefor internal transactions on nodes withoutdebug_traceTransaction- Amsterdam header fields and block-access-list data in
Nethereum.Explorer
Details: Indexing
DID — Decentralized Identifiers
- New
Nethereum.DID— the W3C DID Core document model, a DID URL parser and Newtonsoft / System.Text.Json serialization - New
Nethereum.DID.EthrDID—EthrDidResolverresolvesdid:ethridentifiers from the ERC-1056 registry
Details: ENS, MUD & DID
Wallet, UI and Unity
The wallet and UI libraries carry forward with fork-aware transaction simulation (ChainForkResolver), native ETH-transfer display and rebuilt READMEs; the Unity and MAUI packages carry forward unchanged apart from the Nethereum.Unity.Metamask package id.
Details: Wallet & UI · Unity & MAUI
Bug Fixes
- EIP-1186 proof verification is sound.
StorageProofVerificationaccepted an empty, root-only or root-less proof as a zero value for any slot, so an RPC could make a slot read as 0. Account and storage proofs now verify throughPatriciaProofVerifier.TryVerify, the light client binds each proof to the exact address and slot requested, andeth_getProofreturns geth's proof of absence for an absent account. - Verified storage reads use the right slot.
VerifiedStateService.GetStorageAtAsync(address, BigInteger)encoded the slot little-endian and zero-trimmed, so mapping and array slots read another slot's value; it now requests the 32-byte big-endian key EIP-1186 defines. EnsureHexPrefixon a string array now writes the0xprefix back onto each element; it previously returned the array unchanged (PR [#1122]).Nethereum.Muddecodes an emptystringfield to""instead ofnull.
Package versions
Most packages ship as 7.0.0. The new networking, mainnet-follower and AppChain packages ship as 7.0.0-preview, so their interfaces may still move before they are declared stable:
Nethereum.DevP2P,Nethereum.DevP2P.SyncNethereum.MainnetChain,Nethereum.MainnetChain.ServerNethereum.AppChain,Nethereum.AppChain.Sequencer,Nethereum.AppChain.Policy,Nethereum.AppChain.Anchoring,Nethereum.AppChain.Anchoring.Postgres,Nethereum.AppChain.Server,Nethereum.AppChain.Server.Core,Nethereum.AccountAbstraction.AppChain,Nethereum.Explorer.Anchoring
A stable package can depend on a preview one (for example Nethereum.ChainNode.Hosting on Nethereum.DevP2P.Sync), so restoring it pulls in that preview package.
New packages in 7.0: Nethereum.EVM.Core, Nethereum.EVM.Precompiles, Nethereum.DevP2P, Nethereum.DevP2P.Sync, Nethereum.ChainNode.Hosting, Nethereum.MainnetChain, Nethereum.MainnetChain.Server, Nethereum.Freezer, Nethereum.CoreChain.Freezer, Nethereum.Zisk.Core, Nethereum.WebAuthn (+ .Blazor, .Windows), Nethereum.AccountAbstraction.WebAuthn, Nethereum.AccountAbstraction.Bundler.InProcess, Nethereum.AppChain.Server.Core, Nethereum.Explorer.Anchoring, Nethereum.DID, Nethereum.DID.EthrDID.
Breaking changes
- Permit2 moved out of
Nethereum.Uniswap. The Permit2 service is nowweb3.Eth.GetPermit2Service()inNethereum.Contracts.Standards.Permit2, the EIP-712 message types are inNethereum.ABI.EIP712.Permit2, andPermitSigneris inNethereum.Signer.EIP712.Permit2. The 6.1.0 helpersGetSinglePermitWithSignatureAsync/GetBatchPermitWithSignatureAsyncandSignedPermit2<T>have no replacement: read the nonce withPermit2Service.AllowanceQueryAsyncand sign withPermitSigner.SignPermitSingle/SignPermitBatch. - AppChain networking packages removed.
Nethereum.AppChain.P2P,Nethereum.AppChain.P2P.DotNetty,Nethereum.AppChain.P2P.ServerandNethereum.AppChain.Syncare gone; the AppChain now runs on the sharedNethereum.DevP2P/Nethereum.DevP2P.Syncstack. Nethereum.Unity.Metamaskpackage id. 6.1.0 published it asNethereum.Unity.Metamasky; update thePackageReference.VerifiedNodeDataServiceimplements the EVMIStateReaderinstead ofINodeDataService: results areEvmUInt256,GetTransactionCountbecameGetTransactionCountAsync, andAccountExistsAsyncwas added.- Signing defaults.
EthECKey.GetPrivateKeyAsBytes()now always returns the 32-byte scalar (a key with leading zero bytes was returned shorter in 6.1.0). Onnet8.0,net9.0andnet10.0,EthECKey.SignRecoverablenow defaults totrue, so recoverable signing and public-key recovery run on NBitcoin.Secp256k1; set it tofalseto return to BouncyCastle. - Stricter decoding. The legacy transaction decoder rejects a non-canonically encoded (leading-zero) scalar, and
SszMerkleizer.VerifyProofrequires a branch of exactlydepthelements. ITransactionLogView.BlockTimestampis a new interface member; custom implementations must add it.- JSON-RPC server behaviour (CoreChain / DevChain).
eth_subscriberefuses any subscription type other thannewHeadsandlogswith-32000. - Client DTOs.
EthGetUserOperationByHashreturns aUserOperationByHashResultwrapper, andChainDefaultFeaturesServicesRepository.GetDefaultChainFeature(chainId)returnsnullfor an unknown chain instead of assuming ether.
Build & Packaging
Nethereum.slnxreplacesNethereum.sln; the target-framework matrix is unchanged from 6.1.0.- Every published package is strong-name signed with the shared key, and no project uses
InternalsVisibleTo. Members that tests previously reached as internals are public. Nethereum.MainnetChainandNethereum.MainnetChain.Serverdepend onNethereum.Signer.Bls.Herumiat the release version instead of an unpublished 6.5.0.- The pack scripts (
src/nuget.bat,src/nuget-fast.ps1) pack the new 7.0 packages;Nethereum.EVM.Ziskand the prover-server executables are not published to NuGet.
Documentation
Package READMEs across the library were reworked against their source, and the documentation site's package-reference pages for the removed AppChain networking packages were removed.
Known limitations
- On mainnet the snap-sync flat-state reconcile runs before the node starts following and takes hours (about 4.5 hours on the test host).
- Snap/2 is not enabled on mainnet; the mainnet follower runs snap/1.
- Interop with go-ethereum's
devp2ptool, the Zisk proving path and the ERC-7562 bundler spec tests run through local harnesses rather than continuous integration.