public void Roundtrip2() { Transaction a = Build.A.Transaction.SignedAndResolved().TestObject; Transaction b = Build.A.Transaction.SignedAndResolved().TestObject; Transaction c = Build.A.Transaction.SignedAndResolved().TestObject; Transaction d = Build.A.Transaction.SignedAndResolved().TestObject; Transaction e = Build.A.Transaction.SignedAndResolved().TestObject; Transaction f = Build.A.Transaction.SignedAndResolved().TestObject; Block block = Build.A.Block.WithTransactions(a, b, c, d, e, f).TestObject; NewBlockMessage message = new NewBlockMessage(); message.Block = block; NewBlockMessageSerializer serializer = new NewBlockMessageSerializer(); byte[] bytes = serializer.Serialize(message); byte[] expectedBytes = Bytes.FromHexString("f9044af90446f901f9a0ff483e972a04a9a62bb4b7d04ae403c615604e4090521ecc5bb7af67f71be09ca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830f424080833d090080830f424083010203a02ba5557a4c62a513c7e56d1bf13373e0da6bec016755483e91589fe1c6d212e28800000000000003e8f90246f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5c080"); // TestContext.Out.WriteLine(bytes.ToHexString()); // TestContext.Out.WriteLine(bytes.Length); Assert.AreEqual(expectedBytes.ToHexString(), bytes.ToHexString(), "bytes"); NewBlockMessage deserializedBlock = serializer.Deserialize(bytes); Assert.AreEqual(6, deserializedBlock.Block.Transactions.Length, "length tx"); SerializerTester.Test(serializer, message); SerializerTester.TestZero(serializer, message); }
public void Block_is_handled() { Transaction a = Build.A.Transaction.TestObject; Transaction b = Build.A.Transaction.TestObject; Block block = Build.A.Block.WithTransactions(a, b).TestObject; NewBlockMessage newBlockMessage = new NewBlockMessage(); newBlockMessage.Block = block; NewBlockMessageSerializer newBlockMessageSerializer = new NewBlockMessageSerializer(); Packet packet = new Packet("eth", 7, newBlockMessageSerializer.Serialize(newBlockMessage)); _input.WriteByte(packet.PacketType); _input.WriteBytes(packet.Data); ZeroPacketSplitterTestWrapper packetSplitter = new ZeroPacketSplitterTestWrapper(); _output = packetSplitter.Encode(_input); byte[] outputBytes = new byte[_output.ReadableBytes]; _output.ReadBytes(outputBytes); string outputHex = outputBytes.ToHexString(false); Assert.AreEqual("000247c180000000000000000000000007f90243f9023ff901f9a0ff483e972a04a9a62bb4b7d04ae403c615604e4090521ecc5bb7af67f71be09ca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a01afbbda2cfebd56d2d0d1288617084931eb82bc346c678cac5eeff7c7a078e36a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830f424080833d090080830f424083010203a02ba5557a4c62a513c7e56d1bf13373e0da6bec016755483e91589fe1c6d212e28800000000000003e8f840df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080c080000000000000000000", outputHex); }
private void SetupAll(bool useLimboOutput = false) { var secrets = NetTestVectors.GetSecretsPair(); FrameCipher frameCipher = new FrameCipher(secrets.A.AesSecret); FrameMacProcessor frameMacProcessor = new FrameMacProcessor(TestItem.IgnoredPublicKey, secrets.A); _zeroSplitter = new TestZeroSplitter(); _zeroSplitter.DisableFraming(); _zeroEncoder = new TestZeroEncoder(frameCipher, frameMacProcessor); _zeroSnappyEncoder = new TestZeroSnappy(); Transaction a = Build.A.Transaction.TestObject; Transaction b = Build.A.Transaction.TestObject; _block = Build.A.Block.WithTransactions(a, b).TestObject; _newBlockMessageSerializer = new NewBlockMessageSerializer(); if (useLimboOutput) { _outputBuffer = new MockBuffer(); } _newBlockMessage = new NewBlockMessage(); _newBlockMessage.Block = _block; _serializationService = new MessageSerializationService(); _serializationService.Register(_newBlockMessageSerializer); _packetSender = new PacketSender(_serializationService, LimboLogs.Instance); ResourceLeakDetector.Level = ResourceLeakDetector.DetectionLevel.Paranoid; }
public void Roundtrip2() { IByteBuffer byteBuffer = PooledByteBufferAllocator.Default.Buffer(1024); try { Transaction a = Build.A.Transaction.TestObject; Transaction b = Build.A.Transaction.TestObject; Block block = Build.A.Block.WithTransactions(a, b).TestObject; NewBlockMessage newBlockMessage = new NewBlockMessage(); newBlockMessage.Block = block; NewBlockMessageSerializer serializer = new NewBlockMessageSerializer(); serializer.Serialize(byteBuffer, newBlockMessage); byte[] expectedBytes = Bytes.FromHexString("f90243f9023ff901f9a0ff483e972a04a9a62bb4b7d04ae403c615604e4090521ecc5bb7af67f71be09ca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a01afbbda2cfebd56d2d0d1288617084931eb82bc346c678cac5eeff7c7a078e36a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830f424080833d090080830f424083010203a02ba5557a4c62a513c7e56d1bf13373e0da6bec016755483e91589fe1c6d212e28800000000000003e8f840df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080c080"); byte[] bytes = byteBuffer.ReadAllBytes(); Assert.AreEqual(expectedBytes.ToHexString(), bytes.ToHexString(), "bytes"); } finally { byteBuffer.Release(); } }
public void Big_block_is_handled_when_framing_disabled() { Transaction[] a = Build.A.Transaction.TestObjectNTimes(64); Block block = Build.A.Block.WithTransactions(a).TestObject; NewBlockMessage newBlockMessage = new NewBlockMessage(); newBlockMessage.Block = block; NewBlockMessageSerializer newBlockMessageSerializer = new NewBlockMessageSerializer(); Packet packet = new Packet("eth", 7, newBlockMessageSerializer.Serialize(newBlockMessage)); _input.WriteByte(packet.PacketType); _input.WriteBytes(packet.Data); ZeroPacketSplitterTestWrapper packetSplitter = new ZeroPacketSplitterTestWrapper(); packetSplitter.DisableFraming(); _output = packetSplitter.Encode(_input); byte[] outputBytes = new byte[_output.ReadableBytes]; _output.ReadBytes(outputBytes); string outputHex = outputBytes.ToHexString(false); TestContext.Out.WriteLine(outputHex); Assert.AreEqual("000a08c180000000000000000000000007f90a04f90a00f901f9a0ff483e972a04a9a62bb4b7d04ae403c615604e4090521ecc5bb7af67f71be09ca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0e56d912c1a3a6640cd5168501e756477c48037f73d7755074fed5c2b9ace030ba056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830f424080833d090080830f424083010203a02ba5557a4c62a513c7e56d1bf13373e0da6bec016755483e91589fe1c6d212e28800000000000003e8f90800df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080c0800000000000000000", outputHex); }
public void Roundtrip() { NewBlockMessage message = new NewBlockMessage(); message.TotalDifficulty = 131200; message.Block = Build.A.Block.Genesis.TestObject; NewBlockMessageSerializer serializer = new NewBlockMessageSerializer(); SerializerTester.TestZero(serializer, message, "f90205f901fef901f9a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830f424080833d090080830f424083010203a000000000000000000000000000000000000000000000000000000000000000008800000000000003e8c0c083020080"); }
public void Can_handle_new_block_message() { NewBlockMessage newBlockMessage = new NewBlockMessage(); newBlockMessage.Block = Build.A.Block.WithParent(_genesisBlock).TestObject; newBlockMessage.TotalDifficulty = _genesisBlock.Difficulty + newBlockMessage.Block.Difficulty; HandleIncomingStatusMessage(); HandleZeroMessage(newBlockMessage, Eth62MessageCode.NewBlock); _syncManager.Received().AddNewBlock( Arg.Is <Block>(b => b.Hash == newBlockMessage.Block.Hash), _handler); }
public void Should_disconnect_peer_sending_new_block_message_in_PoS() { NewBlockMessage newBlockMessage = new NewBlockMessage(); newBlockMessage.Block = Build.A.Block.WithParent(_genesisBlock).TestObject; newBlockMessage.TotalDifficulty = _genesisBlock.Difficulty + newBlockMessage.Block.Difficulty; _gossipPolicy.ShouldDisconnectGossipingNodes.Returns(true); HandleIncomingStatusMessage(); HandleZeroMessage(newBlockMessage, Eth62MessageCode.NewBlock); _session.Received().InitiateDisconnect(DisconnectReason.BreachOfProtocol, "NewBlock message received after FIRST_FINALIZED_BLOCK PoS block. Disconnecting Peer."); }
public void Roundtrip() { NewBlockMessage message = new NewBlockMessage(); message.TotalDifficulty = 131200; message.Block = Build.A.Block.Genesis.TestObject; NewBlockMessageSerializer serializer = new NewBlockMessageSerializer(); byte[] bytes = serializer.Serialize(message); NewBlockMessage deserialized = serializer.Deserialize(bytes); Assert.AreEqual(message.TotalDifficulty, deserialized.TotalDifficulty, "total difficulty"); Assert.AreEqual(message.Block.Hash, deserialized.Block.Hash, "hash"); }
public void Block_there_and_back(StackType inbound, StackType outbound, bool framingEnabled) { Transaction a = Build.A.Transaction.TestObject; Transaction b = Build.A.Transaction.TestObject; Block block = Build.A.Block.WithTransactions(a, b).TestObject; NewBlockMessage newBlockMessage = new NewBlockMessage(); newBlockMessage.Block = block; NewBlockMessageSerializer newBlockMessageSerializer = new NewBlockMessageSerializer(); byte[] data = newBlockMessageSerializer.Serialize(newBlockMessage); Packet packet = new Packet("eth", 7, data); Packet decoded = Run(packet, inbound, outbound, framingEnabled); }
public void Can_decode_blocks_message() { byte[] frame0 = Bytes.FromHexString("000400c580018205d200000000000000d28f76b794402bd97ba5a7dfa1b0e16307f905cef905caf901f9a0ff483e972a04a9a62bb4b7d04ae403c615604e4090521ecc5bb7af67f71be09ca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830f424080833d090080830f424083010203a02ba5557a4c62a513c7e56d1bf13373e0da6bec016755483e91589fe1c6d212e28800000000000003e8f903caf85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000016bdb36c022deba8d5329900da5c9a3b"); byte[] frame1 = Bytes.FromHexString("0001d2c280010000000000000000000083542b3751199587e9a0a0cad9b7e53600000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5c08000000000000000000000000000004827ebd3af739e872b59e6566c928933"); List <object> output = new List <object>(); FrameMerger frameMerger = new FrameMerger(); frameMerger.Decode(frame0, output); frameMerger.Decode(frame1, output); Packet packet = (Packet)output[0]; NewBlockMessageSerializer serializer = new NewBlockMessageSerializer(); NewBlockMessage helloMessage = serializer.Deserialize(packet.Data); Assert.AreEqual(10, helloMessage.Block.Transactions.Length); }
public void SendNewBlock(Block block) { if (Logger.IsTrace) { Logger.Trace($"OUT {Counter:D5} NewBlock to {Node:c}"); } if (block.TotalDifficulty == null) { throw new InvalidOperationException($"Trying to send a block {block.Hash} with null total difficulty"); } NewBlockMessage msg = new NewBlockMessage(); msg.Block = block; msg.TotalDifficulty = block.TotalDifficulty ?? 0; Send(msg); }
public void Roundtrip() { NewBlockMessage message = new NewBlockMessage(); message.TotalDifficulty = 131200; message.Block = Build.A.Block.Genesis.TestObject; NewBlockMessageSerializer serializer = new NewBlockMessageSerializer(); byte[] bytes = serializer.Serialize(message); byte[] expectedBytes = Bytes.FromHexString("f90205f901fef901f9a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830f424080833d090080830f424083010203a000000000000000000000000000000000000000000000000000000000000000008800000000000003e8c0c083020080"); Assert.AreEqual(expectedBytes.ToHexString(), bytes.ToHexString(), "bytes"); NewBlockMessage deserialized = serializer.Deserialize(bytes); Assert.AreEqual(message.TotalDifficulty, deserialized.TotalDifficulty, "total difficulty"); Assert.AreEqual(message.Block.Hash, deserialized.Block.Hash, "hash"); }
public void Two_frame_block_there_and_back(StackType inbound, StackType outbound, bool framingEnabled) { Transaction[] txs = Build.A.Transaction.SignedAndResolved().TestObjectNTimes(10); Block block = Build.A.Block.WithTransactions(txs).TestObject; NewBlockMessage newBlockMessage = new NewBlockMessage(); newBlockMessage.Block = block; NewBlockMessageSerializer newBlockMessageSerializer = new NewBlockMessageSerializer(); byte[] data = newBlockMessageSerializer.Serialize(newBlockMessage); Packet packet = new Packet("eth", 7, data); Packet decoded = Run(packet, inbound, outbound, framingEnabled); NewBlockMessage decodedMessage = newBlockMessageSerializer.Deserialize(decoded.Data); Assert.AreEqual(newBlockMessage.Block.Transactions.Length, decodedMessage.Block.Transactions.Length); }
public void Throws_if_adding_new_block_fails() { NewBlockMessage newBlockMessage = new NewBlockMessage(); newBlockMessage.Block = Build.A.Block.WithParent(_genesisBlock).TestObject; newBlockMessage.TotalDifficulty = _genesisBlock.Difficulty + newBlockMessage.Block.Difficulty; HandleIncomingStatusMessage(); IByteBuffer getBlockHeadersPacket = _svc.ZeroSerialize(newBlockMessage); getBlockHeadersPacket.ReadByte(); _syncManager.WhenForAnyArgs(w => w.AddNewBlock(null, _handler)).Do(ci => throw new Exception()); Assert.Throws <Exception>( () => _handler.HandleMessage( new ZeroPacket(getBlockHeadersPacket) { PacketType = Eth62MessageCode.NewBlock })); }
public void Big_block_is_handled_when_framing_enabled() { Transaction[] a = Build.A.Transaction.TestObjectNTimes(64); Block block = Build.A.Block.WithTransactions(a).TestObject; NewBlockMessage newBlockMessage = new NewBlockMessage(); newBlockMessage.Block = block; NewBlockMessageSerializer newBlockMessageSerializer = new NewBlockMessageSerializer(); Packet packet = new Packet("eth", 7, newBlockMessageSerializer.Serialize(newBlockMessage)); List <object> output = new List <object>(); PacketSplitter packetSplitter = new PacketSplitter(); packetSplitter.Encode(packet, output); Assert.AreEqual(3, output.Count); string outputHash = string.Concat(output.Cast <byte[]>().Select(o => o.ToHexString(false))); TestContext.Out.WriteLine(outputHash); Assert.AreEqual("000400c58001820a08000000000000000000000000000000000000000000000007f90a04f90a00f901f9a0ff483e972a04a9a62bb4b7d04ae403c615604e4090521ecc5bb7af67f71be09ca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830f424080833d090080830f424083010203a02ba5557a4c62a513c7e56d1bf13373e0da6bec016755483e91589fe1c6d212e28800000000000003e8f90800df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df8001825208940000000000000000000000000000000000000000000000000000000000000000000000000400c280010000000000000000000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df8001825208940000000000000000000000000000000000000000000000000000000000000000000000000208c280010000000000000000000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080df80018252089400000000000000000000000000000000000000000180808080c080000000000000000000000000000000000000000000000000", outputHash); }
public void Roundtrip2() { Transaction a = Build.A.Transaction.SignedAndResolved().TestObject; Transaction b = Build.A.Transaction.SignedAndResolved().TestObject; Transaction c = Build.A.Transaction.SignedAndResolved().TestObject; Transaction d = Build.A.Transaction.SignedAndResolved().TestObject; Transaction e = Build.A.Transaction.SignedAndResolved().TestObject; Transaction f = Build.A.Transaction.SignedAndResolved().TestObject; Block block = Build.A.Block.WithTransactions(a, b, c, d, e, f).TestObject; foreach (Transaction transaction in block.Transactions) { transaction.SenderAddress = null; } NewBlockMessage message = new NewBlockMessage(); message.Block = block; NewBlockMessageSerializer serializer = new NewBlockMessageSerializer(); SerializerTester.TestZero(serializer, message, "f9044af90446f901f9a0ff483e972a04a9a62bb4b7d04ae403c615604e4090521ecc5bb7af67f71be09ca01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0b8fe3489c99b3cfe741222974963cab3c8b74190d31e61876b12cc056ec9c816a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000830f424080833d090080830f424083010203a02ba5557a4c62a513c7e56d1bf13373e0da6bec016755483e91589fe1c6d212e28800000000000003e8f90246f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5f85f8001825208940000000000000000000000000000000000000000018025a0ac46223b1f2bb2c1a0397d2e44e0cf82b78a766b3035f6c34be06395db18a8e4a0379b8a0437094d9e1d0ae5c2511d1a4b2cb65be7974d6cbccd5370e14f2df3a5c080"); }
public void To_string() { NewBlockMessage newBlockMessage = new NewBlockMessage(); _ = newBlockMessage.ToString(); }