Solver: P2SH tests
[NovacoinLibrary.git] / NovacoinTest / Program.cs
index 71c7741..ed0213a 100644 (file)
@@ -112,11 +112,62 @@ namespace NovacoinTest
             txnouttype typeRet;
             IList<IEnumerable<byte>> solutions;
 
-            Console.WriteLine("scriptPubKey solved: {0}", ScriptCode.Solver(scriptPubKey, out typeRet, out solutions));
-            Console.WriteLine("scriptPubKey address: {0}", new CPubKey(solutions.First()).KeyID.ToString());
+            Console.WriteLine("\nscriptPubKey solved: {0}", ScriptCode.Solver(scriptPubKey, out typeRet, out solutions));
+            Console.WriteLine("scriptPubKey address: {0}\n", new CPubKey(solutions.First()).KeyID.ToString());
 
             Console.WriteLine("scriptPubKeyHash solved: {0}", ScriptCode.Solver(scriptPubKeyHash, out typeRet, out solutions));
-            Console.WriteLine("scriptPubKeyHash address: {0}", new CKeyID(new Hash160(solutions.First())).ToString());
+            Console.WriteLine("scriptPubKeyHash address: {0}\n", new CKeyID(new Hash160(solutions.First())).ToString());
+
+            /// Some SetDestination tests
+            CScript scriptDestinationTest = new CScript();
+
+            
+            Console.WriteLine("Creating and decoding new destination with {0} as public key.\n", keyPair1.PubKey.ToString());
+
+            Console.WriteLine("Pay-to-Pubkey:");
+
+            scriptDestinationTest.SetDestination(keyPair1.PubKey);
+
+            Console.WriteLine("\tscriptDestinationTest solved: {0}", ScriptCode.Solver(scriptDestinationTest, out typeRet, out solutions));
+            Console.WriteLine("\tscriptDestinationTest address: {0}\n", new CPubKey(solutions.First()).KeyID.ToString());
+
+            Console.WriteLine("Pay-to-PubkeyHash:");
+
+            scriptDestinationTest.SetDestination(keyPair1.PubKey.KeyID);
+
+            Console.WriteLine("\tscriptDestinationTest solved: {0}", ScriptCode.Solver(scriptDestinationTest, out typeRet, out solutions));
+            Console.WriteLine("\tscriptDestinationTest address: {0}\n", new CKeyID(new Hash160(solutions.First())).ToString());
+
+            Console.WriteLine("Multisig with three random keys:");
+
+            CKeyPair k1 = new CKeyPair(), k2 = new CKeyPair(), k3 = new CKeyPair();
+
+            scriptDestinationTest.SetMultiSig(2, new CPubKey[] { k1.PubKey, k2.PubKey, k3.PubKey });
+
+            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{0}", (new CPubKey(keyBytes)).KeyID.ToString());
+            }
+
+            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();
         }