Exemplo n.º 1
0
 public void ReadWrite(BitcoinStream stream)
 {
     var len = new VarInt((ulong)_Bytes.Length);
      stream.ReadWrite(ref len);
     if(!stream.Serializing)
         _Bytes = new byte[len.ToLong()];
     stream.ReadWrite(ref _Bytes);
 }
Exemplo n.º 2
0
 private void ReadWriteArray(ref byte[][] data)
 {
     if (data == null && this.Serializing)
     {
         throw new ArgumentNullException("Impossible to serialize a null array");
     }
     if (this.Serializing)
     {
         var len = data == null ? 0 : (ulong)data.Length;
         if (len > (uint)MaxArraySize)
         {
             throw new ArgumentOutOfRangeException("Array size too big");
         }
         VarInt.StaticWrite(this, len);
         if (len == 0)
         {
             return;
         }
     }
     else
     {
         var len = VarInt.StaticRead(this);
         if (len > (uint)this.MaxArraySize)
         {
             throw new ArgumentOutOfRangeException("Array size too big");
         }
         data = new byte[len][];
     }
     for (int i = 0; i < data.Length; i++)
     {
         byte[] obj = data[i];
         var    len = VarInt.StaticRead(this);
         if (len > (uint)this.MaxArraySize)
         {
             throw new ArgumentOutOfRangeException("Array size too big");
         }
         obj = new byte[len];
         ReadWrite(ref obj);
         data[i] = obj;
     }
 }
        public void ReadWrite(ref TxOutList list)
        {
            int listLen = 0;

            if (Serializing)
            {
                var len = list == null ? 0 : (ulong)list.Count;
                if (len > (uint)MaxArraySize)
                {
                    throw new ArgumentOutOfRangeException("Array size too big");
                }
                VarInt.StaticWrite(this, len);
                if (len == 0)
                {
                    return;
                }
                listLen = (int)len;
                foreach (var obj in list)
                {
                    ReadWrite(obj);
                }
            }
            else
            {
                var len = VarInt.StaticRead(this);
                if (len > (uint)MaxArraySize)
                {
                    throw new ArgumentOutOfRangeException("Array size too big");
                }
                listLen = (int)len;
                list    = new TxOutList(listLen);
                for (int i = 0; i < listLen; i++)
                {
                    TxOut obj = default;
                    ReadWrite(ref obj);
                    list.Add(obj);
                }
            }
        }
Exemplo n.º 4
0
        private void ReadWriteArray <T>(ref T[] data) where T : IBitcoinSerializable
        {
            if (data == null && Serializing)
            {
                throw new ArgumentNullException("Impossible to serialize a null array");
            }

            if (Serializing)
            {
                var len = data == null ? 0 : (ulong)data.Length;
                if (len > (uint)MaxArraySize)
                {
                    throw new ArgumentOutOfRangeException("Array size too big");
                }
                VarInt.StaticWrite(this, len);
                if (len == 0)
                {
                    return;
                }
            }
            else
            {
                var len = VarInt.StaticRead(this);
                if (len > (uint)MaxArraySize)
                {
                    throw new ArgumentOutOfRangeException("Array size too big");
                }
                data = new T[len];
            }
            for (int i = 0; i < data.Length; i++)
            {
                T obj = data[i];
                ReadWrite(ref obj);
                data[i] = obj;
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Serialize the filter as a array of bytes using [varint(N) | data].
        /// </summary>
        /// <returns>A array of bytes with the serialized filter data.</returns>
        public byte[] ToBytes()
        {
            var n = new VarInt((ulong)N).ToBytes();

            return(n.Concat(this.Data));
        }
Exemplo n.º 6
0
 public void ReadWrite(BitcoinStream stream)
 {
     stream.ReadWrite(ref nVersion);
     stream.ReadWrite(ref hashPrevBlock);
     stream.ReadWrite(ref hashMerkleRoot);
     stream.ReadWrite(ref nTime);
     stream.ReadWrite(ref nBits);
     stream.ReadWrite(ref nNonce);
     if(stream.NetworkFormat)
     {
         VarInt txCount = new VarInt(0);
         stream.ReadWrite(ref txCount);
     }
 }