P2SH Test
authorCryptoManiac <balthazar@yandex.ru>
Mon, 24 Aug 2015 02:44:37 +0000 (05:44 +0300)
committerCryptoManiac <balthazar@yandex.ru>
Mon, 24 Aug 2015 02:44:37 +0000 (05:44 +0300)
NovacoinTest/Program.cs

index 95a0706..0fc0176 100644 (file)
@@ -195,14 +195,26 @@ namespace NovacoinTest
 
             // Script validation test
 
-            CTransaction txTo = new CTransaction(Interop.HexToArray("0100000078b4c95306340d96b77ec4ee9d42b31cadc2fab911e48d48c36274d516f226d5e85bbc512c010000006b483045022100c8df1fc17b6ea1355a39b92146ec67b3b53565e636e028010d3a8a87f6f805f202203888b9b74df03c3960773f2a81b2dfd1efb08bb036a8f3600bd24d5ed694cd5a0121030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4cffffffff364c640420de8fa77313475970bf09ce4d0b1f8eabb8f1d6ea49d90c85b202ee010000006b483045022100b651bf3a6835d714d2c990c742136d769258d0170c9aac24803b986050a8655b0220623651077ff14b0a9d61e30e30f2c15352f70491096f0ec655ae1c79a44e53aa0121030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4cffffffff7adbd5f2e521f567bfea2cb63e65d55e66c83563fe253464b75184a5e462043d000000006a4730440220183609f2b995993acc9df241aff722d48b9a731b0cd376212934565723ed81f00220737e7ce75ef39bdc061d0dcdba3ee24e43b899696a7c96803cee0a79e1f78ecb0121030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4cffffffff999eb03e00a41c2f9fde8865a554ceebbc48d30f4c8ba22dd88da8c9b46fa920030000006b483045022100ec1ab104ef086ba79b0f2611ebf1bfdd22a7a1020f6630fa1c6707546626e0db022056093d4048a999392185ccc735ef736a5497bd68f60b42e6c0c93ba770b54d010121030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4cffffffffc0543b86be257ddd85b014a76718a70fab9eaa3c477460e4ca187094d86f369c0500000069463043021f24275c72f952043174daf01d7f713f878625f0522124a3cab48a0a2e12604202201b47742e6697b0ebdd1e4ba49c74baf142a0228ad0e0ee847488994c9dce78470121030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4cffffffffe1793d4519147782293dd1db6d90e461265d91db2cc6889c37209394d42ad10d050000006a473044022018a0c3d73b2765d75380614ab36ee8e3c937080894a19166128b1e3357b208fb0220233c9609985f535547381431526867ad0255ec4969afe5c360544992ed6b3ed60121030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4cffffffff02e5420000000000001976a91457d84c814b14bd86bf32f106b733baa693db7dc788ac409c0000000000001976a91408c8768d5d6bf7c1d9609da4e766c3f1752247b188ac00000000"));
-            CTransaction txPrev = new CTransaction(Interop.HexToArray("0100000079755d53010000000000000000000000000000000000000000000000000000000000000000ffffffff0b03d26401062f503253482fffffffff1cb3250000000000001976a914a1876be00980e343d9fb60b8219e0e8345fc744b88ac7b2c0000000000001976a914549ff7e6fe90d762e2e51678bda26f54fbbfcce388ac4f380000000000001976a9146c923ed1d87738df97301892aca83ba6b262cc4d88acfecc0000000000001976a91458d438e17b2e9f09a79b3920c06e3fd4bdc4cb3788ac84e80000000000001976a914797d85f272d66990adc30a30974c5d643a5dab3f88acc85e0100000000001976a9149a430715e524e951ddd5d947614c6cd4b412ed5888ac4e850100000000001976a914ae0da10f13d51e66fe5559023a2a32ed15ca335f88ac1d180200000000001976a914e2431bf313ac865fd8f1289d1627cf9391fabd7788ac472c0200000000001976a914fcbe5b3267acfea71fe3d768597fdbe0b8a9b16488ace0af0200000000001976a91498facbedc6424820a79c381fdd3c6e7c4389dc3888ac6cbb0200000000001976a9140c3a1469e5088100f11ec56b77fdeba61c25650c88acb8ec0200000000001976a914d99b39f6d1e06c1e2292eb6786188e193c5dec5988acb33c0300000000001976a9141b49aedc9ed1026722b1686e1322be08b998acfe88acca620300000000001976a914753cf85eef5fd49cc9694b67f3ed366508d0562488acc06f0300000000001976a914c157ab891e5f8dfe37a8e7598b53a646eed4028888acb59c0400000000001976a914cad1890de0e59796e501131dc11bd31a6acf96b488ac49070500000000001976a914c7b6639b55215e5d17590f3b5df46ad7ab37ee6d88ac34b20500000000001976a914a8eaab473a06570cafdf2aa44d976d09cc29814d88ac23db0600000000001976a914407356864b5e1b3df8a863d678183140be6ef17588acb55e0700000000001976a914037a31012e8e1962e251c0432d9258058326cdcf88ac278f0800000000001976a914e0e70b5b3192dd3e418642055a50840a19ffcf7088acccad0800000000001976a914640ebcbda496cc9e4fdb2281aeecaa00691007d288ac85ef0800000000001976a91451978f1d2ad964c556127fdb9e201e31a6ca474d88ac45790d00000000001976a9148c0b235018aa2a8f8b884e5fad1e1d1fce4b6cb288aca5a01500000000001976a914b1c9131340b7dbcfc060d977200c43686bcb73f188ac4dce1700000000001976a914684d742a36d06ca1bce3560b00135ca1432b984288ac2dac0000000000004341043b253cc0b5c8ce26f24b84bb955bec955cbb4643f19ab7ea073884f22874abdafc42040b97efec3c9eeb29ce69022a96cc1772f8bc805f78af0d3dc5c441db5fac00000000000000002a6a284d9ca0d38f66957fa8dd5de67fa23034284a51d669ee34b0608e060f56f4dd93000000000200000000000000"));
+            Console.WriteLine("--- Pay-to-PubkeyHash test ---");
+
+            var txTo = new CTransaction(Interop.HexToArray("0100000078b4c95306340d96b77ec4ee9d42b31cadc2fab911e48d48c36274d516f226d5e85bbc512c010000006b483045022100c8df1fc17b6ea1355a39b92146ec67b3b53565e636e028010d3a8a87f6f805f202203888b9b74df03c3960773f2a81b2dfd1efb08bb036a8f3600bd24d5ed694cd5a0121030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4cffffffff364c640420de8fa77313475970bf09ce4d0b1f8eabb8f1d6ea49d90c85b202ee010000006b483045022100b651bf3a6835d714d2c990c742136d769258d0170c9aac24803b986050a8655b0220623651077ff14b0a9d61e30e30f2c15352f70491096f0ec655ae1c79a44e53aa0121030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4cffffffff7adbd5f2e521f567bfea2cb63e65d55e66c83563fe253464b75184a5e462043d000000006a4730440220183609f2b995993acc9df241aff722d48b9a731b0cd376212934565723ed81f00220737e7ce75ef39bdc061d0dcdba3ee24e43b899696a7c96803cee0a79e1f78ecb0121030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4cffffffff999eb03e00a41c2f9fde8865a554ceebbc48d30f4c8ba22dd88da8c9b46fa920030000006b483045022100ec1ab104ef086ba79b0f2611ebf1bfdd22a7a1020f6630fa1c6707546626e0db022056093d4048a999392185ccc735ef736a5497bd68f60b42e6c0c93ba770b54d010121030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4cffffffffc0543b86be257ddd85b014a76718a70fab9eaa3c477460e4ca187094d86f369c0500000069463043021f24275c72f952043174daf01d7f713f878625f0522124a3cab48a0a2e12604202201b47742e6697b0ebdd1e4ba49c74baf142a0228ad0e0ee847488994c9dce78470121030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4cffffffffe1793d4519147782293dd1db6d90e461265d91db2cc6889c37209394d42ad10d050000006a473044022018a0c3d73b2765d75380614ab36ee8e3c937080894a19166128b1e3357b208fb0220233c9609985f535547381431526867ad0255ec4969afe5c360544992ed6b3ed60121030dd13e6d3c63fa10cc0b6bf968fbbfcb9a988b333813b1f22d04fa60e344bc4cffffffff02e5420000000000001976a91457d84c814b14bd86bf32f106b733baa693db7dc788ac409c0000000000001976a91408c8768d5d6bf7c1d9609da4e766c3f1752247b188ac00000000"));
+            var txPrev = new CTransaction(Interop.HexToArray("0100000079755d53010000000000000000000000000000000000000000000000000000000000000000ffffffff0b03d26401062f503253482fffffffff1cb3250000000000001976a914a1876be00980e343d9fb60b8219e0e8345fc744b88ac7b2c0000000000001976a914549ff7e6fe90d762e2e51678bda26f54fbbfcce388ac4f380000000000001976a9146c923ed1d87738df97301892aca83ba6b262cc4d88acfecc0000000000001976a91458d438e17b2e9f09a79b3920c06e3fd4bdc4cb3788ac84e80000000000001976a914797d85f272d66990adc30a30974c5d643a5dab3f88acc85e0100000000001976a9149a430715e524e951ddd5d947614c6cd4b412ed5888ac4e850100000000001976a914ae0da10f13d51e66fe5559023a2a32ed15ca335f88ac1d180200000000001976a914e2431bf313ac865fd8f1289d1627cf9391fabd7788ac472c0200000000001976a914fcbe5b3267acfea71fe3d768597fdbe0b8a9b16488ace0af0200000000001976a91498facbedc6424820a79c381fdd3c6e7c4389dc3888ac6cbb0200000000001976a9140c3a1469e5088100f11ec56b77fdeba61c25650c88acb8ec0200000000001976a914d99b39f6d1e06c1e2292eb6786188e193c5dec5988acb33c0300000000001976a9141b49aedc9ed1026722b1686e1322be08b998acfe88acca620300000000001976a914753cf85eef5fd49cc9694b67f3ed366508d0562488acc06f0300000000001976a914c157ab891e5f8dfe37a8e7598b53a646eed4028888acb59c0400000000001976a914cad1890de0e59796e501131dc11bd31a6acf96b488ac49070500000000001976a914c7b6639b55215e5d17590f3b5df46ad7ab37ee6d88ac34b20500000000001976a914a8eaab473a06570cafdf2aa44d976d09cc29814d88ac23db0600000000001976a914407356864b5e1b3df8a863d678183140be6ef17588acb55e0700000000001976a914037a31012e8e1962e251c0432d9258058326cdcf88ac278f0800000000001976a914e0e70b5b3192dd3e418642055a50840a19ffcf7088acccad0800000000001976a914640ebcbda496cc9e4fdb2281aeecaa00691007d288ac85ef0800000000001976a91451978f1d2ad964c556127fdb9e201e31a6ca474d88ac45790d00000000001976a9148c0b235018aa2a8f8b884e5fad1e1d1fce4b6cb288aca5a01500000000001976a914b1c9131340b7dbcfc060d977200c43686bcb73f188ac4dce1700000000001976a914684d742a36d06ca1bce3560b00135ca1432b984288ac2dac0000000000004341043b253cc0b5c8ce26f24b84bb955bec955cbb4643f19ab7ea073884f22874abdafc42040b97efec3c9eeb29ce69022a96cc1772f8bc805f78af0d3dc5c441db5fac00000000000000002a6a284d9ca0d38f66957fa8dd5de67fa23034284a51d669ee34b0608e060f56f4dd93000000000200000000000000"));
 
             Console.WriteLine("scriptPubKey: {0}", txPrev.vout[1].scriptPubKey);
             Console.WriteLine("scriptSig: {0}\n", txTo.vin[0].scriptSig);
 
             Console.WriteLine("Script validation result: {0}", ScriptCode.VerifyScript(txTo.vin[0].scriptSig, txPrev.vout[1].scriptPubKey, txTo, 0, (int)scriptflag.SCRIPT_VERIFY_P2SH, 0));
 
+            Console.WriteLine("--- Pay-to-ScriptHash test ---");
+
+            var txFrom = new CTransaction(Interop.HexToArray("010000009c2011520173dc34b7fba54bcc9bd6e08e5b112fa69320879b7e43cb4f4f1992a14571a43c140000006a473044022031966a63cbf90d4f8aea72c14a4d6762446b4985963f537ca5c3ddf5a110a7d702205e49f2fee16a4cf8da1ab26ddd819fb127d00b63409878a989b3b86d41d88e250121023842ed96bb829f62559dca2c94fbd146e76597695f3f967cb789216c7fa5adc3ffffffff02ec36f910000000001976a9140fa4d848a8faa1097a3f186ce5edcaed5ee260ee88ac20a107000000000017a91482cc61dbc6840b36e8ed42c6e9c16425a3bad3508700000000"));
+            var txToP2SH = new CTransaction(Interop.HexToArray("010000004c23115201d33e0feda63734135abcae51dd91a7d905b335ba0da1ac02cc02680c2d33096501000000dc00493046022100d449e5c7bd81db06f47546538b18d92092b0cb0210f549022db3880d569ab34202210083f7f93ed9f30c44bfb19541c4cccfb54e1c7004611417f9cb785e0def1a6ff90148304502207c44b870abfb35f58cbe48283010417d009101100bd18ba491b9c9783b822eb40221009aa4d966b7ef6dec66cc56f53fc352b087761bd1807b05c01897a74697cb31f9014752210205be3a707f5ff2a547a00466b729454ef052c3e83029f21f39d1052e1441ac74210373c1aee17cfd9fda5df7179a105236c18ab79fab8050ebc312fc95d580c209d452aeffffffff01107a0700000000001976a91420d9eab07eb7d1a0b610166009194a8d3d6eb2fd88ac00000000"));
+
+            Console.WriteLine("scriptPubKey: {0}", txFrom.vout[1].scriptPubKey);
+            Console.WriteLine("scriptSig: {0}\n", txToP2SH.vin[0].scriptSig);
+
+            Console.WriteLine("Script validation result: {0}", ScriptCode.VerifyScript(txToP2SH.vin[0].scriptSig, txFrom.vout[1].scriptPubKey, txToP2SH, 0, (int)scriptflag.SCRIPT_VERIFY_P2SH, 0));
+
 
             Console.WriteLine("Testing the unserialization of very big block...");