Esempio n. 1
0
        private static async Task TraceBlock(BasicJsonRpcClient localhostClient, int blockNumber, string pathBase)
        {
            string response = await localhostClient.Post("debug_traceBlockByNumber", string.Format("0x{0:x}", blockNumber));

            var blockTraceItems = _serializer.Deserialize <JsonRpcResponse <BlockTraceItem[]> >(response);

            if (blockTraceItems == null)
            {
                return;
            }

            for (int i = 0; i < blockTraceItems.Result.Length; i++)
            {
                if (blockTraceItems.Result[i].Result == null)
                {
                    string nethPath = Path.Combine(pathBase, $"{i}_empty.txt");
                    File.WriteAllText(nethPath, "empty");
                }
                else
                {
                    string singleTxJson = _serializer.Serialize(blockTraceItems.Result[i].Result, true);
                    string txPath       = Path.Combine(pathBase, $"{i}.txt");
                    File.WriteAllText(txPath, singleTxJson);
                }
            }
        }
Esempio n. 2
0
        private static async Task TraceBlockByHash(BasicJsonRpcClient localhostClient, string hash, string pathBase)
        {
            string response = await localhostClient.Post("debug_traceBlockByHash", hash);

            var blockTraceItems = _serializer.Deserialize <JsonRpcResponse <GethLikeTxTrace[]> >(response);

            if (blockTraceItems.Error != null)
            {
                return;
            }

            for (int i = 0; i < blockTraceItems.Result.Length; i++)
            {
                if (blockTraceItems.Result[i].ReturnValue == null)
                {
                    string nethPath = Path.Combine(pathBase, $"{i}_empty.txt");
                    File.WriteAllText(nethPath, "empty");
                }
                else
                {
                    string singleTxJson = _serializer.Serialize(blockTraceItems.Result[i].ReturnValue, true);
                    string txPath       = Path.Combine(pathBase, $"{i}.txt");
                    File.WriteAllText(txPath, singleTxJson);
                }
            }
        }
Esempio n. 3
0
        static async Task Main(string[] args)
        {
            Console.WriteLine("Welcome in Runner Test Client");
            IJsonRpcClient jsonRpcClient = new BasicJsonRpcClient(KnownRpcUris.Localhost, new JsonSerializer(NullLogManager.Instance), NullLogManager.Instance);
            var            client        = new RunnerTestClientApp(jsonRpcClient);
            await client.Run();

            Console.WriteLine("Exiting Runner Test Client");
        }
Esempio n. 4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        async Task RunClient(string[] args)
        {
            Console.WriteLine("Welcome in Runner Test Client");
            IJsonRpcClient ethStatService = new BasicJsonRpcClient(KnownRpcUris.Localhost, new EthereumJsonSerializer(), NullLogManager.Instance);
            var            client         = new RunnerTestClientApp(ethStatService);
            await client.Run();

            //Console.WriteLine("Exiting Runner Test Client");
        }
Esempio n. 5
0
        public void SwitchUri(Uri uri)
        {
            CurrentUri = uri.ToString();
            if (!_clients.ContainsKey(uri))
            {
                _clients[uri] = new BasicJsonRpcClient(uri, _serializer, _logManager);
            }

            _currentClient = _clients[uri];
        }
Esempio n. 6
0
        public static async Task Main(params string[] args)
        {
//            int blockNumber = 6108276;
//            string hash = "?";

            int    blockNumber = 316658;
            string hash        = "0x846806c1e1fc530399ad80cec3121b9d90fe24e4665484b995237f7f95e2caa8";
//            Console.WriteLine("Block Number:");
            // int blockNumber = int.Parse(Console.ReadLine());

            string nethPathBase = $"D:\\block_traces\\{blockNumber}\\neth\\";

            if (!Directory.Exists(nethPathBase))
            {
                Directory.CreateDirectory(nethPathBase);
            }

            string gethPathBase = $"D:\\block_traces\\{blockNumber}\\geth\\";

            if (!Directory.Exists(gethPathBase))
            {
                Directory.CreateDirectory(gethPathBase);
            }

            BasicJsonRpcClient localhostClient = new BasicJsonRpcClient(KnownRpcUris.Localhost, _serializer, NullLogManager.Instance);

//            await TraceBlock(localhostClient, blockNumber, nethPathBase);
            await TraceBlockByHash(localhostClient, hash, nethPathBase);

            BasicJsonRpcClient gethClient = new BasicJsonRpcClient(KnownRpcUris.Localhost, _serializer, NullLogManager.Instance);

//            await TraceBlock(gethClient, blockNumber, gethPathBase);
            await TraceBlockByHash(gethClient, hash, gethPathBase);

            string nethTx = File.ReadAllText(Path.Combine(nethPathBase, "0.txt"));
            string gethTx = File.ReadAllText(Path.Combine(gethPathBase, "0.txt"));

            TransactionTrace gethTrace = _serializer.Deserialize <TransactionTrace>(gethTx);
            TransactionTrace nethTrace = _serializer.Deserialize <TransactionTrace>(nethTx);

            _comparer.Compare(gethTrace, nethTrace);

//            try
//            {
//                for (int i = 41; i < 42; i++) await TraceTxByBlockhashAndIndex(KnownRpcUris.Localhost, pathBase, blockNumber, i);
//            }
//            catch (Exception e)
//            {
//                Console.WriteLine(e);
//                throw;
//            }

            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }