コード例 #1
0
        public Script ReadWrite(Script data)
        {
            if (Serializing)
            {
                var bytes = data == null?Script.Empty.ToBytes(true) : data.ToBytes(true);

                ReadWriteAsVarString(ref bytes);
                return(data);
            }
            else
            {
                var varString = new VarString();
                varString.ReadWrite(this);
                return(Script.FromBytesUnsafe(varString.GetString(true)));
            }
        }
コード例 #2
0
        public void ReadWrite(BitcoinStream stream)
        {
            if (stream.Serializing)
            {
                var ms = new MemoryStream();
                var bs = new BitcoinStream(ms, true)
                {
                    Type = SerializationType.Hash
                };

                if (KeyId != null)
                {
                    stream.ReadWrite(new uint160(KeyId.ToBytes()));
                }
                else
                {
                    bs.ReadWriteAsCompactVarInt(ref Height);
                    bs.ReadWriteAsCompactVarInt(ref Index);
                }

                var packBytes = ms.ToArray();
                stream.ReadWriteAsVarString(ref packBytes);
            }
            else
            {
                var packVar = new VarString();
                stream.ReadWrite(ref packVar);

                var bs = new BitcoinStream(packVar.GetString());

                if (packVar.Length >= 20)
                {
                    var keyHash = uint160.Zero;
                    stream.ReadWrite(ref keyHash);
                    KeyId = new KeyId(keyHash);
                }
                else
                {
                    bs.ReadWriteAsCompactVarInt(ref Height);
                    bs.ReadWriteAsCompactVarInt(ref Index);
                }
            }
        }
コード例 #3
0
			public Raw(byte[] data)
			{
				var str = new VarString();
				str.FromBytes(data);
				_Data = str.GetString(true);
			}