Solver: P2SH tests
authorCryptoManiac <balthazar@yandex.ru>
Thu, 20 Aug 2015 21:50:33 +0000 (00:50 +0300)
committerCryptoManiac <balthazar@yandex.ru>
Thu, 20 Aug 2015 21:50:33 +0000 (00:50 +0300)
Novacoin/CScript.cs
NovacoinTest/Program.cs

index bb0e5a5..835c53d 100644 (file)
@@ -415,6 +415,7 @@ namespace Novacoin
             {
                 PushData(key.PublicBytes.ToList());
             }
+
             AddOp(ScriptCode.EncodeOP_N(keys.Count()));
             AddOp(opcodetype.OP_CHECKMULTISIG);
         }
@@ -427,6 +428,11 @@ namespace Novacoin
             get { return codeBytes; }
         }
 
+        public CScriptID ScriptID
+        {
+            get { return new CScriptID(Hash160.Compute160(codeBytes)); }
+        }
+
         /// <summary>
         /// Disassemble current script code
         /// </summary>
index eca8cbd..ed0213a 100644 (file)
@@ -143,18 +143,31 @@ namespace NovacoinTest
             CKeyPair k1 = new CKeyPair(), k2 = new CKeyPair(), k3 = new CKeyPair();
 
             scriptDestinationTest.SetMultiSig(2, new CPubKey[] { k1.PubKey, k2.PubKey, k3.PubKey });
-            Console.WriteLine("\tscriptDestinationTest solved: {0}", ScriptCode.Solver(scriptDestinationTest, out typeRet, out solutions));
-            Console.WriteLine("\tscriptDestinationTest addresses: \n");
+
+            Console.WriteLine("\nscriptDestinationTest solved: {0}", ScriptCode.Solver(scriptDestinationTest, out typeRet, out solutions));
+            Console.WriteLine("scriptDestinationTest addresses: \n");
 
             int nRequired = solutions.First().First();
             int nKeys = solutions.Last().First();
 
             foreach (IEnumerable<byte> keyBytes in solutions.Skip(1).Take(nKeys))
             {
-                Console.WriteLine("\t\t{0}", (new CPubKey(keyBytes)).KeyID.ToString());
+                Console.WriteLine("\t{0}", (new CPubKey(keyBytes)).KeyID.ToString());
             }
 
-            Console.WriteLine("\n\tnRequired={0}", nRequired);
+            Console.WriteLine("\nnRequired={0}\n", nRequired);
+
+            Console.WriteLine("Script code: \n\n{0}", scriptDestinationTest.ToString());
+
+            Console.WriteLine("\nPay-to-ScriptHash with same script:\n");
+
+            CScript scriptP2SHTest = new CScript();
+            scriptP2SHTest.SetDestination(scriptDestinationTest.ScriptID);
+
+            Console.WriteLine("\tscriptP2SHTest solved: {0}", ScriptCode.Solver(scriptP2SHTest, out typeRet, out solutions));
+            Console.WriteLine("\tscriptP2SHTest address: {0}\n", new CScriptID(new Hash160(solutions.First())).ToString());
+
+
 
             Console.ReadLine();
         }