Giter Site home page Giter Site logo

nethereum / nethereum Goto Github PK

View Code? Open in Web Editor NEW
2.1K 117.0 692.0 755.17 MB

Ethereum .Net cross platform integration library

Home Page: http://nethereum.com

License: MIT License

C# 72.00% HTML 0.19% JavaScript 25.18% CSS 0.04% Batchfile 0.34% Shell 0.02% Solidity 0.66% TypeScript 1.58%
ethereum nethereum rpc abi rlp signing blockchain ethereum-client cross-platform quorum

nethereum's Introduction

Nethereum

Documentation Status NuGet version

Technical support, chat and collaboration at Discord: https://discord.gg/u3Ej2BReNn

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, netstandard 2.0, netcore 2.1, netcore 3.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.

Nethereum Playground. Try Nethereum now in your browser.

Go to http://playground.nethereum.com to browse and execute all the different samples on how to use Nethereum directly in your browser. The same version is hosted in IPFS at http://playground.nethereum.eth.link/ or the same https://gateway.pinata.cloud/ipfs/QmPgWmX3HsxCBCDVv8adEhLzeJd2VstcyGh1T9ipKrvU4Y/

Nethereum Playground

Do you need support, want to have a chat, or want to help?

Please join the Discord server using this link: https://discord.gg/u3Ej2BReNn We should be able to answer there any simple queries, general comments or requests, everyone is welcome. If you want to help or have any ideas for a pull request just come and chat.

Documentation

The documentation and guides can be found at Read the docs.

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 targeting 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

Simple Code generation of Contract definitions

If you are working with smart contracts, you can quickly code generate contract definitions using the vscode solidity extension (please check the documentation for other options)

Code generation of Contract Definitions

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 in 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 Nethereum.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 decoding 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 using Http
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 Integration testing module
Nethereum.HDWallet NuGet version Generates an HD tree of Ethereum compatible addresses from a randomly generated seed phrase (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
Testchains Pre-configured devchains for fast response (PoA)
DappHybrid A cross-platform hybrid hosting mechanism for web based decentralised applications

Training modules

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

Code samples

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
Nethereum Game Sample Sample game demonstrating how to integrate Nethereum with UrhoSharp's SamplyGame to build a cross-platform game interacting with Ethereum
Nethereum UI wallet sample Cross platform wallet example using Nethereum, Xamarin.Forms and MvvmCross, targeting: Android, iOS, Windows Mobile, Desktop (windows 10 uwp), IoT with the Raspberry PI and Xbox.
Nethereum Windows wallet sample Windows forms wallet sample providing the core functionality for Loading accounts from different mediums, Ether transfer, Standard token interaction. This is going to be the basis for the future cross-platform wallet / dapp
Nethereum Windows wallet sample Windows forms wallet sample providing the core functionality for Loading accounts from different mediums, Ether transfer, Standard token interaction. This is going to be the basis for the future cross-platform wallet / dapp
Blazor/Blockchain Explorer Wasm blockchain explorer based on Blazor and ReactiveUI

Video guides

There are a few video guides, which might be helpful to get started. NOTE: These videos are for version 1.0, so some areas have changed.

Please use the Nethereum playground for the latest samples.

Introductions

These are two videos that can take you through all the initial steps from creating a contract to deployment, one in the classic windows, visual studio environment and another in a cross platform mac and visual studio code.

Windows, Visual Studio

This video takes you through the steps of creating a smart contract, compiling it, starting a private chain and deploying it using Nethereum.

Smart contracts, private test chain and deployment to Ethereum with Nethereum

Introduction to Calls, Transactions, Events, Filters and Topics

This hands on demo provides an introduction to calls, transactions, events filters and topics

Introduction to Calls, Transactions, Events, Filters and Topics

Mappings, Structs, Arrays and complex Functions Output (DTOs)

This video provides an introduction on how to store and retrieve data from structs, mappings and arrays decoding multiple output parameters to Data Transfer Objects

Mappings, Structs, Arrays and complex Functions Output (DTOs)

Thanks and Credits

  • Many thanks to Cass for the fantastic logo (https://github.com/c055) and recreating one of the @ethereumjs logo ideas for Nethereum ethereumjs/organization#1
  • Many thanks to everyone in Maker for providing very early feedback.
  • Many thanks to everyone who has submitted a request for extra features, help or bugs either here in github, gitter/discord or other channels, you are continuously shaping this project. A big shout out specially to @slothbag, @matt.tan, @knocte, @TrekDev, @raymens, @rickzanux, @naddison36, @bobsummerwill, @brendan87, @dylanmckendry that were using Nethereum and providing great feedback from the beginning. @djsowa Marcin Sowa for his help on IPC in Linux.
  • Everyone in the Ethereum, Consensys and the blockchain community.
  • Huge shout out to everyone developing all the different Ethereum implementations Geth, Parity, EthereumJ, EthCpp, ethereum-js (and every other utility around it), python (in the different shapes), ruby (digix guys), solidity, vyper, serpent, web3 implementations (web3js the first) and ethjs, web3j, etc, etc and last but not least the .Net Bitcoin implementation.
  • And many thanks to all you that keep helping and encouraging directly or indirectily.

nethereum's People

Contributors

0xshammah avatar aarani avatar akudrytski avatar aquiladev avatar binhsignkeys avatar chee-chyuan avatar clsdubai avatar dave-whiffin avatar dejx avatar frostiq avatar githubpang avatar imerr avatar jaerith avatar juanfranblanco avatar kjmoraji avatar knocte avatar lostmsu avatar magehernan avatar mryukonc avatar nethereum-ci avatar orelkabets avatar ovaishanif94 avatar p0onage avatar pengowray avatar pzixel avatar raymens avatar ridicoulous avatar scermat avatar wired010 avatar youtpout avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nethereum's Issues

How to get Eth.pendingTransactions

Since i found no API is available in web3.eth.pendingTransactions, I am wondering how can i get web3.eth.pendingTransactions part in my C# program. Thank you.

No miner, admin, debug methods implementation ?

Hi,

I was just wondering if you're planning to implement methods from the miner, admin and debug modules ?
I need to start miners from my project with RPC.
I guess, for the debug module to work, you're waiting for go-ethereum to implement them as well ?

Thanks for your answer.

Best regards,

Proxy

Unit testing integration examples

Refactor the main samples as end to end integration examples.
The should call miner start / stop or one.
Potentially refactor it to a generic sample

A few questions about Netheruem

Hi Juan,

Firstly, I'd like to say that it's great to see .Net support starting to come out for Etheruem, thanks for your contribution to the ecosystem.

I have a couple of questions that I hope you can help me with.

I'm looking at adding ETH support to an existing Bitcoin exchange and there are two functions that I need to perform for this to happen:

  1. Generate an ETH address and corresponding private key
  2. Sign a raw transaction with a private key

Is Nethereum able to perform these two functions without connecting to any other 3rd party services?

If not, are you able to recommend any other .Net library which can do this?

Thanks,

Adrian

custom contract method balanceOf(account) failing

I have a standard token contract which has a balanceOf method which takes an address as an argument and returns a uint256.

When I call it using balanceOfFunction.CallAsync<uint>(account); it throws exception with some unrelated error message. When checking the JSON comms with wireshark I can see geth responded with "error":{"code":-32602,"message":"Invalid address length, expected 40 got 4 bytes"}}

DTOs have problems when function input and output are in different types

        var GetMyFunction = contract.GetFunction<StructType>();
        var NumberIndexStruct = await GetMyFunction.CallDeserializingToObjectAsync<StructType>(index);

I have defined my struct with function parameters
[Nethereum.ABI.FunctionEncoding.Attributes.Function(Name = "DisplayData")]
[Nethereum.ABI.FunctionEncoding.Attributes.FunctionOutput]

So what's the correct way to get my output as a struct when i have a single int type input?

Method comments

Complex methods might require some comments if is not enough the "VeryDescriptiveMethodNamesStandard"

Trouble using Events / Logs / Filters

So I copied the examples in the README, but cant seem to get my Events to come through to Nethereum.

Here is the tx on testnet: https://testnet.etherscan.io/tx/0x0d3fd431855e312c63301e9e97cb4777d6cba3979d465455cad33a8873046f0f#eventlog

Here is my DTO class and test method for accessing the Events..

        public class EventBatchUploaded
        {
            [Nethereum.ABI.FunctionEncoding.Attributes.Parameter("string", 1)]
            public string address { get; set; }

            [Nethereum.ABI.FunctionEncoding.Attributes.Parameter("bytes", 2)]
            public byte[] hashBytes { get; set; }
        }

        public static void test(string contractAddress, long fromBlock) {
            var web3 = new Web3(ethereum_address);
            var dataFeedContract = web3.Eth.GetContract(abi, contractAddress);

            var filterAllContract = dataFeedContract.CreateFilterAsync().Result;
            var logs = web3.Eth.Filters.GetFilterChangesForEthNewFilter.SendRequestAsync(filterAllContract).Result;

            Nethereum.Web3.Event e = dataFeedContract.GetEvent("BatchUploaded");
            var filterAll = e.CreateFilterAsync().Result;
            var eventLogsAll = e.GetFilterChanges<EventBatchUploaded>(filterAll).Result;

        }

as you can see I tried both the Contract get all approach and also the Event specific approach, both return 0 rows. Not sure what i'm doing wrong.

Update nuget package

It looks like the nuget packages v1.0.0-rc1 are not updates with methods for admin api. When can this be expected to be updated?

IPC broken using geth 1.4+

RPC over IPC doesn't work using geth 1.4+ and the latest Nethereum. The version releases do have a mention of a reworked RPC system that might be the issue. It seems the IPC calls don't receive any response and is awaiting endlessly.

RPC over HTTP still works fine.

The best overloaded method match for 'Nethereum.Hex.HexTypes.HexBigInteger.HexBigInteger (string)' has some invalid arguments

Seems that I caught a heisenbug (because it doesn't happen all the time).

This happens, at runtime (not compile time):

Unhandled Exception: System.AggregateException: One or more errors occurred. ---
> Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: The best overloaded met
hod match for 'Nethereum.Hex.HexTypes.HexBigInteger.HexBigInteger(string)' has s
ome invalid arguments
   at CallSite.Target(Closure , CallSite , Type , Object )
   at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site
, T0 arg0, T1 arg1)
   at Nethereum.RPC.Eth.EthSyncing.<SendRequestAsync>d__1.MoveNext()
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceled
Exceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationTo
ken cancellationToken)
   at System.Threading.Tasks.Task.Wait()
   at TestConsole.Program.Main(String[] args) in C:\Users\andres\documents\visua
l studio 2015\Projects\TestConsole\TestConsole\Program.cs:line 253

What I have around Program.cs line 253 is:

                    var isSyncingTask = web3.Eth.Syncing.SendRequestAsync();
                    isSyncingTask.Wait();
                    var isSyncing = isSyncingTask.Result;

Azure Sample

Create a sample as following:

  • Azure hosted Geth client on VM
  • Web job to process events, ie transfers from an ERC20 contract.
  • Transfers are decoded and put into an event hub.
  • Payments can be picked up an update some status on a Sql Server.

send an already signed tx hex string?

My web app already creates and signs the transaction, can I use Nethereum to forward that hex string to geth using the sendRawTransaction method?

Contract address - stuck in infinite loop

I am using the following code to get the contract address from transaction hash.

TransactionReceipt receipt = null;
while (receipt == null)
    {
         await Task.Delay(500);
         receipt = await web3.Eth.Transactions.GetTransactionReceipt.SendRequestAsync(txHash);
    }

But it is stuck in the while loop like forever. It never retrieves the receipt. Hope you can help me in this.

Decode balance giving strange result

The HEX returned from geth = "0x989680" or 0x0000000000000000000000000000000000000000000000000000000000989680 padded.

This should convert to 10000000, but decoding to ulong overflows, and decoding to BigInteger returns -6893242 or something like that.

Running dotnet cli tools unstable

This could simply be a matter of me not understanding the new toolchain fully, but when I do a dotnet restore it fails with lots of errors. When I do a dotnet build it fails. When I do a dotnet run it appears to build all the projects successfully, however when I copy those dlls into my xamarin app I get all sorts of System.Object not referenced errors.

Would be nice to have this library as a more traditional csproj style library until dotnet cli is more stable.

IOException using IPC in Linux: ERROR_GEN_FAILURE

When using IPC in Linux I get this stacktrace:

System.AggregateException: One or more errors occurred. ---> edjCase.JsonRpc.Client.RpcClientUnknownException: Error occurred when trying to send ipc requests(s) ---> System.IO.IOException: Win32 IO returned ERROR_GEN_FAILURE. Path: /home/roy/.ethereum/testnet/geth.ipc
  at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) <0x7f780115d2c0 + 0x005ed> in <filename unknown>:0 
  at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share) <0x7f780115cf30 + 0x0004b> in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare)
  at System.IO.Pipes.UnixNamedPipeClient+<UnixNamedPipeClient>c__AnonStorey0.<>m__0 () <0x41c4f600 + 0x00060> in <filename unknown>:0 
  at System.IO.Pipes.UnixNamedPipeClient.Connect () <0x41c4f4f0 + 0x00032> in <filename unknown>:0 
  at System.IO.Pipes.NamedPipeClientStream.Connect () <0x41c4f460 + 0x0001d> in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.IO.Pipes.NamedPipeClientStream:Connect ()
  at Nethereum.JsonRpc.IpcClient.IpcClient.GetPipeClient () <0x41c4cea0 + 0x00103> in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at Nethereum.JsonRpc.IpcClient.IpcClient+<SendAsync>d__12`2[TRequest,TResponse].MoveNext () <0x41c4c160 + 0x00aa7> in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <0x7f78010016d0 + 0x00029> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) <0x7f7800fff6b0 + 0x000a7> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) <0x7f7800fff630 + 0x0006b> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) <0x7f7800fff5e0 + 0x0003a> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () <0x7f7800fff8d0 + 0x00017> in <filename unknown>:0 
  at Nethereum.JsonRpc.IpcClient.IpcClient+<SendRequestAsync>d__9.MoveNext () <0x41c4bb00 + 0x001d5> in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <0x7f78010016d0 + 0x00029> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) <0x7f7800fff6b0 + 0x000a7> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) <0x7f7800fff630 + 0x0006b> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) <0x7f7800fff5e0 + 0x0003a> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () <0x7f7800fff8d0 + 0x00017> in <filename unknown>:0 
  at Nethereum.JsonRpc.Client.RpcRequestResponseHandlerNoParam`1+<SendRequestAsync>d__7[TResponse].MoveNext () <0x41c4b0a0 + 0x001f7> in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <0x7f78010016d0 + 0x00029> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) <0x7f7800fff6b0 + 0x000a7> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) <0x7f7800fff630 + 0x0006b> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) <0x7f7800fff5e0 + 0x0003a> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () <0x7f7800fff8d0 + 0x00017> in <filename unknown>:0 
  at Nethereum.RPC.Eth.EthSyncing+<SendRequestAsync>d__1.MoveNext () <0x41c50000 + 0x001d2> in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at System.Threading.Tasks.Task.ThrowIfExceptional (Boolean includeTaskCanceledExceptions) <0x7f780109d920 + 0x00037> in <filename unknown>:0 
  at System.Threading.Tasks.Task.Wait (Int32 millisecondsTimeout, CancellationToken cancellationToken) <0x7f780109ed90 + 0x000c7> in <filename unknown>:0 
  at System.Threading.Tasks.Task.Wait () <0x7f780109ec80 + 0x00028> in <filename unknown>:0 
  at TestConsole.Program.MakeSureItsInSync (Nethereum.Web3.Web3 web3) <0x41c49e90 + 0x00311> in <filename unknown>:0 
  at TestConsole.Program.BulkCheckBalance (Nethereum.Web3.Web3 web3) <0x41c49dc0 + 0x0000f> in <filename unknown>:0 
  at TestConsole.Program.Main (System.String[] args) <0x41c1a060 + 0x004ef> in <filename unknown>:0 
---> (Inner Exception #0) edjCase.JsonRpc.Client.RpcClientUnknownException: Error occurred when trying to send ipc requests(s) ---> System.IO.IOException: Win32 IO returned ERROR_GEN_FAILURE. Path: /home/roy/.ethereum/testnet/geth.ipc
  at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) <0x7f780115d2c0 + 0x005ed> in <filename unknown>:0 
  at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share) <0x7f780115cf30 + 0x0004b> in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare)
  at System.IO.Pipes.UnixNamedPipeClient+<UnixNamedPipeClient>c__AnonStorey0.<>m__0 () <0x41c4f600 + 0x00060> in <filename unknown>:0 
  at System.IO.Pipes.UnixNamedPipeClient.Connect () <0x41c4f4f0 + 0x00032> in <filename unknown>:0 
  at System.IO.Pipes.NamedPipeClientStream.Connect () <0x41c4f460 + 0x0001d> in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.IO.Pipes.NamedPipeClientStream:Connect ()
  at Nethereum.JsonRpc.IpcClient.IpcClient.GetPipeClient () <0x41c4cea0 + 0x00103> in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at Nethereum.JsonRpc.IpcClient.IpcClient+<SendAsync>d__12`2[TRequest,TResponse].MoveNext () <0x41c4c160 + 0x00aa7> in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <0x7f78010016d0 + 0x00029> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) <0x7f7800fff6b0 + 0x000a7> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) <0x7f7800fff630 + 0x0006b> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) <0x7f7800fff5e0 + 0x0003a> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () <0x7f7800fff8d0 + 0x00017> in <filename unknown>:0 
  at Nethereum.JsonRpc.IpcClient.IpcClient+<SendRequestAsync>d__9.MoveNext () <0x41c4bb00 + 0x001d5> in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <0x7f78010016d0 + 0x00029> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) <0x7f7800fff6b0 + 0x000a7> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) <0x7f7800fff630 + 0x0006b> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) <0x7f7800fff5e0 + 0x0003a> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () <0x7f7800fff8d0 + 0x00017> in <filename unknown>:0 
  at Nethereum.JsonRpc.Client.RpcRequestResponseHandlerNoParam`1+<SendRequestAsync>d__7[TResponse].MoveNext () <0x41c4b0a0 + 0x001f7> in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <0x7f78010016d0 + 0x00029> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) <0x7f7800fff6b0 + 0x000a7> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) <0x7f7800fff630 + 0x0006b> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) <0x7f7800fff5e0 + 0x0003a> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () <0x7f7800fff8d0 + 0x00017> in <filename unknown>:0 
  at Nethereum.RPC.Eth.EthSyncing+<SendRequestAsync>d__1.MoveNext () <0x41c50000 + 0x001d2> in <filename unknown>:0 <---

[ERROR] FATAL UNHANDLED EXCEPTION: System.AggregateException: One or more errors occurred. ---> edjCase.JsonRpc.Client.RpcClientUnknownException: Error occurred when trying to send ipc requests(s) ---> System.IO.IOException: Win32 IO returned ERROR_GEN_FAILURE. Path: /home/roy/.ethereum/testnet/geth.ipc
  at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) <0x7f780115d2c0 + 0x005ed> in <filename unknown>:0 
  at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share) <0x7f780115cf30 + 0x0004b> in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare)
  at System.IO.Pipes.UnixNamedPipeClient+<UnixNamedPipeClient>c__AnonStorey0.<>m__0 () <0x41c4f600 + 0x00060> in <filename unknown>:0 
  at System.IO.Pipes.UnixNamedPipeClient.Connect () <0x41c4f4f0 + 0x00032> in <filename unknown>:0 
  at System.IO.Pipes.NamedPipeClientStream.Connect () <0x41c4f460 + 0x0001d> in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.IO.Pipes.NamedPipeClientStream:Connect ()
  at Nethereum.JsonRpc.IpcClient.IpcClient.GetPipeClient () <0x41c4cea0 + 0x00103> in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at Nethereum.JsonRpc.IpcClient.IpcClient+<SendAsync>d__12`2[TRequest,TResponse].MoveNext () <0x41c4c160 + 0x00aa7> in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <0x7f78010016d0 + 0x00029> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) <0x7f7800fff6b0 + 0x000a7> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) <0x7f7800fff630 + 0x0006b> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) <0x7f7800fff5e0 + 0x0003a> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () <0x7f7800fff8d0 + 0x00017> in <filename unknown>:0 
  at Nethereum.JsonRpc.IpcClient.IpcClient+<SendRequestAsync>d__9.MoveNext () <0x41c4bb00 + 0x001d5> in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <0x7f78010016d0 + 0x00029> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) <0x7f7800fff6b0 + 0x000a7> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) <0x7f7800fff630 + 0x0006b> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) <0x7f7800fff5e0 + 0x0003a> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () <0x7f7800fff8d0 + 0x00017> in <filename unknown>:0 
  at Nethereum.JsonRpc.Client.RpcRequestResponseHandlerNoParam`1+<SendRequestAsync>d__7[TResponse].MoveNext () <0x41c4b0a0 + 0x001f7> in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <0x7f78010016d0 + 0x00029> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) <0x7f7800fff6b0 + 0x000a7> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) <0x7f7800fff630 + 0x0006b> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) <0x7f7800fff5e0 + 0x0003a> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () <0x7f7800fff8d0 + 0x00017> in <filename unknown>:0 
  at Nethereum.RPC.Eth.EthSyncing+<SendRequestAsync>d__1.MoveNext () <0x41c50000 + 0x001d2> in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at System.Threading.Tasks.Task.ThrowIfExceptional (Boolean includeTaskCanceledExceptions) <0x7f780109d920 + 0x00037> in <filename unknown>:0 
  at System.Threading.Tasks.Task.Wait (Int32 millisecondsTimeout, CancellationToken cancellationToken) <0x7f780109ed90 + 0x000c7> in <filename unknown>:0 
  at System.Threading.Tasks.Task.Wait () <0x7f780109ec80 + 0x00028> in <filename unknown>:0 
  at TestConsole.Program.MakeSureItsInSync (Nethereum.Web3.Web3 web3) <0x41c49e90 + 0x00311> in <filename unknown>:0 
  at TestConsole.Program.BulkCheckBalance (Nethereum.Web3.Web3 web3) <0x41c49dc0 + 0x0000f> in <filename unknown>:0 
  at TestConsole.Program.Main (System.String[] args) <0x41c1a060 + 0x004ef> in <filename unknown>:0 
---> (Inner Exception #0) edjCase.JsonRpc.Client.RpcClientUnknownException: Error occurred when trying to send ipc requests(s) ---> System.IO.IOException: Win32 IO returned ERROR_GEN_FAILURE. Path: /home/roy/.ethereum/testnet/geth.ipc
  at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) <0x7f780115d2c0 + 0x005ed> in <filename unknown>:0 
  at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share) <0x7f780115cf30 + 0x0004b> in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare)
  at System.IO.Pipes.UnixNamedPipeClient+<UnixNamedPipeClient>c__AnonStorey0.<>m__0 () <0x41c4f600 + 0x00060> in <filename unknown>:0 
  at System.IO.Pipes.UnixNamedPipeClient.Connect () <0x41c4f4f0 + 0x00032> in <filename unknown>:0 
  at System.IO.Pipes.NamedPipeClientStream.Connect () <0x41c4f460 + 0x0001d> in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.IO.Pipes.NamedPipeClientStream:Connect ()
  at Nethereum.JsonRpc.IpcClient.IpcClient.GetPipeClient () <0x41c4cea0 + 0x00103> in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at Nethereum.JsonRpc.IpcClient.IpcClient+<SendAsync>d__12`2[TRequest,TResponse].MoveNext () <0x41c4c160 + 0x00aa7> in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <0x7f78010016d0 + 0x00029> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) <0x7f7800fff6b0 + 0x000a7> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) <0x7f7800fff630 + 0x0006b> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) <0x7f7800fff5e0 + 0x0003a> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () <0x7f7800fff8d0 + 0x00017> in <filename unknown>:0 
  at Nethereum.JsonRpc.IpcClient.IpcClient+<SendRequestAsync>d__9.MoveNext () <0x41c4bb00 + 0x001d5> in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <0x7f78010016d0 + 0x00029> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) <0x7f7800fff6b0 + 0x000a7> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) <0x7f7800fff630 + 0x0006b> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) <0x7f7800fff5e0 + 0x0003a> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () <0x7f7800fff8d0 + 0x00017> in <filename unknown>:0 
  at Nethereum.JsonRpc.Client.RpcRequestResponseHandlerNoParam`1+<SendRequestAsync>d__7[TResponse].MoveNext () <0x41c4b0a0 + 0x001f7> in <filename unknown>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <0x7f78010016d0 + 0x00029> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) <0x7f7800fff6b0 + 0x000a7> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) <0x7f7800fff630 + 0x0006b> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) <0x7f7800fff5e0 + 0x0003a> in <filename unknown>:0 
  at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () <0x7f7800fff8d0 + 0x00017> in <filename unknown>:0 
  at Nethereum.RPC.Eth.EthSyncing+<SendRequestAsync>d__1.MoveNext () <0x41c50000 + 0x001d2> in <filename unknown>:0 <---

Enable Build Service

There are many free build services around (like AppVeyor & Travis-ci). Enabling one also gets the project closer to implementing CI.

Create a Factory for generic client (Current RPC) and Interface

Decouple the implementation from RPC Client by creating a factory and interface, this will allow to use other types of clients but maintaining the same json messaging contracts (IPC), together with specific configuration settings for the RPC Client.

This should not be done in Web3 as it will enforce coupling to the "simpler" wrapper.

Don't use any dynamic types for iOS support

iOS does not allow dynamic types, RPC should use object as a return type and then use JObject, JArray from Newtonsoft to access the values.

Other usage could be ExpandoObject with IDictionary<string, object> (for an element) and List<object> for an array, for backwards compatibility with existing code.

Projects folder

Rename old Xamarin-XS folder to Project types, and use it as the main folder for code generated projects (Portable)

getBalance Hex value is correct, decimal value is wrong

Using Nethereum to call getBalance I get a result of 0x8ac7230489e80000 which the same request in CURL gives me the same result.

However when accessing the value (BigInteger i assume) like 'Result.Value' it shows -8446744073709551616, it should be 10000000000000000000

Missing RPC methods

This might be a continue issue.. it will require a continuous catch up with Geth

Latest commit not compiling

Getting lots of errors, the first few lines being..

Infrastructure\GenericRpcRequesteResponseHandlerNoParam.cs(14,36): warning CS0109: The member 'GenericRpcRequestResponseHandlerNoParam<TResponse>.SendRequestAsync(object)' does not hide an inherited member. The new keyword is not required.
Infrastructure\GenericRpcRequesteResponseHandlerNoParam.cs(16,42): error CS1503: Argument 1: cannot convert from 'object' to 'string'

Referencing the latest JsonRpc.Client.1.0.0-rc1-6

Transaction signing

  • Create an upto date RLP encoding / decoding (Core) (Message, RPL List objects)
  • Create a core Transaction object, instantiated with bytes (these should be already in BigEndian).
  • Or instantiated with the raw RLP messaged and parsed. (Maybe a factory?)
  • v,r,s should be passed as bytes as optional
  • Do the signing using a custom ECKey using bouncy

Some projects cannot be loaded (VS2015)

Some days ago I could clone master and open the solution in Visual Studio and build (in fact I sent a PR). But now I've pulled latest master and some projects on the solution can't load.

The errors are:

C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.ABI\Nethereum.ABI.xproj : error  : The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.ABI\Nethereum.ABI.xproj

C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.Hex\Nethereum.Hex.xproj : error  : The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.Hex\Nethereum.Hex.xproj

C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.RPC\Nethereum.RPC.xproj : error  : The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.RPC\Nethereum.RPC.xproj

C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.Web3\Nethereum.Web3.xproj : error  : The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.Web3\Nethereum.Web3.xproj

C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.RPC.Sample\Nethereum.RPC.Sample.xproj : error  : The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.RPC.Sample\Nethereum.RPC.Sample.xproj

C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.Web3.Sample\Nethereum.Web3.Sample.xproj : error  : The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.Web3.Sample\Nethereum.Web3.Sample.xproj

C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.RPC.ClassesExtractor\Nethereum.RPC.ClassesExtractor.xproj : error  : The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.RPC.ClassesExtractor\Nethereum.RPC.ClassesExtractor.xproj

C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.ABI.Tests\Nethereum.ABI.Tests.xproj : error  : The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.ABI.Tests\Nethereum.ABI.Tests.xproj

C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.Gen\Nethereum.Gen.xproj : error  : The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.Gen\Nethereum.Gen.xproj

C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.JsonRpc.Client\Nethereum.JsonRpc.Client.xproj : error  : The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.JsonRpc.Client\Nethereum.JsonRpc.Client.xproj

C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.JsonRpc.IpcClient\Nethereum.JsonRpc.IpcClient.xproj : error  : The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.JsonRpc.IpcClient\Nethereum.JsonRpc.IpcClient.xproj

C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.Web3.Ipc.Sample\Nethereum.Web3.Ipc.Sample.xproj : error  : The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.Web3.Ipc.Sample\Nethereum.Web3.Ipc.Sample.xproj

C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.RPC.Tests\Nethereum.RPC.Tests.xproj : error  : The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  C:\Users\andres\Documents\Code\NethereumMASTER\src\Nethereum.RPC.Tests\Nethereum.RPC.Tests.xproj

Simplified documentation including all steps

Simplified documentation step by step, to simplify usage.
It will include

  • Geth Installation (this should be for the latest stable version)
  • Geth configuration for own chain and morden. This should include specific flags for IPC, RPC, etc
  • Client configuration, rpc / ipc
  • Contract creation including installation of vscode and compilation
  • Contract deployment (already done) but should include verification of deployment check gas, etc
  • Calling + Transactions contract (should be the same)
  • Event and filter logs

JS ABI to C# class generator

I am just playing around with loading in my own contract into Nethereum, was just thinking it would be nice to be able to convert a JS ABI into a C# class object so I could call contract methods using c# intellisense and type checking etc.

Just a thought.. :)

Trouble calling contract function with no inputs and multiple array outputs

I'm using the DTO example on the README, but it forces me to pass the same class as both Input and output.

That is causing the encoding to fail because its trying to encode both null output parameters.

function getAllDataFeeds() constant returns(bytes4[500] feedCode, address[500] addresses) {

        [Nethereum.ABI.FunctionEncoding.Attributes.Function(Name = "getAllDataFeeds")]//, Sha3Signature="78cded60")]
        [Nethereum.ABI.FunctionEncoding.Attributes.FunctionOutput]
        public class getAllDataFeedsFunction
        {
            [Nethereum.ABI.FunctionEncoding.Attributes.Parameter("bytes4[500]", "feedCode", 1)]
            public List<byte[]> feedCode { get; set; }

            [Nethereum.ABI.FunctionEncoding.Attributes.Parameter("address[500]", "addresses", 2)]
            public List<Nethereum.ABI.AddressType> addresses { get; set; }

        }

Set client timeout

Sometimes a RPC request takes a lot of time. It would be great to be able to set a timeout (probably in the IClient, or maybe per request).

Update:
I guess it's also possible to just cancel the Task<T>

Indexed string in event cannot be parsed

Hi,

I deployed a straight forward smart contract as below and used GetAllChanges to get all events from block 0. GetAllChanges functions throws overflow exception when I tried to get the MultipliedLog event :
Value was either too large or too small for an Int32

My testing shows that it happens when I put a "indexed" keyword after a string. Is it expected?
event Multiplied(uint indexed a, uint indexed result, string hello);
event MultipliedLog(uint indexed a, address indexed sender, string indexed hello);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.