Exemplo n.º 1
0
        public void TestDeserialize()
        {
            byte[] privateKey = new byte[32];
            using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
            {
                rng.GetBytes(privateKey);
            }
            KeyPair key = new KeyPair(privateKey);
            VerificationContract contract1 = new VerificationContract
            {
                Script        = Neo.SmartContract.Contract.CreateSignatureRedeemScript(key.PublicKey),
                ParameterList = new[] { ContractParameterType.Signature }
            };
            MemoryStream stream = new MemoryStream();
            BinaryWriter writer = new BinaryWriter(stream);
            BinaryReader reader = new BinaryReader(stream);

            contract1.Serialize(writer);
            stream.Seek(0, SeekOrigin.Begin);
            VerificationContract contract2 = new VerificationContract();

            contract2.Deserialize(reader);
            Assert.AreEqual(Encoding.Default.GetString(contract2.Script), Encoding.Default.GetString(contract1.Script));
            Assert.AreEqual(1, contract2.ParameterList.Length);
            Assert.AreEqual(ContractParameterType.Signature, contract2.ParameterList[0]);
        }
Exemplo n.º 2
0
        public void TestSerialize()
        {
            byte[] privateKey = new byte[32];
            using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
            {
                rng.GetBytes(privateKey);
            }
            KeyPair key = new KeyPair(privateKey);
            VerificationContract contract1 = new VerificationContract
            {
                Script        = Neo.SmartContract.Contract.CreateSignatureRedeemScript(key.PublicKey),
                ParameterList = new[] { ContractParameterType.Signature }
            };
            MemoryStream stream = new MemoryStream();
            BinaryWriter writer = new BinaryWriter(stream);

            contract1.Serialize(writer);
            stream.Seek(0, SeekOrigin.Begin);
            byte[] byteArray = new byte[stream.Length];
            stream.Read(byteArray, 0, (int)stream.Length);
            byte[] script = Neo.SmartContract.Contract.CreateSignatureRedeemScript(key.PublicKey);
            byte[] result = new byte[62];
            result[20] = 0x01;
            result[21] = 0x00;
            result[22] = 0x27;
            Array.Copy(script, 0, result, 23, 39);
            Assert.AreEqual(Encoding.Default.GetString(result), Encoding.Default.GetString(byteArray));
        }