Ejemplo n.º 1
0
        public void Can_do_roundtrip_null([Values(true, false)] bool valueDecoder)
        {
            BlockDecoder decoder = new BlockDecoder();
            Rlp          result  = decoder.Encode((Block)null);
            Block        decoded = valueDecoder ? Rlp.Decode <Block>(result.Bytes.AsSpan()) : Rlp.Decode <Block>(result);

            Assert.IsNull(decoded);
        }
Ejemplo n.º 2
0
        public void Can_do_roundtrip_null()
        {
            BlockDecoder decoder = new BlockDecoder();
            Rlp          result  = decoder.Encode((Block)null);
            Block        decoded = Rlp.Decode <Block>(result);

            Assert.IsNull(decoded);
        }
Ejemplo n.º 3
0
        public void Can_do_roundtrip_regression()
        {
            BlockDecoder decoder = new BlockDecoder();

            Block decoded = decoder.Decode(new RlpStream(Bytes.FromHexString(regression5644)));
            Rlp   encoded = decoder.Encode(decoded);

            Assert.AreEqual(encoded.Bytes.ToHexString(), encoded.Bytes.ToHexString());
        }
Ejemplo n.º 4
0
        public void Can_do_roundtrip_regression([Values(true, false)] bool valueDecoder)
        {
            BlockDecoder decoder = new BlockDecoder();

            var   bytes = Bytes.FromHexString(regression5644);
            var   valueDecoderContext = new Rlp.ValueDecoderContext(bytes);
            Block decoded             = valueDecoder ? decoder.Decode(ref valueDecoderContext) : decoder.Decode(new RlpStream(bytes));
            Rlp   encoded             = decoder.Encode(decoded);

            Assert.AreEqual(encoded.Bytes.ToHexString(), encoded.Bytes.ToHexString());
        }
Ejemplo n.º 5
0
        public void Can_do_roundtrip_scenarios()
        {
            BlockDecoder decoder = new BlockDecoder();

            foreach (Block block in _scenarios)
            {
                Rlp   encoded  = decoder.Encode(block);
                Block decoded  = decoder.Decode(new RlpStream(encoded.Bytes));
                Rlp   encoded2 = decoder.Encode(decoded);
                Assert.AreEqual(encoded.Bytes.ToHexString(), encoded2.Bytes.ToHexString());
            }
        }
Ejemplo n.º 6
0
        public void Get_block_rlp_by_hash_when_missing()
        {
            BlockDecoder decoder = new BlockDecoder();
            Rlp          rlp     = decoder.Encode(Build.A.Block.WithNumber(1).TestObject);

            debugBridge.GetBlockRlp(Keccak.Zero).Returns((byte[])null);

            DebugModule          module   = new DebugModule(LimboLogs.Instance, debugBridge, jsonRpcConfig);
            JsonRpcErrorResponse response = RpcTest.TestRequest <IDebugModule>(module, "debug_getBlockRlpByHash", $"{Keccak.Zero.Bytes.ToHexString()}") as JsonRpcErrorResponse;

            Assert.AreEqual(-32001, response.Error.Code);
        }
Ejemplo n.º 7
0
        public void Get_block_rlp_by_hash()
        {
            BlockDecoder decoder = new BlockDecoder();
            Rlp          rlp     = decoder.Encode(Build.A.Block.WithNumber(1).TestObject);

            debugBridge.GetBlockRlp(Keccak.Zero).Returns(rlp.Bytes);

            DebugRpcModule         rpcModule = new DebugRpcModule(LimboLogs.Instance, debugBridge, jsonRpcConfig);
            JsonRpcSuccessResponse response  = RpcTest.TestRequest <IDebugRpcModule>(rpcModule, "debug_getBlockRlpByHash", $"{Keccak.Zero.Bytes.ToHexString()}") as JsonRpcSuccessResponse;

            Assert.AreEqual(rlp.Bytes, (byte[])response?.Result);
        }
Ejemplo n.º 8
0
        public void Can_do_roundtrip_scenarios([Values(true, false)] bool valueDecoder)
        {
            BlockDecoder decoder = new BlockDecoder();

            foreach (Block block in _scenarios)
            {
                Rlp   encoded             = decoder.Encode(block);
                var   valueDecoderContext = new Rlp.ValueDecoderContext(encoded.Bytes);
                Block decoded             = valueDecoder ? decoder.Decode(ref valueDecoderContext) : decoder.Decode(new RlpStream(encoded.Bytes));
                Rlp   encoded2            = decoder.Encode(decoded);
                Assert.AreEqual(encoded.Bytes.ToHexString(), encoded2.Bytes.ToHexString());
            }
        }
Ejemplo n.º 9
0
        public void Get_block_rlp()
        {
            BlockDecoder decoder     = new BlockDecoder();
            IDebugBridge debugBridge = Substitute.For <IDebugBridge>();
            Rlp          rlp         = decoder.Encode(Build.A.Block.WithNumber(1).TestObject);

            debugBridge.GetBlockRlp(1).Returns(rlp.Bytes);

            DebugRpcModule         rpcModule = new DebugRpcModule(LimboLogs.Instance, debugBridge, jsonRpcConfig);
            JsonRpcSuccessResponse response  = RpcTest.TestRequest <IDebugRpcModule>(rpcModule, "debug_getBlockRlp", "1") as JsonRpcSuccessResponse;

            Assert.AreEqual(rlp.Bytes, (byte[])response?.Result);
        }
Ejemplo n.º 10
0
        public void Get_block_rlp_by_hash()
        {
            BlockDecoder decoder     = new BlockDecoder();
            IDebugBridge debugBridge = Substitute.For <IDebugBridge>();
            Rlp          rlp         = decoder.Encode(Build.A.Block.WithNumber(1).TestObject);

            debugBridge.GetBlockRlp(Keccak.Zero).Returns(rlp.Bytes);

            DebugModule            module   = new DebugModule(NullLogManager.Instance, debugBridge);
            JsonRpcSuccessResponse response = RpcTest.TestRequest <IDebugModule>(module, "debug_getBlockRlpByHash", $"{Keccak.Zero.Bytes.ToHexString()}") as JsonRpcSuccessResponse;

            Assert.AreEqual(rlp.Bytes, (byte[])response?.Result);
        }
Ejemplo n.º 11
0
        public void Get_block_rlp_by_hash_when_missing()
        {
            BlockDecoder decoder     = new BlockDecoder();
            IDebugBridge debugBridge = Substitute.For <IDebugBridge>();
            Rlp          rlp         = decoder.Encode(Build.A.Block.WithNumber(1).TestObject);

            debugBridge.GetBlockRlp(Keccak.Zero).Returns((byte[])null);

            DebugModule     module   = new DebugModule(NullLogManager.Instance, debugBridge);
            JsonRpcResponse response = RpcTest.TestRequest <IDebugModule>(module, "debug_getBlockRlpByHash", $"{Keccak.Zero.Bytes.ToHexString()}");

            Assert.AreEqual(-32601, response.Error.Code);
        }
Ejemplo n.º 12
0
        public void Get_block_rlp()
        {
            BlockDecoder decoder     = new BlockDecoder();
            IDebugBridge debugBridge = Substitute.For <IDebugBridge>();
            Rlp          rlp         = decoder.Encode(Build.A.Block.WithNumber(1).TestObject);

            debugBridge.GetBlockRlp(1).Returns(rlp.Bytes);

            DebugModule     module   = new DebugModule(NullLogManager.Instance, debugBridge);
            JsonRpcResponse response = RpcTest.TestRequest <IDebugModule>(module, "debug_getBlockRlp", "1");

            Assert.IsNotInstanceOf <JsonRpcErrorResponse>(response);
            Assert.AreEqual(rlp.Bytes, (byte[])response.Result);
        }
Ejemplo n.º 13
0
        public void Init(string path)
        {
            var dbOnTheRocks = new BlocksRocksDb(path, new DbConfig(), LimboLogs.Instance);
            var blocksBytes  = dbOnTheRocks.GetAll();
            var blockDecoder = new BlockDecoder();
            var blocks       = blocksBytes
                               .Select(b => blockDecoder.Decode(b.Value.AsRlpStream()))
                               .OrderBy(b => b.Number)
                               .ToList();

            var window = new Window("Blocks")
            {
                X = 0, Y = 10, Width = Dim.Fill(), Height = Dim.Fill()
            };

            if (!blocks.Any())
            {
                MessageBox.Query(40, 7, "Info", "No data.");
                window.FocusPrev();
                return;
            }

            var y = 1;

            foreach (var block in blocks)
            {
                var blockBtn = new Button(1, y++, $"Number: {block.Number}, Hash: {block.Hash}");


                blockBtn.Clicked = () =>
                {
                    var blockDetailsWindow = new Window("Block details")
                    {
                        X = 0, Y = 10, Width = Dim.Fill(), Height = Dim.Fill()
                    };
                    Application.Top.Add(blockDetailsWindow);
                    var serializer = new EthereumJsonSerializer();
                    var blockLbl   = new Label(1, 1, serializer.Serialize(block, true));
                    blockDetailsWindow.Add(blockLbl);
                    Application.Run(blockDetailsWindow);
                };
                window.Add(blockBtn);
            }

            Application.Top.Add(window);
            Application.Run(window);
        }
Ejemplo n.º 14
0
        public void Get_length_null()
        {
            BlockDecoder decoder = new BlockDecoder();

            Assert.AreEqual(1, decoder.GetLength(null, RlpBehaviors.None));
        }