What is Nethereum ?

Nethereum is the .Net integration library for Ethereum, simplifying the access and smart contract interaction with Ethereum nodes both public or permissioned like Geth, Parity or Quorum.

Nethereum is developed targeting netstandard 1.1, net451 and also as a portable library, hence it is compatible with all the operating systems (Windows, Linux, MacOS, Android and OSX) and has been tested on cloud, mobile, desktop, Xbox, hololens and windows IoT.

Upcoming releases will include functionalities such as DevP2P, Plasma and Micro-Payments.

Features

  • JSON RPC / IPC Ethereum core methods.
  • Geth management API (admin, personal, debugging, miner).
  • Parity management API.
  • Quorum integration.
  • Simplified smart contract interaction for deployment, function calling, transaction and event filtering and decoding of topics.
  • Unity 3d Unity integration.
  • ABI to .Net type encoding and decoding, including attribute based for complex object deserialization.
  • Hd Wallet
  • Transaction, RLP and message signing, verification and recovery of accounts.
  • Libraries for standard contracts Token, ENS and Uport
  • Integrated TestRPC testing to simplify TDD and BDD (Specflow) development.
  • Key storage using Web3 storage standard, compatible with Geth and Parity.
  • Simplified account life cycle for both managed by third party client (personal) or stand alone (signed transactions).
  • Low level Interception of RPC calls.
  • Code generation of smart contracts services.

Quick installation

Nethereum provides two types of packages. Standalone packages targetting Netstandard 1.1, net451 and where possible net351 to support Unity3d. There is also a Nethereum.Portable library which combines all the packages into a single portable library. As netstandard evolves and is more widely supported, the portable library might be eventually deprecated.

To install the latest version:

Windows users

To install the main packages you can either:

PM > Install-Package Nethereum.Web3

or

PM > Install-Package Nethereum.Portable

Mac/Linux users

dotnet add package Nethereum.Web3 

or

dotnet add package Nethereum.Portable

Main Libraries

Project Source Nuget_Package Description
Nethereum.Portable NuGet version Portable class library combining all the different libraries in one package
Nethereum.Web3 NuGet version Ethereum Web3 Class Library simplifying the interaction via RPC includes contract interaction, deployment, transaction, encoding / decoding and event filters
Nethereum.Unity Unity3d integration, libraries can be found on the Nethereum releases
Nethereum.Geth NuGet version Nethereum.Geth is the extended Web3 library for Geth. This includes the non-generic RPC API client methods to interact with the Go Ethereum Client (Geth) like Admin, Debug, Miner
Nethereum.Quorum NuGet version Extension to interact with Quorum, the permissioned implementation of Ethereum supporting data privacy created by JP Morgan
Nethereum.Parity NuGet version Netherum.Parity is the extended Web3 library for Parity. including the non-generic RPC API client methods to interact with Parity. (WIP)

Core Libraries

Project Source Nuget_Package Description
Nethereum.ABI NuGet version Encoding and decoding of ABI Types, functions, events of Ethereum contracts
Nethereum.EVM Ethereum Virtual Machine API
Nethereum.Hex NuGet version HexTypes for encoding and encoding String, BigInteger and different Hex helper functions
Nethereum.RPC NuGet version Core RPC Class Library to interact via RCP with an Ethereum client
Nethereum.JsonRpc.Client NuGet version Nethereum JsonRpc.Client core library to use in conjunction with either the JsonRpc.RpcClient, the JsonRpc.IpcClient or other custom Rpc provider
Nethereum.JsonRpc.RpcClient NuGet version JsonRpc Rpc Client provider using Edjcase.JsonRpc.Client
Nethereum JsonRpc IpcClient NuGet version JsonRpc IpcClient provider for Windows, Linux and Unix
Nethereum.RLP NuGet version RLP encoding and decoding
Nethereum.KeyStore NuGet version Keystore generation, encryption and decryption for Ethereum key files using the Web3 Secret Storage definition, https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition
Nethereum.Signer NuGet version Nethereum signer library to sign and verify messages, RLP and transactions using an Ethereum account private key
Nethereum.Contracts NuGet version Core library to interact via RPC with Smart contracts in Ethereum
Nethereum.IntegrationTesting NuGet version Integration testing module
Nethereum.HDWallet NuGet version Generates an HD tree of Ethereum compatible addresses from a randomly generated word seeds (using BIP32 and BIP39)

Note: IPC is supported for Windows, Unix and Linux but is only available using Nethereum.Web3 not Nethereum.Portable

Smart contract API Libraries

Project Source Nuget_Package Description
Nethereum.StandardTokenEIP20 NuGet version Nethereum.StandardTokenEIP20 Ethereum Service to interact with ERC20 compliant contracts
Nethereum.Uport NuGet version Uport registry library
Nethereum.ENS NuGet version Ethereum Name service library (original ENS) WIP to upgrade to latest ENS

Utilities

Project Source Description
Nethereum.Generator.Console
Nethereum.Console A collection of command line utilities to interact with Ethereum and account management

Training modules

Project Source Description
Nethereum.Workbooks Xamrain Workbook tutorials including executable code
Nethereum.Tutorials Tutorials to run on VS Studio

Code templates

Source Description
Keystore generator Keystore file generator
Faucet Web application template for an Ether faucet
Nethereum Flappy The source code files for the Unity3d game integrating with Ethereum

Smart contract api Libraries

Project Source Nuget_Package Description
Nethereum.StandardTokenEIP20 NuGet version Nethereum.StandardTokenEIP20 Ethereum Service to interact with ERC20 compliant contracts
Nethereum.Uport NuGet version Uport registry library
Nethereum.ENS NuGet version Ethereum Name service library (original ENS) WIP to upgrade to latest ENS