Library / SDK
Nethereum/Nethereum avatar
Nethereum/Nethereum

A signing key file sits in the repository root

Ethereum .Net cross platform integration library

2,258 stars746 forksC#MIT

At a glance

What is it?
Nethereum is a .NET integration platform for Ethereum and EVM-compatible chains, spread across more than 130 packages. Its root directory carries four solution files, three release-notes documents, a strong-name key file and a temporary inspector output file.
Who is it for?
Nethereum suits a .NET team that wants typed contract services generated from an ABI, signing across hardware wallets and cloud key vaults, and a local chain with an EVM simulator instead of a mainnet endpoint in tests. It does not suit a team wanting one small library, or a mixed-language group without a .NET component.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 16 days ago.
What is it written in?
Mainly C#, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The root directory carries the project's rough edges

Most repositories of this size have a clean root, and this one does not. Alongside the usual .github, .editorconfig and .gitignore sit four solution files: Nethereum.slnx, Nethereum.Fx.sln, Nethereum.Generators.sln and Nethereum.Portable.sln, which means the library is built four ways. Then there are three release-notes documents named per version, RELEASE_NOTES_5.8.0.md, RELEASE_NOTES_6.0.0.md and RELEASE_NOTES_6.1.0.md, a README_OLD.md and a README_ORG_PROFILE.md alongside the current README, and NethereumKey.snk with NethereumPublic.pk and a getPublicKey.bat to go with it. The .snk file is a strong-name key, which is the kind of artifact that is normally kept out of a public repository. tmp_inspector_output.txt is also checked in. None of this affects whether the library works, and all of it tells you that the housekeeping is manual rather than enforced.

One package is what most projects actually install

The quick start is one command and one class:

csharp
var web3 = new Web3("https://mainnet.infura.io/v3/YOUR_API_KEY");
var balance = await web3.Eth.GetBalance.SendRequestAsync("0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae");

That is Nethereum.Web3 added with dotnet add package, and the entry point is a Web3 instance wrapping an RPC endpoint. Sending value constructs a Web3 around an Account built from a private key, then calls a transfer service and waits for the receipt. Interacting with a contract uses a code-generated typed service, obtained through GetContractTransactionHandler with a generic type argument, which is the pattern that removes hand-written ABI encoding from the calling code. The three examples together are the shape of the library: an endpoint, an optional signer, and typed services either built in or generated. Note the endpoint in the sample is a mainnet URL with a placeholder key, so copying it unchanged points at production with an invalid credential.

The guide tables are the real documentation index

The README describes itself as a stack rather than a list, and then hands the reader a set of tables that function as an index. Each row is an intent in the reader's words on the left and a documentation link on the right, grouped into categories: Core Foundation, Signing and Key Management, Smart Contracts, EVM Simulator, and DevChain and Local Development. The phrasing is worth reading because it describes the library's design. Balances for ETH, ERC-20, ERC-721 and ERC-1155 come through built-in typed services with no ABI needed, sending ETH handles gas, nonce and EIP-1559 fees automatically, and deploying to deterministic addresses is covered by a CREATE2 guide rather than left to the contract ecosystem. So the project is arguing that most of what a dApp developer writes is already written, and the tables are the proof by example. The stated package count is 130 or more, organized into focused libraries, which is also the argument for why this is a platform rather than a library.

Signing spans hardware wallets, cloud vaults and HD derivation

The signing table is the widest one and it maps out the trust options rather than just the API. Key generation and account creation sit beside message signing and verification, EIP-712 typed structured data, HD wallets with BIP32 and BIP39 mnemonics, hardware wallets with Ledger and Trezor, and cloud key management with AWS KMS or Azure Key Vault. That spread is the interesting part, because each of those changes where the private key exists and therefore what a compromise means. A mnemonic in an environment variable, a key inside a hardware device and a key held by a cloud key service are three different security postures exposed through one signing surface, which is convenient and also means the library does not choose for you. The quick start example sits at the least careful end of that range, constructing an Account directly from a string in the source, so it is a sample and not a recommendation.

An EVM simulator and a local chain remove the mainnet dependency

Two features exist that are unusual for a client library, and they are what separate Nethereum from a thin RPC wrapper. The EVM simulator offers transaction simulation to preview state changes, step-by-step debugging of EVM execution including opcodes, stack and storage, call tree decoding for contract-to-contract calls, ERC-20 transfer and approval simulation, and raw bytecode execution with disassembly. That is a debugging toolchain inside the SDK. DevChain is the other half: a local development chain that needs no external node, plus forking a live network. Together they mean a test suite can execute against a chain you control and an engineer can step through a revert without a debugger attached to a public endpoint. Both are sold with the same intent as the rest of the README, which is to keep the development loop inside your own process and your own machine.

Beyond the protocol: explorer, game integration and orchestration

The introduction paragraph lists what the platform reaches beyond the core client, and the list is where you can tell where the boundaries are. Alongside smart contract interaction, transaction signing, the EVM simulator and the in-process node, it names blockchain data indexing, an ERC-4337 account abstraction bundler, a Blazor blockchain explorer, MUD framework support, multi-platform wallet user interfaces, Unity game integration and .NET Aspire orchestration. That is a large surface, and each item carries a different kind of maintenance, from a bundler that follows a standard to a Unity integration that follows an engine version. The target list is equally broad: netstandard 2.0 through .NET 10, .NET Framework 4.5.1 and later, and Unity, running on Windows, Linux, macOS, Android, iOS, WebAssembly and game consoles. The broad compatibility is the point of the platform, and it is also what makes a single version number a poor proxy for what you are pulling in.

Where Nethereum is the wrong choice

Four cases. The first is a project wanting one library rather than a platform. Installing Nethereum.Web3 gets you a client, but the 130-package organization means the question of which assemblies end up in your output is part of the evaluation, and a team that wants an audit surface measured in kilobytes will not find it here. The second is a team without a .NET background. Everything here assumes C#, and the typed contract services are generated C# from a Solidity ABI, so a mixed-language team either splits the contract layer or keeps contracts and clients in the same ecosystem. The third is anyone who treats a private key in configuration as acceptable. The quick start puts one in a string, and while hardware wallets and cloud key vaults are supported, the ease of the wrong path is a design property rather than an accident. The fourth is a project that only needs to read from a chain and nothing more. For a balance query with no signing, a raw HTTP client against a JSON-RPC endpoint is a fraction of the dependency, and the platform's value only appears once you are signing, generating services or simulating execution.

Editorial conclusion

Nethereum suits a .NET team that wants typed contract services generated from an ABI, signing across hardware wallets and cloud key vaults, and a local chain with an EVM simulator instead of a mainnet endpoint in tests. It does not suit a team wanting one small library, or a mixed-language group without a .NET component. Before adopting, add Nethereum.Web3, read the guide table for the capability you actually need, and look at the four solution files to understand which build you are pulling into your project.

Frequently asked questions

How do I start using Nethereum?

Add the package with dotnet add package Nethereum.Web3, then construct a Web3 around an RPC endpoint. An Account built from a private key is passed to the constructor when you need to sign, and contract calls go through typed services obtained with GetContractTransactionHandler.

How many packages does Nethereum contain?

More than 130, organized into focused libraries, covering smart contract interaction, signing, an EVM simulator, a local DevChain, indexing, an ERC-4337 bundler, a Blazor explorer and Unity integration.

Does Nethereum support hardware wallets and cloud key vaults?

Yes. The signing guides cover Ledger and Trezor hardware wallets and AWS KMS or Azure Key Vault, alongside HD wallets with BIP32 and BIP39 mnemonics and EIP-712 typed data.

Can I test against a local chain without a node?

DevChain provides a local development chain with no external node required, and forking a live network is a separate guide. There is also an EVM simulator for previewing state changes and stepping through execution.

Which runtimes does Nethereum target?

netstandard 2.0 through .NET 10, .NET Framework 4.5.1 and later, and Unity, across Windows, Linux, macOS, Android, iOS, WebAssembly and game consoles.

Official sources

  1. License: MIT
  2. Nethereum/Nethereum on GitHub
  3. Project website
  4. README
  5. Releases