public void TestIsMultiSigContract() { ECPoint[] publicKeys1 = new ECPoint[20]; for (int i = 0; i < 20; i++) { byte[] privateKey1 = new byte[32]; RandomNumberGenerator rng1 = RandomNumberGenerator.Create(); rng1.GetBytes(privateKey1); KeyPair key1 = new KeyPair(privateKey1); publicKeys1[i] = key1.PublicKey; } byte[] script1 = Contract.CreateMultiSigRedeemScript(20, publicKeys1); Assert.AreEqual(true, Neo.SmartContract.Helper.IsMultiSigContract(script1, out _, out ECPoint[] p1)); CollectionAssert.AreEqual(publicKeys1.OrderBy(p => p).ToArray(), p1); Neo.Cryptography.ECC.ECPoint[] publicKeys2 = new Neo.Cryptography.ECC.ECPoint[256]; for (int i = 0; i < 256; i++) { byte[] privateKey2 = new byte[32]; RandomNumberGenerator rng2 = RandomNumberGenerator.Create(); rng2.GetBytes(privateKey2); KeyPair key2 = new KeyPair(privateKey2); publicKeys2[i] = key2.PublicKey; } byte[] script2 = Contract.CreateMultiSigRedeemScript(256, publicKeys2); Assert.AreEqual(true, Neo.SmartContract.Helper.IsMultiSigContract(script2, out _, out ECPoint[] p2)); CollectionAssert.AreEqual(publicKeys2.OrderBy(p => p).ToArray(), p2); Neo.Cryptography.ECC.ECPoint[] publicKeys3 = new Neo.Cryptography.ECC.ECPoint[3]; for (int i = 0; i < 3; i++) { byte[] privateKey3 = new byte[32]; RandomNumberGenerator rng3 = RandomNumberGenerator.Create(); rng3.GetBytes(privateKey3); KeyPair key3 = new KeyPair(privateKey3); publicKeys3[i] = key3.PublicKey; } byte[] script3 = Contract.CreateMultiSigRedeemScript(3, publicKeys3); Assert.AreEqual(true, Neo.SmartContract.Helper.IsMultiSigContract(script3, out _, out ECPoint[] p3)); CollectionAssert.AreEqual(publicKeys3.OrderBy(p => p).ToArray(), p3); Neo.Cryptography.ECC.ECPoint[] publicKeys4 = new Neo.Cryptography.ECC.ECPoint[3]; for (int i = 0; i < 3; i++) { byte[] privateKey4 = new byte[32]; RandomNumberGenerator rng4 = RandomNumberGenerator.Create(); rng4.GetBytes(privateKey4); KeyPair key4 = new KeyPair(privateKey4); publicKeys4[i] = key4.PublicKey; } byte[] script4 = Contract.CreateMultiSigRedeemScript(3, publicKeys4); script4[script4.Length - 1] = 0x00; Assert.AreEqual(false, Neo.SmartContract.Helper.IsMultiSigContract(script4, out _, out ECPoint[] p4)); Assert.IsNull(p4); }
public void TestIsStandardContract() { byte[] privateKey1 = new byte[32]; RandomNumberGenerator rng1 = RandomNumberGenerator.Create(); rng1.GetBytes(privateKey1); KeyPair key1 = new KeyPair(privateKey1); byte[] script1 = Contract.CreateSignatureRedeemScript(key1.PublicKey); Assert.AreEqual(true, Neo.SmartContract.Helper.IsStandardContract(script1)); Neo.Cryptography.ECC.ECPoint[] publicKeys2 = new Neo.Cryptography.ECC.ECPoint[3]; for (int i = 0; i < 3; i++) { byte[] privateKey2 = new byte[32]; RandomNumberGenerator rng2 = RandomNumberGenerator.Create(); rng2.GetBytes(privateKey2); KeyPair key2 = new KeyPair(privateKey2); publicKeys2[i] = key2.PublicKey; } byte[] script2 = Contract.CreateMultiSigRedeemScript(3, publicKeys2); Assert.AreEqual(true, Neo.SmartContract.Helper.IsStandardContract(script2)); }