public void deserialize_block_headers()
 {
     var bitcoinSerializer = new BitcoinSerializer(NetworkParameters.ProdNet());
     using (var bais = new MemoryStream(Hex.Decode("f9beb4d9686561" +
             "646572730000000000520000005d4fab8101010000006fe28c0ab6f1b372c1a6a246ae6" +
             "3f74f931e8365e15a089c68d6190000000000982051fd1e4ba744bbbe680e1fee14677b" +
             "a1a3c3540bf7b1cdb606e857233e0e61bc6649ffff001d01e3629900")))
     {
         var headerMessage = (HeadersMessage)bitcoinSerializer.Deserialize(bais);
         var block = headerMessage.BlockHeaders.FirstOrDefault();
         block.Should().NotBeNull();
         block.HashAsString.Should().Be("00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048");
         block.Transactions.Should().BeEmpty();
     }
 }
 public void TestAddr()
 {
     var bs = new BitcoinSerializer(NetworkParameters.ProdNet());
     // the actual data from https://en.bitcoin.it/wiki/Protocol_specification#addr
     using (var bais = new MemoryStream(Hex.Decode("f9beb4d96164647200000000000000001f000000" +
                                                   "ed52399b01e215104d010000000000000000000000000000000000ffff0a000001208d")))
     {
         var a = (AddressMessage)bs.Deserialize(bais);
         Assert.AreEqual(1, a.Addresses.Count);
         var pa = a.Addresses[0];
         Assert.AreEqual(8333, pa.Port);
         Assert.AreEqual("10.0.0.1", pa.IpAddress.ToString());
     }
 }
        public void TestVerack()
        {
            var bitcoinSerializer = new BitcoinSerializer(NetworkParameters.ProdNet());

            using (var memoryStream = new MemoryStream(Hex.Decode(ConstantVersionAck)))
            {
                var message = bitcoinSerializer.Deserialize(memoryStream) as VersionAckMessage;
                message.Should().NotBeNull();

            }
        }
        public void TestVersion()
        {
            var bs = new BitcoinSerializer(NetworkParameters.ProdNet());
            // the actual data from https://en.bitcoin.it/wiki/Protocol_specification#version
            using (var bais = new MemoryStream(Hex.Decode("f9 be b4 d9 76 65 72 73 69 6f 6e 00 00 00 00 00" +
                                                          "64 00 00 00 35 8d 49 32 62 ea 00 00 01 00 00 00" +
                                                          "00 00 00 00 11 b2 d0 50 00 00 00 00 01 00 00 00" +
                                                          "00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff" +
                                                          "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" +
                                                          "00 00 00 00 00 00 00 00 ff ff 00 00 00 00 00 00" +
                                                          "3b 2e b3 5d 8c e6 17 65 0f 2f 53 61 74 6f 73 68" +
                                                          "69 3a 30 2e 37 2e 32 2f c0 3e 03 00")))
            {
                var vm = (VersionMessage)bs.Deserialize(bais);
                Assert.AreEqual(60002, vm.ClientVersion);
                Assert.AreEqual(1355854353, vm.Time);
                Assert.AreEqual(1952535343, vm.BestHeight);

            }
        }
        public void TestAddress_Something()
        {
            var bitcoinSerializer = new BitcoinSerializer(NetworkParameters.ProdNet());

            using (var bais = new MemoryStream(_addrMessage))
            {
                var addressMessage = (AddressMessage)bitcoinSerializer.Deserialize(bais);
                addressMessage.Addresses.Count.Should().Be(1);
                var peerAddress = addressMessage.Addresses.FirstOrDefault();
                peerAddress.Should().NotBeNull();
                peerAddress.Port.Should().Be(8333);
            }
        }