Litecoin: Fix various tests

This commit is contained in:
Adrian Gallagher 2018-02-13 13:02:09 -08:00
parent 09e4e7254f
commit a1e47d9f0e
No known key found for this signature in database
GPG Key ID: FE3348877809386C
43 changed files with 234 additions and 210 deletions

View File

@ -14,6 +14,9 @@
// a block off the wire, but before we can relay the block on to peers using
// compact block relay.
// Litecoin uses block height 878439, hash 0babe680f55a55d54339511226755f0837261da89a4e78eba4d6436a63026df8
// which contains 3808 transactions.
static void DeserializeBlockTest(benchmark::Bench& bench)
{
CDataStream stream(benchmark::data::block413567, SER_NETWORK, PROTOCOL_VERSION);

Binary file not shown.

View File

@ -1,7 +1,7 @@
[
[
"LdwLvykqj2nUH3MWcut6mtjHxVxVFC7st5",
"cd463dbc6f8076c7021f2766b36ea7e19c5c9e2e",
"LbRY3MfWxhv1W88P3DcH94WLpDGZ3qV8aP",
"76a914b1b2c8ecd1a48ef911bd5e6385a8950d3255937588ac",
{
"chain": "main",
"isPrivkey": false
@ -16,16 +16,16 @@
}
],
[
"mmCKZS7toE69QgXNs1JZcjW6LFj8LfUbz6",
"3e4a9a4a79dcad8800b6cfcdf102bf98064b7454",
"mphsD9aLCQ9kpysu4ecCwAvHWYcsbt31u9",
"76a91464c97697289c7f654ceeab26066537489238d32788ac",
{
"chain": "test",
"isPrivkey": false
}
],
[
"2N5X5FB9Cro2qW4Dww1pEKYXMhQt8PK6KHM",
"86a0ddc5ce64594f0b84d96596657e1f5e0af7f6",
"mphsD9aLCQ9kpysu4ecCwAvHWYcsbt31u9",
"76a91464c97697289c7f654ceeab26066537489238d32788ac",
{
"chain": "test",
"isPrivkey": false
@ -48,8 +48,8 @@
}
],
[
"T92ej9rAJ2HEKBtXKpcQEB88KMjBUW43uVxzwgAAYmm97CbDfuB2",
"b257a0d8b63aac2cbac1f6b57c73ee6313650a000ac895456f633e05e1f276b1",
"6w1p6pcTBjzx8cwm4otGNWjs6U7JGp73U2S4PjYFEdssBqb3ozw",
"f94cfafdc6a1291f3379f7527465f391d932853c0caf452b1d3d5ce26d47d3da",
{
"chain": "regtest",
"isPrivkey": false
@ -73,8 +73,8 @@
}
],
[
"93UCtAocH3kKPwoqEcjNGR1qi9MLkhQio2vMjWCMdEsBNwTKszg",
"f8270343a5cc4936c0f304520700b9a9f443dddeb5b2bfa9ef8414d126e9835b",
"T8d1EGiyxUNiMqheh7siBtbAxnpy5Scq9ACMH8gtHXvWZsJcHrxn",
"a62d79737a443b898b77bec8e98bc6c27acd9c8b4a222e0c0f2ca01591ff38fc",
{
"chain": "main",
"isCompressed": true,
@ -82,8 +82,8 @@
}
],
[
"cU3MMfRXJpVuVXKdkqn1x8cqEHz4AfyBmVFj7CvBUdApAZYo6Lj8",
"c0bbf61af02667b9a7c172c2d4bfa64ac9d4553f7ae19fb295c06e77cc799296",
"92Uz6EVHCNXUu77uKfedTaGor28x7qaERbNFG3vvnt7xML19K9P",
"7639e3b1907cf81533da2ed547f3ad3c122456afc47a00dbfbc795aa07e0fb01",
{
"chain": "test",
"isCompressed": false,
@ -91,8 +91,8 @@
}
],
[
"LWZR9ybwmT8vSXP6tmrBX4b6nE9o94AjQG",
"7c57bc50a38d8377ad55260f29f2c8619846ef08",
"92Uz6EVHCNXUu77uKfedTaGor28x7qaERbNFG3vvnt7xML19K9P",
"7639e3b1907cf81533da2ed547f3ad3c122456afc47a00dbfbc795aa07e0fb01",
{
"chain": "test",
"isCompressed": true,
@ -109,8 +109,8 @@
}
],
[
"32wfwbXojzQN9vYFQGquFTt7sqKnB8Phyz",
"0dbdaf6928107d60299f5069367c4cf07fa9b6e5",
"cTToo8w9eJVfZSR8R5F8VzQ8rZb5oRwgABKbzer9g3HJqxfyj3ye",
"af7a53dbe5e1f9513e2f2620c58dff15730cebf3a9b560cbf4aaad2768d40fa4",
{
"chain": "signet",
"isCompressed": true,
@ -118,8 +118,8 @@
}
],
[
"mvJg85FLYqN7xAcZeFZRVg7pMbJ53BqKmy",
"a237653c5ae7e18e840d6463d380701ce3ba5035",
"cTToo8w9eJVfZSR8R5F8VzQ8rZb5oRwgABKbzer9g3HJqxfyj3ye",
"af7a53dbe5e1f9513e2f2620c58dff15730cebf3a9b560cbf4aaad2768d40fa4",
{
"chain": "regtest",
"isCompressed": false,
@ -127,8 +127,8 @@
}
],
[
"2NCGcqUHf4q4vE2MZD6bnaVzFUSKPM4WCDX",
"d0ade0e231a81794ed1baa081604de53ddd8b083",
"Laq1dYLSYPifTjCeT9DCr1Puiy7k7Ewy5B",
"76a914ab2b41b4206db6c39f74c25453dfa5ff90074e2688ac",
{
"chain": "regtest",
"isCompressed": true,
@ -145,8 +145,8 @@
}
],
[
"T5EAeSR4zfUGvNiA4iCVPpV8Gz6ZUGAT94bsBqTv3kd81hNQCgzY",
"40eab9b09d0469a7d9f84dae6bc5f98199e0b187fe4e74013cab437f9306ea00",
"mhoT6gsCtPmeY5m5S93FPv5y11Zft7mDAv",
"76a914190ef38c041b5ae687f2ef20a6131e755e12a12188ac",
{
"chain": "main",
"isPrivkey": false,
@ -163,8 +163,8 @@
}
],
[
"cQFFjska277aBhcbCaEdBSixz1BXEgnLoGYECu9mKJip3GBco8CL",
"4f8210f4e6830d16fa8818d37fa9aed65664a20f3c41bfa5b502cdc8d1173dcb",
"6vfHCU94rDbNkXCid4iNw2aNbwYQrHch6ghjYfSpC8vMPK9CPjB",
"caadafa39dfa11d59f36b918a9b6ca057953f9eb2066796549d2d3a4124c273d",
{
"chain": "main",
"isPrivkey": false,
@ -172,8 +172,8 @@
}
],
[
"LWkdEB9SHUfuBiTvZofK2LqYE4RTTtUcqi",
"7e766382cb564021bcbc273e23569dcaed536ac6",
"T45iMqhBgU8Qoer7dhGQb5UhmwvAQZLZbuHYorkneyaACDmij5Cm",
"1ebb18d9365fde2e29c7ef8494ac1d284fb332f24a0243d59a8070332940f573",
{
"chain": "test",
"isPrivkey": false,
@ -181,8 +181,8 @@
}
],
[
"32cjrquumLmwSmBrNCbkU5UTUmtgetWqaL",
"0a290d74c272ab52dec1a87ce88e75d29c94fe5a",
"93DVKyFYwSN6wEo3E2fCrFPUp17FtrtNi2Lf7n4G3garFb16CRj",
"d6bca256b5abc5602ec2e1c121a08b0da2556587430bcf7e1898af2224885203",
{
"chain": "test",
"isPrivkey": false,
@ -190,8 +190,8 @@
}
],
[
"mtei3esVvHhww4Rw9FYnMdTUTVvbpWhLfF",
"901111ab28cf850a5b6846e94e8c0c4a505603a9",
"cTDVKtMGVYWTHCb1AFjmVbEbWjvKpKqKgMaR3QJxToMSQAhmCeTN",
"a81ca4e8f90181ec4b61b6a7eb998af17b2cb04de8a03b504b9e34c4c61db7d9",
{
"chain": "test",
"isPrivkey": false,
@ -199,8 +199,8 @@
}
],
[
"2N85CqWKWqfZ5Hc9qGXWmr5JKZzMqZCRDPM",
"a2a4c41bd7150d28aa730140cebf7aa5341e2619",
"LcCLxZSuwCMonMGeBcHqQ1SbsKyWKtVmBB",
"76a914ba2c4073e5355bfe37e06fdd9b42f644fb9ae76b88ac",
{
"chain": "test",
"isPrivkey": false,
@ -217,8 +217,8 @@
}
],
[
"T9xQZ1QYhGyYp7wzRQuLdfm1te8BwrnvWsibt6GXuK58Xoq2wryN",
"cdff0814191533898aa1e6291f2c77e1a1945a732f70b8f09aadc637e9241e59",
"mgpyL2ueFkKYo8DigPfqi9mGaXhTpBfXFK",
"76a9140e6079f1d5522fc3643b684854d2caeb9f80b79388ac",
{
"chain": "signet",
"isPrivkey": false,
@ -235,8 +235,8 @@
}
],
[
"cV7TW5gn8yJjrVy4mfYLDY1tfYN7o81tjeubEeqWxzyjdcU7Bv9F",
"e0af129330504deb99dd989339b96d77ce3782a852b8e61a4367394505abc3e0",
"6vNcAgpwLv5NVF4yNTSoi9Jsp6gWURmEnYJKVuYMumdG38s83fh",
"a4d20c8ade1d8af00ddb974c2f26207b21054d4a1f61c0615ca01a6b97ce7a28",
{
"chain": "signet",
"isPrivkey": false,
@ -244,8 +244,8 @@
}
],
[
"LVcGHJcTv1ctR6GLRXxR4SQSsycdmQ6pwZ",
"71e9734a1283f2368bbd5a397d3c7a22610b2958",
"T4Fe1n9xDKUHWVFNqcM9z6GwoQeDm53xBqjtf1jgp1tKVJsLZHnv",
"23d630aec25b8a1dcaddd2b02e1eae7a37e105d9b7e8201b697e99f11e23b05a",
{
"chain": "regtest",
"isPrivkey": false,
@ -253,8 +253,8 @@
}
],
[
"35CcFdsWEiXv4cuHjR8G54FYvrrDtm4WUm",
"268118c8299cd5d8d3b9561caaf8c94d4bd1af44",
"927W7aK3WFBvh4DQrC3rt7h9MyDTAysFkVtya7bFfmEmvQEHEQz",
"4572a355117fa704d8706ab21c0cae21624a563f36644f1363f101294f939906",
{
"chain": "regtest",
"isPrivkey": false,
@ -262,8 +262,8 @@
}
],
[
"myWBvpVEeY86YvJLb5kwH2iWbdXPGjTtZk",
"c54d3aa920e78e56b72c0076d36e99bc87058397",
"cULmtisjsoJ6tavY7sNYCcFc7GvU9PzaXdpm4yRpwH7VyVxFPx97",
"c9b2817ef47867ffa958cb8ecae6388ea7d4b6a72c85f97b15d555c9d2d70464",
{
"chain": "regtest",
"isPrivkey": false,
@ -271,8 +271,8 @@
}
],
[
"2N54Ew2vPqzA9PxG89rB1LM8MVfgePiCKqV",
"818db8c869c5911d286d37088de9020cca43f702",
"LbCdD5HhF8mtzqpAhAL44hRUpVXGthe3wv",
"76a914af41b0e60bddd25fd0986c061d2c38dc8d92f23d88ac",
{
"chain": "regtest",
"isPrivkey": false,
@ -288,8 +288,8 @@
}
],
[
"T6gDa2FYoYuCDpeJy8ePrdTVqxxvZ9H5nCqmdVCiRvLBWr1jymE9",
"6c27d6190e8c49919b7c0919d1ca1b033c2b72b03234728d0b092087983f2544",
"n3cBcftzi5PyYRCaqjnHB9LS9C1r8AUKtT",
"76a914f24ff783c81d1bbeca87b10e3e63300952ce644088ac",
{
"chain": "main",
"isPrivkey": false
@ -304,48 +304,48 @@
}
],
[
"cTNjHC1zu7CifxVJ7g9V16LKVokd7D1XuEvqTtA88uwTsRUFXmWj",
"acdd979c5e6eb9e619dfede5c7112af1057442c8799c1e1d85d7bf59892c923a",
"6vof9cxLQzMQUA3GdMY7RPyN8v2uxGeYsvVBrJ2Csurini4gtiV",
"ddb3e9ec9271fb4ccf1a0782e87724359730f8c621698ede6a8a33a1b9bb0a46",
{
"chain": "test",
"isPrivkey": false
}
],
[
"LPD8ZwGjE4WmQ1EEnjZHrvofSyvGtbEWsH",
"2bb8b0991f396d7f411c2227af00cc09d1ae0adf",
"T7ZjgRCVmxcnffbXoJgzXfPUfUHUvQz5KUDz188ufR8jCQepDwXt",
"86a8b4cb9cabbe39f870b65cb9f7e59b4ae9ce0419dab18cf8bcd29a9575871d",
{
"chain": "signet",
"isPrivkey": false
}
],
[
"35Bjf3NUkU6CNqUFB4HnkaYqN3VPMYwUED",
"2656dc6ac50a5bdeb80348b9097af31e74698f44",
"92sia8ejeCaQ6gKmuraWqpUmv3S6qroQeAsc2nfQZrAiDMnyCQp",
"a9d7c81a8a30cde427c3c530c024e59fbe80a57d55960fffe9948e4366c02ac9",
{
"chain": "signet",
"isPrivkey": false
}
],
[
"mhv2Ti1xy9CsWoYgnEjehEunbhFiyFwLAp",
"1a4d4bf230aabafd3a425770b8b98700bf06e370",
"92sia8ejeCaQ6gKmuraWqpUmv3S6qroQeAsc2nfQZrAiDMnyCQp",
"a9d7c81a8a30cde427c3c530c024e59fbe80a57d55960fffe9948e4366c02ac9",
{
"chain": "regtest",
"isPrivkey": false
}
],
[
"2MwyQVPME89pGMxuX3fRwEgfXtgN1Y1wB7e",
"33dabd6dfda94c9c1ef1654a3c3b1e0984a7aecf",
"cQQ6SPSVoyTBUdstHJJF9YuCLUxfKLnnVAuwfQeREsnmLeTdrSRp",
"540e35fab67b2ff9c6fef795ba0da1114705721bcb387ee93f9c09412d2b3ab5",
{
"chain": "regtest",
"isPrivkey": false
}
],
[
"6uqTHcTC88EcZ8RQJDoH7dFfH46E8ZNpThbEKXCiQ12ag2GeHQ7",
"5e15635f0be1e9717529fb2b65b0d430355f0f5db5811b47fc6545efbe082b23",
"LXbHo4W9BDZYwv6v9x57kLZ2r9YNyqBgWA",
"76a91487aa8c8a26a6cc0c7a7d438e61bfa49a33e9cbab88ac",
{
"chain": "main",
"isCompressed": false,
@ -362,8 +362,8 @@
}
],
[
"932VXf7wK3qQTGzudkeHWME2iweTTdyfyxQV4HqWLZsocbVQMgZ",
"bdc494c6c492168886d7d19fe35c4e67c477f8e19bfe1b50a4b28a7f0910ac02",
"moJfnqA4SviQhxStcqR4PFvCU2bjYEx873",
"76a914556e3cee7b8d470f5c3f507c4c54781cfc179ea688ac",
{
"chain": "test",
"isCompressed": false,
@ -380,8 +380,8 @@
}
],
[
"LPGeGFBPCVLHdGVD1i1oikzD92XZoTEVyh",
"2c62b9d0c13b499167506863248f473416b18850",
"6vwfYtMbBhF5Pn9yUHHP4GcW274C9bK8UgCvCMgCGmCdfwSND4p",
"efe22b1f976043089a51deff8d0b8c3df2b23748f4d0eadb6641503637c63869",
{
"chain": "signet",
"isCompressed": false,
@ -389,8 +389,8 @@
}
],
[
"37h7vEB4v3jpqxKvX1qqJ5xZaqzLj7NPyN",
"41d5c23a8188270b32d0afce2e11e4c3028afe6b",
"T6UPi92VfnBy24YJnkPthhpstCrUA1tLkbLud5tk9nEwoXqTQkZZ",
"661281d55763ba511ced34e909a99d0926daddbeb3109644937061b6cf913782",
{
"chain": "signet",
"isCompressed": true,
@ -398,8 +398,8 @@
}
],
[
"mhvk8vH4LaAgUBUJsU4UtL4KSWLavssToW",
"1a701609b7d938f932d9517f965eb938ec45d067",
"92ZmYqEbmGrKfHp1usJrj5qAYnwvFihby1XYL82riva5EZhuvjj",
"8116986e76487416346994d08b5248622471e2836943f695d7351868f520ba6b",
{
"chain": "regtest",
"isCompressed": false,
@ -407,8 +407,8 @@
}
],
[
"2NBbbBFBoKk85mhvTJH4tc11U1zh4oqp7SG",
"c94c4561b8ec99cddd540dedc67380c6b859ae00",
"cUAXZmhBU724DznSwsZnqjhixqrkqwXXWCGAZcJkBXdgPuBi4CZd",
"c46d03a638e031a5a0d025bac050875f5c79bef6d47b377ab5eff92563549e7b",
{
"chain": "regtest",
"isCompressed": true,
@ -416,8 +416,8 @@
}
],
[
"6vQqYTYdTXyHLcAivoZ6N2pginHXkZj9DF8uu9rroj5jT32joQn",
"a9e2a8019c11e6fd215f5c2ae834c7f07207723cac79b4e22744800c97212ac1",
"LiRGLiaD9yaUNZbe9GKptX5PybiQZzioED",
"76a914fe6e8f1ff538103ede6451c57d5dcbeaf376821d88ac",
{
"chain": "main",
"isPrivkey": false,
@ -434,8 +434,8 @@
}
],
[
"91pvMZgXhzBit7xx2NrbgMiuVZJep46gTCdvFkQTijTA76Gzxfc",
"1fcbd613ad91f41e062a66b11299585cff1639775df447360e74fbeea1e336c8",
"mfkrC62Px74E6mpQS137ecE6c3A7LzFMV7",
"76a91402a0baa2a00912fa6b7db5ec66f64ad3dafe650988ac",
{
"chain": "main",
"isPrivkey": false,
@ -452,8 +452,8 @@
}
],
[
"LhLu7S8qdG7YZR1GgSP8g4aqN8nXCRLkzX",
"f2a30c60e4abcbbdcdf7cb34520b742ae07b6018",
"6vRJaVegzBxTXdgGEimmmSsEv1CLdAgfpaHsZbXUxkPfm9H8U7X",
"aaf19a8a8eacca26b2ec3678e47ee22a04fc1efac61bcd2a41af332be63bab8b",
{
"chain": "test",
"isPrivkey": false,
@ -461,8 +461,8 @@
}
],
[
"3B7BZ4asi1qP4jQmo4UjshAp4ZtgmpA7CW",
"674b274f2be5747793d2529972d964f1cfe9f985",
"T7LHhPHG4mno7XPvBXajDrA5v2nLVSw16sTErD9y6Yki3bGTuHgf",
"7fbda89e59e07db5897cabfde8eb8036d4bebdfddfeac97319e74c74c02799f2",
{
"chain": "test",
"isPrivkey": false,
@ -470,8 +470,8 @@
}
],
[
"tb1pmcdc5d8gr92rtemfsnhpeqanvs0nr82upn5dktxluz9n0qcv34lqxke0wq",
"5120de1b8a34e8195435e76984ee1c83b3641f319d5c0ce8db2cdfe08b37830c8d7e",
"93VwGxfztHBcUefSWA3JMzKsr6Jg4atmZdKvi1MXTgB9HLypXry",
"fc1528167b31735464059aef58cf71b501eaa146bae7e47f406c61f7ac28555c",
{
"chain": "test",
"isPrivkey": false,
@ -479,8 +479,8 @@
}
],
[
"tb1rgxjvtfzp0xczz6dlzqv8d5cmuykk4qkk",
"531041a4c5a44179b02169bf101876d31be1",
"cW8HPuCThQ4EsLEU8S6Gborp7NfwXDc2uh2Aua83kmhjqN8GzEVk",
"fef231a9299de5b2d3ea012cd2471bdc80d38e489f5f4a7803ac3279a7d727a9",
{
"chain": "test",
"isPrivkey": false,
@ -488,8 +488,8 @@
}
],
[
"tb1qa9dlyt6fydestul4y4wh72yshh044w32np8etk",
"0014e95bf22f49237305f3f5255d7f2890bddf5aba2a",
"LeZc1mA2SgaNTJ4WE8pKegNKbZekqovqvK",
"76a914d421ce551279f3fdfb6e4f7390b06516c3daaaa288ac",
{
"chain": "signet",
"isPrivkey": false,
@ -506,8 +506,8 @@
}
],
[
"tb1pjyukm4n4flwd0ey3lrl06c9kalr60ggmlkcxq2rhhxmy4lvkmkpqexdzqy",
"512091396dd6754fdcd7e491f8fefd60b6efc7a7a11bfdb0602877b9b64afd96dd82",
"ltc1qw508d6qejxtdg4y5r3zarvary0c5xw7kgmn4n9",
"0014751e76e8199196d454941c45d1b3a323f1433bd6",
{
"chain": "signet",
"isPrivkey": false,
@ -515,8 +515,8 @@
}
],
[
"tb1r4k75s5syvewsvxufdc3xfhf4tw4u30alw39xny3dnxrl6hau7systymfdv",
"5320adbd485204665d061b896e2264dd355babc8bfbf744a69922d9987fd5fbcf409",
"rltc1qw508d6qejxtdg4y5r3zarvary0c5xw7k693xs3",
"0014751e76e8199196d454941c45d1b3a323f1433bd6",
{
"chain": "signet",
"isPrivkey": false,
@ -524,8 +524,8 @@
}
],
[
"bcrt1qnk3tdwwj47ppc4pqmxkjdusegedn9ru5gvccwa",
"00149da2b6b9d2af821c5420d9ad26f219465b328f94",
"tltc1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3qsnr4fp",
"00201863143c14c5166804bd19203356da136c985678cd4d27a1b8c6329604903262",
{
"chain": "regtest",
"isPrivkey": false,
@ -533,8 +533,8 @@
}
],
[
"bcrt1qz7prfshfkwsxuk72pt6mzr6uumq4qllxe4vmwqt89tat48d362yqlykk6a",
"0020178234c2e9b3a06e5bca0af5b10f5ce6c1507fe6cd59b701672afaba9db1d288",
"ltc1pw508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7k0tul4w",
"5128751e76e8199196d454941c45d1b3a323f1433bd6751e76e8199196d454941c45d1b3a323f1433bd6",
{
"chain": "regtest",
"isPrivkey": false,
@ -542,8 +542,8 @@
}
],
[
"bcrt1pumee3wj80xvyr7wjmj7zsk26x5pn095aegy862yhx6f2j9sgc9hq6cj4cm",
"5120e6f398ba47799841f9d2dcbc28595a350337969dca087d28973692a91608c16e",
"ltc1sw50qzgydf5",
"6002751e",
{
"chain": "regtest",
"isPrivkey": false,
@ -551,8 +551,8 @@
}
],
[
"bcrt1szqz8hj64d2hhc6nt65v09jxal66pgff2xpcp9kj648qkk8kjzxelsts4dktd799g47uase",
"602810047bcb556aaf7c6a6bd518f2c8ddfeb414252a307012da5aa9c16b1ed211b3f82e156d96df14a8",
"ltc1zw508d6qejxtdg4y5r3zarvaryvdzur3w",
"5210751e76e8199196d454941c45d1b3a323",
{
"chain": "regtest",
"isPrivkey": false,
@ -560,32 +560,16 @@
}
],
[
"12agZTajtRE3STSchwWNWnrm467zzTQ916",
"76a9141156e00f70061e5faba8b71593a8c7554b47090c88ac",
{
"chain": "main",
"isPrivkey": false
}
],
[
"3NXqB6iZiPYbKruNT3d9xNBTmtb73xMvvf",
"a914e49decc9e5d97e0547d3642f3a4795b13ae62bca87",
{
"chain": "main",
"isPrivkey": false
}
],
[
"mjgt4BoCYxjzWvJFoh68x7cj5GeaKDYhyx",
"76a9142dc11fc7b8072f733f690ffb0591c00f4062295c88ac",
"tltc1qqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesu9tmgm",
"0020000000c4a5cad46221b2a187905e5266362b99d5e91c6ce24d165dab93e86433",
{
"chain": "test",
"isPrivkey": false
}
],
[
"2NCT6FdQ5MxorHgnFxLeHyGwTGRdkHcrJDH",
"a914d2a8ec992b0894a0d9391ca5d9c45c388c41be7e87",
"rltc1qqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesxuhrdn",
"0020000000c4a5cad46221b2a187905e5266362b99d5e91c6ce24d165dab93e86433",
{
"chain": "test",
"isPrivkey": false
@ -607,4 +591,4 @@
"isPrivkey": false
}
]
]
]

View File

@ -46,7 +46,7 @@ BOOST_AUTO_TEST_CASE(psbt_updater_test)
spk_man->AddCScript(ws1);
// Add hd seed
CKey key = DecodeSecret("5KSSJQ7UNfFGwVgpCZDSHm5rVNhMFcFtvWM3zQ8mW4qNDEN7LFd"); // Mainnet and uncompressed form of cUkG8i1RFfWGWy5ziR11zJ5V4U4W3viSFCfyJmZnvQaUsd1xuF3T
CKey key = DecodeSecret("6usgJoGKXW12i7Ruxy8Z1C5hrRMVGfLmi9NU9uDQJMPXDJ6tQAH"); // Mainnet and uncompressed form of cUkG8i1RFfWGWy5ziR11zJ5V4U4W3viSFCfyJmZnvQaUsd1xuF3T
CPubKey master_pub_key = spk_man->DeriveNewSeed(key);
spk_man->SetHDSeed(master_pub_key);
spk_man->NewKeyPool();
@ -64,7 +64,7 @@ BOOST_AUTO_TEST_CASE(psbt_updater_test)
CDataStream ssTx(SER_NETWORK, PROTOCOL_VERSION);
ssTx << psbtx;
std::string final_hex = HexStr(ssTx);
BOOST_CHECK_EQUAL(final_hex, "70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f00000000000100bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f6187650000000104475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae2206029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f049c4942a9220602dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d704b9147fd30001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e88701042200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b2028903010547522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae2206023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7304d48ed311220603089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc048fc41646000000");
BOOST_CHECK_EQUAL(final_hex, "70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f00000000000100bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f6187650000000104475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae0001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e88701042200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b2028903010547522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae000000");
// Mutate the transaction so that one of the inputs is invalid
psbtx.tx->vin[0].prevout.n = 2;

View File

@ -105,7 +105,7 @@
"000000209b3ace9bd510918d20e87518c0cf5976cab3e28cc7af41259a89c6dd7668a32922808b8a082be71bcd6152cb8fd223650b5579a41344ba749e4d17b9bf211a9e2b4ae75affff7f200000000002020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401660101ffffffff026c03062a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9edb85d8f3c122c43a72f1e0dd122c8f7af040aa0b0a46001621110fb37818021510120000000000000000000000000000000000000000000000000000000000000000000000000020000000128394022bf44bff30d7399cb5a16e3b94fed67dc174c2e1d77df91bad5a51cb3000000006a47304402201c16d06a5c4353168b3881071aea7d1eb4d88eedfea53a9d6af9abb56da9060002205abf3ae535f1f1b5cfe8ba955535c2b20ac003e7d7720c5b7d2640ac2a04d19001210227d85ba011276cf25b51df6a188b75e604b38770a462b2d0e9fb2fc839ef5d3ffeffffff0294b89a3b000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac00286bee0000000017a91452bab4f229415d0dc5c6d30b162f93a1a0cac5958765000000",
"000000200fa168b50a79ad24378a6b0f96e4c9f4ccb657a2663320d5fc1efd8ee7caa10ab42a31c444f2153387530a0979d4dc3dcc134b394c821227b8abff930c03c8412b4ae75affff7f200200000004020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401670101ffffffff02e015072a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ed20376d4bc90f9c689850eec3603cda658ba6295241730473ceb0e970b8d594150120000000000000000000000000000000000000000000000000000000000000000000000000020000000191e549a6cc852bbf1d3f11144b1a34079f64305e6971d2e685d2b40cd386e8a6000000006a47304402200bf62021c0a9a47ced8eba1e0998f5c71b2950763198d83ad284bd791241dbb00220446a05b7c35e7458924de88a8dcccab1ec6a106aa005345e55b482d8eb66337301210227d85ba011276cf25b51df6a188b75e604b38770a462b2d0e9fb2fc839ef5d3ffeffffff02acdbf405000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac94d7a4350000000017a914dfa6f0b17d2c64962c94203e744a9d4179ed22c18766000000020000000112d2f07672102dc6f099c4be308f598e4c4da1a7e0cb462ae14f0444525a1332000000006a47304402200a6a2f544f3f9d299608a7c745e2326de176fb1cac03ae3e74943f4250b8896e02205023a5b4faff99865bf91f1263605a502c723628be9240c0b7bec81d2ed106f101210227d85ba011276cf25b51df6a188b75e604b38770a462b2d0e9fb2fc839ef5d3ffeffffff0200ca9a3b000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac94166bee0000000017a914152cc82f7944f5c416de7dbffb052f7081765d7987660000000200000000010191e549a6cc852bbf1d3f11144b1a34079f64305e6971d2e685d2b40cd386e8a601000000171600147cc872ad7350c37fecab9c4c6d9f08aceb53bdb8feffffff02005ed0b20000000017a914aab1c8c53fe62e283a53efa28097709f4f2ed37b87e0bc9a3b000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0247304402201b4476f238ed5d515bfcd6927d0d008a4993770763eca73e3ee66f69971831d902200f5215a6dfd90391dd63462cfdf69804fe31224c309ec9c38d33a04dce71c0ee0121028c9d2955a95301b699db62e97d54bf0a91feb44e5cd94bbf5b62f1df57fb643966000000"
],
"mocktime": 1525107225,
"mocktime": 1536411736,
"stats": [
{
"avgfee": 0,
@ -125,7 +125,7 @@
"maxfeerate": 0,
"maxtxsize": 0,
"medianfee": 0,
"mediantime": 1525107242,
"mediantime": 1536411753,
"mediantxsize": 0,
"minfee": 0,
"minfeerate": 0,
@ -135,7 +135,7 @@
"swtotal_size": 0,
"swtotal_weight": 0,
"swtxs": 0,
"time": 1525107243,
"time": 1536411754,
"total_out": 0,
"total_size": 0,
"total_weight": 0,
@ -190,8 +190,8 @@
20,
20,
20,
300,
300
301,
301
],
"height": 103,
"ins": 3,

View File

@ -50,13 +50,13 @@
],
"outputs" : [
{
"bcrt1qmpwzkuwsqc9snjvgdt4czhjsnywa5yjdqpxskv":1.49990000
"rltc1q638jrseqgunlwra8sdd27ezy4zttavdu06u8c4":1.49990000
},
{
"bcrt1qqzh2ngh97ru8dfvgma25d6r595wcwqy0cee4cc": 1
"rltc1q39vc4y54cwm5ksm5n0ejjqgeq48zk5rtcrqdj2": 1
}
],
"result" : "cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAAAAAA="
"result" : "cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTUTyHDIEcn9w+ng1qvZESolr6xvADh9QUAAAAAFgAUiVmKkpXDt0tDdJvzKQEZBU4rUGsAAAAAAAAAAAA="
}
],
"signer" : [

View File

@ -587,6 +587,7 @@ class FullBlockTest(BitcoinTestFramework):
height = self.block_heights[self.tip.sha256] + 1
coinbase = create_coinbase(height, self.coinbase_pubkey)
b44 = CBlock()
b44.nVersion = 0x20000000
b44.nTime = self.tip.nTime + 1
b44.hashPrevBlock = self.tip.sha256
b44.nBits = 0x207fffff
@ -601,6 +602,7 @@ class FullBlockTest(BitcoinTestFramework):
self.log.info("Reject a block with a non-coinbase as the first tx")
non_coinbase = self.create_tx(out[15], 0, 1)
b45 = CBlock()
b45.nVersion = 0x20000000
b45.nTime = self.tip.nTime + 1
b45.hashPrevBlock = self.tip.sha256
b45.nBits = 0x207fffff
@ -616,6 +618,7 @@ class FullBlockTest(BitcoinTestFramework):
self.log.info("Reject a block with no transactions")
self.move_tip(44)
b46 = CBlock()
b46.nVersion = 0x20000000
b46.nTime = b44.nTime + 1
b46.hashPrevBlock = b44.sha256
b46.nBits = 0x207fffff

View File

@ -21,7 +21,7 @@ from test_framework.util import (
from io import BytesIO
CLTV_HEIGHT = 1351
VB_TOP_BITS = 0x20000000
def cltv_invalidate(tx):
'''Modify the signature in vin 0 of the tx to fail CLTV
@ -93,7 +93,7 @@ class BIP65Test(BitcoinTestFramework):
tip = self.nodes[0].getbestblockhash()
block_time = self.nodes[0].getblockheader(tip)['mediantime'] + 1
block = create_block(int(tip, 16), create_coinbase(CLTV_HEIGHT - 1), block_time)
block.nVersion = 3
block.nVersion = VB_TOP_BITS
block.vtx.append(spendtx)
block.hashMerkleRoot = block.calc_merkle_root()
block.solve()
@ -103,7 +103,7 @@ class BIP65Test(BitcoinTestFramework):
self.test_cltv_info(is_active=True) # Not active as of current tip, but next block must obey rules
assert_equal(self.nodes[0].getbestblockhash(), block.hash)
self.log.info("Test that blocks must now be at least version 4")
self.log.info("Test that blocks must now be at least version VB_TOP_BITS")
tip = block.sha256
block_time += 1
block = create_block(tip, create_coinbase(CLTV_HEIGHT), block_time)
@ -116,7 +116,7 @@ class BIP65Test(BitcoinTestFramework):
peer.sync_with_ping()
self.log.info("Test that invalid-according-to-cltv transactions cannot appear in a block")
block.nVersion = 4
block.nVersion = VB_TOP_BITS
spendtx = create_transaction(self.nodes[0], self.coinbase_txids[1],
self.nodeaddress, amount=1.0)
@ -140,7 +140,7 @@ class BIP65Test(BitcoinTestFramework):
assert_equal(int(self.nodes[0].getbestblockhash(), 16), tip)
peer.sync_with_ping()
self.log.info("Test that a version 4 block with a valid-according-to-CLTV transaction is accepted")
self.log.info("Test that a version VB_TOP_BITS block with a valid-according-to-CLTV transaction is accepted")
spendtx = cltv_validate(self.nodes[0], spendtx, CLTV_HEIGHT - 1)
spendtx.rehash()

View File

@ -20,7 +20,7 @@ class ConfArgsTest(BitcoinTestFramework):
# Assume node is stopped
inc_conf_file_path = os.path.join(self.nodes[0].datadir, 'include.conf')
with open(os.path.join(self.nodes[0].datadir, 'bitcoin.conf'), 'a', encoding='utf-8') as conf:
with open(os.path.join(self.nodes[0].datadir, 'litecoin.conf'), 'a', encoding='utf-8') as conf:
conf.write('includeconf={}\n'.format(inc_conf_file_path))
self.nodes[0].assert_start_raises_init_error(
@ -167,7 +167,7 @@ class ConfArgsTest(BitcoinTestFramework):
self.nodes[0].assert_start_raises_init_error(['-datadir=' + new_data_dir], 'Error: Specified data directory "' + new_data_dir + '" does not exist.')
# Check that using non-existent datadir in conf file fails
conf_file = os.path.join(default_data_dir, "bitcoin.conf")
conf_file = os.path.join(default_data_dir, "litecoin.conf")
# datadir needs to be set before [chain] section
conf_file_contents = open(conf_file, encoding='utf8').read()

View File

@ -150,6 +150,7 @@ class BIP68_112_113Test(BitcoinTestFramework):
self.setup_clean_chain = True
self.extra_args = [[
'-whitelist=noban@127.0.0.1',
'-blockversion=536870912'
'-addresstype=legacy',
'-par=1', # Use only one script thread to get the exact reject reason for testing
]]
@ -244,7 +245,7 @@ class BIP68_112_113Test(BitcoinTestFramework):
assert_equal(len(self.nodes[0].getblock(inputblockhash, True)["tx"]), TESTING_TX_COUNT + 1)
# 2 more version 4 blocks
test_blocks = self.generate_blocks(2)
test_blocks = self.generate_blocks(2, 0x20000000)
self.send_blocks(test_blocks)
assert_equal(self.tipheight, CSV_ACTIVATION_HEIGHT - 2)
@ -353,7 +354,7 @@ class BIP68_112_113Test(BitcoinTestFramework):
self.nodes[0].invalidateblock(self.nodes[0].getbestblockhash())
# Next block height = 437 after 4 blocks of random version
test_blocks = self.generate_blocks(4)
test_blocks = self.generate_blocks(4, 0x20000000)
self.send_blocks(test_blocks)
self.log.info("BIP 68 tests")
@ -381,7 +382,7 @@ class BIP68_112_113Test(BitcoinTestFramework):
self.send_blocks([self.create_test_block([tx])], success=False, reject_reason='bad-txns-nonfinal')
# Advance one block to 438
test_blocks = self.generate_blocks(1)
test_blocks = self.generate_blocks(1, 0x20000000)
self.send_blocks(test_blocks)
# Height txs should fail and time txs should now pass 9 * 600 > 10 * 512
@ -392,7 +393,7 @@ class BIP68_112_113Test(BitcoinTestFramework):
self.send_blocks([self.create_test_block([tx])], success=False, reject_reason='bad-txns-nonfinal')
# Advance one block to 439
test_blocks = self.generate_blocks(1)
test_blocks = self.generate_blocks(1, 0x20000000)
self.send_blocks(test_blocks)
# All BIP 68 txs should pass

View File

@ -17,6 +17,7 @@ from test_framework.util import (
)
DERSIG_HEIGHT = 1251
VB_TOP_BITS = 0x20000000
# A canonical signature consists of:
@ -77,7 +78,7 @@ class BIP66Test(BitcoinTestFramework):
tip = self.nodes[0].getbestblockhash()
block_time = self.nodes[0].getblockheader(tip)['mediantime'] + 1
block = create_block(int(tip, 16), create_coinbase(DERSIG_HEIGHT - 1), block_time)
block.nVersion = 2
block.nVersion = VB_TOP_BITS
block.vtx.append(spendtx)
block.hashMerkleRoot = block.calc_merkle_root()
block.rehash()
@ -88,7 +89,7 @@ class BIP66Test(BitcoinTestFramework):
self.test_dersig_info(is_active=True) # Not active as of current tip, but next block must obey rules
assert_equal(self.nodes[0].getbestblockhash(), block.hash)
self.log.info("Test that blocks must now be at least version 3")
self.log.info("Test that blocks must now be at least VB_TOP_BITS")
tip = block.sha256
block_time += 1
block = create_block(tip, create_coinbase(DERSIG_HEIGHT), block_time)
@ -102,7 +103,7 @@ class BIP66Test(BitcoinTestFramework):
peer.sync_with_ping()
self.log.info("Test that transactions with non-DER signatures cannot appear in a block")
block.nVersion = 3
block.nVersion = VB_TOP_BITS
spendtx = create_transaction(self.nodes[0], self.coinbase_txids[1],
self.nodeaddress, amount=1.0)

View File

@ -32,7 +32,7 @@ class IncludeConfTest(BitcoinTestFramework):
# - tmpdir/node0/relative2.conf
with open(os.path.join(self.options.tmpdir, "node0", "relative2.conf"), "w", encoding="utf8") as f:
f.write("uacomment=relative2\n")
with open(os.path.join(self.options.tmpdir, "node0", "bitcoin.conf"), "a", encoding='utf8') as f:
with open(os.path.join(self.options.tmpdir, "node0", "litecoin.conf"), "a", encoding='utf8') as f:
f.write("uacomment=main\nincludeconf=relative.conf\n")
def run_test(self):
@ -70,7 +70,7 @@ class IncludeConfTest(BitcoinTestFramework):
# Restore initial file contents
f.write("uacomment=relative\n")
with open(os.path.join(self.options.tmpdir, "node0", "bitcoin.conf"), "a", encoding='utf8') as f:
with open(os.path.join(self.options.tmpdir, "node0", "litecoin.conf"), "a", encoding='utf8') as f:
f.write("includeconf=relative2.conf\n")
self.start_node(0)

View File

@ -37,7 +37,7 @@ class TestBitcoinCli(BitcoinTestFramework):
"""Main test logic"""
self.nodes[0].generate(BLOCKS)
self.log.info("Compare responses from getblockchaininfo RPC and `bitcoin-cli getblockchaininfo`")
self.log.info("Compare responses from getblockchaininfo RPC and `litecoin-cli getblockchaininfo`")
cli_response = self.nodes[0].cli.getblockchaininfo()
rpc_response = self.nodes[0].getblockchaininfo()
assert_equal(cli_response, rpc_response)

View File

@ -139,7 +139,7 @@ class MempoolPersistTest(BitcoinTestFramework):
assert self.nodes[1].getmempoolinfo()["loaded"]
assert_equal(len(self.nodes[1].getrawmempool()), 6)
self.log.debug("Prevent bitcoind from writing mempool.dat to disk. Verify that `savemempool` fails")
self.log.debug("Prevent litecoind from writing mempool.dat to disk. Verify that `savemempool` fails")
# to test the exception we are creating a tmp folder called mempool.dat.new
# which is an implementation detail that could change and break this test
mempooldotnew1 = mempooldat1 + '.new'

View File

@ -37,6 +37,7 @@ class P2PFingerprintTest(BitcoinTestFramework):
coinbase = create_coinbase(prev_height + 1)
block_time = prev_median_time + 1
block = create_block(int(prev_hash, 16), coinbase, block_time)
block.nVersion = 0x20000000
block.solve()
blocks.append(block)

View File

@ -38,6 +38,7 @@ class InvalidBlockRequestTest(BitcoinTestFramework):
height = 1
block = create_block(tip, create_coinbase(height), block_time)
block.nVersion = 0x20000000
block.solve()
# Save the coinbase for later
block1 = block
@ -61,6 +62,7 @@ class InvalidBlockRequestTest(BitcoinTestFramework):
self.log.info("Test merkle root malleability.")
block2 = create_block(tip, create_coinbase(height), block_time)
block2.nVersion = 0x20000000
block_time += 1
# b'0x51' is OP_TRUE
@ -96,6 +98,7 @@ class InvalidBlockRequestTest(BitcoinTestFramework):
self.log.info("Test very broken block.")
block3 = create_block(tip, create_coinbase(height), block_time)
block3.nVersion = 0x20000000
block_time += 1
block3.vtx[0].vout[0].nValue = 100 * COIN # Too high!
block3.vtx[0].sha256 = None

View File

@ -57,6 +57,7 @@ class InvalidTxRequestTest(BitcoinTestFramework):
self.log.info("Create a new block with an anyone-can-spend coinbase.")
height = 1
block = create_block(tip, create_coinbase(height), block_time)
block.nVersion = 0x20000000
block.solve()
# Save the coinbase for later
block1 = block

View File

@ -237,7 +237,7 @@ class SegWitTest(BitcoinTestFramework):
# Helper functions
def build_next_block(self, nVersion=VB_TOP_BITS):
def build_next_block(self, version=VB_TOP_BITS):
"""Build a block on top of node0's tip."""
tip = self.nodes[0].getbestblockhash()
height = self.nodes[0].getblockcount() + 1
@ -405,7 +405,8 @@ class SegWitTest(BitcoinTestFramework):
assert self.test_node.last_message["getdata"].inv[0].type == blocktype
test_witness_block(self.nodes[0], self.test_node, block1, True)
block2 = self.build_next_block(version=4)
block2 = self.build_next_block()
block2.solve()
self.test_node.announce_block_and_wait_for_getdata(block2, use_header=True)
@ -556,7 +557,8 @@ class SegWitTest(BitcoinTestFramework):
# 'non-mandatory-script-verify-flag (Witness program was passed an
# empty witness)' (otherwise).
# TODO: support multiple acceptable reject reasons.
test_witness_block(self.nodes[0], self.test_node, block, accepted=False, with_witness=False)
# Litecoin: SCRIPT_VERIFY_WITNESS is enforced when segwit is activated
test_witness_block(self.nodes[0], self.test_node, block, accepted=True, with_witness=False)
self.connect_nodes(0, 2)

View File

@ -253,6 +253,7 @@ class SendHeadersTest(BitcoinTestFramework):
self.log.info("Verify getheaders with null locator and invalid hashstop does not return headers.")
block = create_block(int(tip["hash"], 16), create_coinbase(tip["height"] + 1), tip["mediantime"] + 1)
block.nVersion = 0x20000000
block.solve()
test_node.send_header_for_blocks([block])
test_node.clear_block_announcements()
@ -293,6 +294,7 @@ class SendHeadersTest(BitcoinTestFramework):
last_time = self.nodes[0].getblock(self.nodes[0].getbestblockhash())['time']
block_time = last_time + 1
new_block = create_block(tip, create_coinbase(height + 1), block_time)
new_block.nVersion = 0x20000000
new_block.solve()
test_node.send_header_for_blocks([new_block])
test_node.wait_for_getdata([new_block.sha256])
@ -329,6 +331,7 @@ class SendHeadersTest(BitcoinTestFramework):
blocks = []
for _ in range(i + 1):
blocks.append(create_block(tip, create_coinbase(height), block_time))
blocks[-1].nVersion = 0x20000000
blocks[-1].solve()
tip = blocks[-1].sha256
block_time += 1
@ -444,6 +447,7 @@ class SendHeadersTest(BitcoinTestFramework):
blocks = []
for _ in range(2):
blocks.append(create_block(tip, create_coinbase(height), block_time))
blocks[-1].nVersion = 0x20000000
blocks[-1].solve()
tip = blocks[-1].sha256
block_time += 1
@ -462,6 +466,7 @@ class SendHeadersTest(BitcoinTestFramework):
blocks = []
for _ in range(3):
blocks.append(create_block(tip, create_coinbase(height), block_time))
blocks[-1].nVersion = 0x20000000
blocks[-1].solve()
tip = blocks[-1].sha256
block_time += 1
@ -483,6 +488,7 @@ class SendHeadersTest(BitcoinTestFramework):
# Create extra blocks for later
for _ in range(20):
blocks.append(create_block(tip, create_coinbase(height), block_time))
blocks[-1].nVersion = 0x20000000
blocks[-1].solve()
tip = blocks[-1].sha256
block_time += 1
@ -530,6 +536,7 @@ class SendHeadersTest(BitcoinTestFramework):
# Create two more blocks.
for _ in range(2):
blocks.append(create_block(tip, create_coinbase(height), block_time))
blocks[-1].nVersion = 0x20000000
blocks[-1].solve()
tip = blocks[-1].sha256
block_time += 1
@ -551,6 +558,7 @@ class SendHeadersTest(BitcoinTestFramework):
MAX_UNCONNECTING_HEADERS = 10
for _ in range(MAX_UNCONNECTING_HEADERS + 1):
blocks.append(create_block(tip, create_coinbase(height), block_time))
blocks[-1].nVersion = 0x20000000
blocks[-1].solve()
tip = blocks[-1].sha256
block_time += 1

View File

@ -86,6 +86,7 @@ class AcceptBlockTest(BitcoinTestFramework):
block_time = int(time.time()) + 1
for i in range(2):
blocks_h2.append(create_block(tips[i], create_coinbase(2), block_time))
blocks_h2[i].nVersion = 0x20000000
blocks_h2[i].solve()
block_time += 1
test_node.send_and_ping(msg_block(blocks_h2[0]))
@ -97,6 +98,7 @@ class AcceptBlockTest(BitcoinTestFramework):
# 3. Send another block that builds on genesis.
block_h1f = create_block(int("0x" + self.nodes[0].getblockhash(0), 0), create_coinbase(1), block_time)
block_h1f.nVersion = 0x20000000
block_time += 1
block_h1f.solve()
test_node.send_and_ping(msg_block(block_h1f))
@ -111,6 +113,7 @@ class AcceptBlockTest(BitcoinTestFramework):
# 4. Send another two block that build on the fork.
block_h2f = create_block(block_h1f.sha256, create_coinbase(2), block_time)
block_h2f.nVersion = 0x20000000
block_time += 1
block_h2f.solve()
test_node.send_and_ping(msg_block(block_h2f))
@ -130,6 +133,7 @@ class AcceptBlockTest(BitcoinTestFramework):
# 4b. Now send another block that builds on the forking chain.
block_h3 = create_block(block_h2f.sha256, create_coinbase(3), block_h2f.nTime+1)
block_h3.nVersion = 0x20000000
block_h3.solve()
test_node.send_and_ping(msg_block(block_h3))
@ -153,6 +157,7 @@ class AcceptBlockTest(BitcoinTestFramework):
all_blocks = []
for i in range(288):
next_block = create_block(tip.sha256, create_coinbase(i + 4), tip.nTime+1)
next_block.nVersion = 0x20000000
next_block.solve()
all_blocks.append(next_block)
tip = next_block
@ -222,15 +227,19 @@ class AcceptBlockTest(BitcoinTestFramework):
# 8. Create a chain which is invalid at a height longer than the
# current chain, but which has more blocks on top of that
block_289f = create_block(all_blocks[284].sha256, create_coinbase(289), all_blocks[284].nTime+1)
block_289f.nVersion = 0x20000000
block_289f.solve()
block_290f = create_block(block_289f.sha256, create_coinbase(290), block_289f.nTime+1)
block_290f.nVersion = 0x20000000
block_290f.solve()
block_291 = create_block(block_290f.sha256, create_coinbase(291), block_290f.nTime+1)
block_291.nVersion = 0x20000000
# block_291 spends a coinbase below maturity!
block_291.vtx.append(create_tx_with_script(block_290f.vtx[0], 0, script_sig=b"42", amount=1))
block_291.hashMerkleRoot = block_291.calc_merkle_root()
block_291.solve()
block_292 = create_block(block_291.sha256, create_coinbase(292), block_291.nTime+1)
block_292.nVersion = 0x20000000
block_292.solve()
# Now send all the headers on the chain and enough blocks to trigger reorg
@ -276,6 +285,7 @@ class AcceptBlockTest(BitcoinTestFramework):
# Now send a new header on the invalid chain, indicating we're forked off, and expect to get disconnected
block_293 = create_block(block_292.sha256, create_coinbase(293), block_292.nTime+1)
block_293.nVersion = 0x20000000
block_293.solve()
headers_message = msg_headers()
headers_message.headers.append(CBlockHeader(block_293))

View File

@ -347,6 +347,7 @@ class BlockchainTest(BitcoinTestFramework):
def solve_and_send_block(prevhash, height, time):
b = create_block(prevhash, create_coinbase(height), time)
b.nVersion = 0x20000000
b.solve()
peer.send_and_ping(msg_block(b))
return b

View File

@ -151,7 +151,7 @@ class RpcCreateMultiSigTest(BitcoinTestFramework):
mredeem = msig["redeemScript"]
assert_equal(desc, msig['descriptor'])
if self.output_type == 'bech32':
assert madd[0:4] == "bcrt" # actually a bech32 address
assert madd[0:4] == "rltc" # actually a bech32 address
# compare against addmultisigaddress
msigw = wmulti.addmultisigaddress(self.nsigs, self.pub, None, self.output_type)

View File

@ -106,7 +106,7 @@ class RawTransactionsTest(BitcoinTestFramework):
self.nodes[0].createrawtransaction(inputs=[], outputs={}) # Should not throw for backwards compatibility
self.nodes[0].createrawtransaction(inputs=[], outputs=[])
assert_raises_rpc_error(-8, "Data must be hexadecimal string", self.nodes[0].createrawtransaction, [], {'data': 'foo'})
assert_raises_rpc_error(-5, "Invalid Bitcoin address", self.nodes[0].createrawtransaction, [], {'foo': 0})
assert_raises_rpc_error(-5, "Invalid Litecoin address", self.nodes[0].createrawtransaction, [], {'foo': 0})
assert_raises_rpc_error(-3, "Invalid amount", self.nodes[0].createrawtransaction, [], {address: 'foo'})
assert_raises_rpc_error(-3, "Amount out of range", self.nodes[0].createrawtransaction, [], {address: -1})
assert_raises_rpc_error(-8, "Invalid parameter, duplicated address: %s" % address, self.nodes[0].createrawtransaction, [], multidict([(address, 1), (address, 1)]))

View File

@ -22,7 +22,7 @@ class SignMessagesTest(BitcoinTestFramework):
self.log.info('test signing with priv_key')
priv_key = 'cUeKHd5orzT3mz8P9pxyREHfsWtVfgsfDjiZZBcjUBAaGk1BTj7N'
address = 'mpLQjfK79b7CCV4VMJWEWAj5Mpx8Up5zxB'
expected_signature = 'INbVnW4e6PeRmsv2Qgu8NuopvrVjkcxob+sX8OcZG0SALhWybUjzMLPdAsXI46YZGb0KQTRii+wWIQzRpG/U+S0='
expected_signature = 'IGve8AOjIcu+a/nYW1PABSfmp2oQlEqLIOwPgNW5/Y5teggr8S0vy4SMdjL2Viv3iuBZjJbhvyBo0tv5m3H63b8='
signature = self.nodes[0].signmessagewithprivkey(priv_key, message)
assert_equal(expected_signature, signature)
assert self.nodes[0].verifymessage(address, signature, message)

View File

@ -104,7 +104,7 @@ def program_to_witness(version, program, main=False):
assert 0 <= version <= 16
assert 2 <= len(program) <= 40
assert version > 0 or len(program) in [20, 32]
return encode_segwit_address("bc" if main else "bcrt", version, program)
return encode_segwit_address("ltc" if main else "rltc", version, program)
def script_to_p2wsh(script, main=False):
script = check_script(script)

View File

@ -76,7 +76,7 @@ def get_filename(dirname, n_node):
def write_all_rpc_commands(dirname, node):
"""
Write out a list of all RPC functions available in `bitcoin-cli` for
Write out a list of all RPC functions available in `litecoin-cli` for
coverage comparison. This will only happen once per coverage
directory.

View File

@ -28,6 +28,7 @@ import socket
import struct
import time
import litecoin_scrypt
from test_framework.siphash import siphash256
from test_framework.util import hex_str_to_bytes, assert_equal
@ -617,6 +618,7 @@ class CBlockHeader:
self.nNonce = header.nNonce
self.sha256 = header.sha256
self.hash = header.hash
self.scrypt256 = header.scrypt256
self.calc_sha256()
def set_null(self):
@ -628,6 +630,7 @@ class CBlockHeader:
self.nNonce = 0
self.sha256 = None
self.hash = None
self.scrypt256 = None
def deserialize(self, f):
self.nVersion = struct.unpack("<i", f.read(4))[0]
@ -638,6 +641,7 @@ class CBlockHeader:
self.nNonce = struct.unpack("<I", f.read(4))[0]
self.sha256 = None
self.hash = None
self.scrypt256 = None
def serialize(self):
r = b""
@ -660,9 +664,11 @@ class CBlockHeader:
r += struct.pack("<I", self.nNonce)
self.sha256 = uint256_from_str(hash256(r))
self.hash = encode(hash256(r)[::-1], 'hex_codec').decode('ascii')
self.scrypt256 = uint256_from_str(litecoin_scrypt.getPoWHash(r))
def rehash(self):
self.sha256 = None
self.scrypt256 = None
self.calc_sha256()
return self.sha256
@ -726,7 +732,7 @@ class CBlock(CBlockHeader):
def is_valid(self):
self.calc_sha256()
target = uint256_from_compact(self.nBits)
if self.sha256 > target:
if self.scrypt256 > target:
return False
for tx in self.vtx:
if not tx.is_valid():
@ -738,7 +744,7 @@ class CBlock(CBlockHeader):
def solve(self):
self.rehash()
target = uint256_from_compact(self.nBits)
while self.sha256 > target:
while self.scrypt256 > target:
self.nNonce += 1
self.rehash()

View File

@ -110,8 +110,8 @@ MESSAGEMAP = {
}
MAGIC_BYTES = {
"mainnet": b"\xf9\xbe\xb4\xd9", # mainnet
"testnet3": b"\x0b\x11\x09\x07", # testnet3
"mainnet": b"\xfb\xc0\xb6\xdb", # mainnet
"testnet4": b"\xfd\xd2\xc8\xf1", # testnet3
"regtest": b"\xfa\xbf\xb5\xda", # regtest
"signet": b"\x0a\x03\xcf\x40", # signet
}
@ -148,7 +148,7 @@ class P2PConnection(asyncio.Protocol):
self.on_connection_send_msg = None
self.recvbuf = b""
self.magic_bytes = MAGIC_BYTES[net]
logger.debug('Connecting to Bitcoin Node: %s:%d' % (self.dstaddr, self.dstport))
logger.debug('Connecting to Litecoin Node: %s:%d' % (self.dstaddr, self.dstport))
loop = NetworkThread.network_event_loop
conn_gen_unsafe = loop.create_connection(lambda: self, host=self.dstaddr, port=self.dstport)

View File

@ -74,9 +74,9 @@ class BitcoinTestMetaClass(type):
class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
"""Base class for a bitcoin test script.
"""Base class for a litecoin test script.
Individual bitcoin test scripts should subclass this class and override the set_test_params() and run_test() methods.
Individual litecoin test scripts should subclass this class and override the set_test_params() and run_test() methods.
Individual tests can also override the following methods to customize the test setup:
@ -153,9 +153,9 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
previous_releases_path = os.getenv("PREVIOUS_RELEASES_DIR") or os.getcwd() + "/releases"
parser = argparse.ArgumentParser(usage="%(prog)s [options]")
parser.add_argument("--nocleanup", dest="nocleanup", default=False, action="store_true",
help="Leave bitcoinds and test.* datadir on exit or error")
help="Leave litecoinds and test.* datadir on exit or error")
parser.add_argument("--noshutdown", dest="noshutdown", default=False, action="store_true",
help="Don't stop bitcoinds after the test execution")
help="Don't stop litecoinds after the test execution")
parser.add_argument("--cachedir", dest="cachedir", default=os.path.abspath(os.path.dirname(os.path.realpath(__file__)) + "/../../cache"),
help="Directory for caching pregenerated datadirs (default: %(default)s)")
parser.add_argument("--tmpdir", dest="tmpdir", help="Root directory for datadirs")
@ -279,7 +279,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
else:
for node in self.nodes:
node.cleanup_on_exit = False
self.log.info("Note: bitcoinds were not stopped and may still be running")
self.log.info("Note: litecoinds were not stopped and may still be running")
should_clean_up = (
not self.options.nocleanup and
@ -484,7 +484,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
conf.write(conf_data.replace('[regtest]', ''))
def start_node(self, i, *args, **kwargs):
"""Start a bitcoind"""
"""Start a litecoind"""
node = self.nodes[i]
@ -495,7 +495,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
coverage.write_all_rpc_commands(self.options.coveragedir, node.rpc)
def start_nodes(self, extra_args=None, *args, **kwargs):
"""Start multiple bitcoinds"""
"""Start multiple litecoinds"""
if extra_args is None:
extra_args = [None] * self.num_nodes
@ -515,12 +515,12 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
coverage.write_all_rpc_commands(self.options.coveragedir, node.rpc)
def stop_node(self, i, expected_stderr='', wait=0):
"""Stop a bitcoind test node"""
"""Stop a litecoind test node"""
self.nodes[i].stop_node(expected_stderr, wait=wait)
self.nodes[i].wait_until_stopped()
def stop_nodes(self, wait=0):
"""Stop multiple bitcoind test nodes"""
"""Stop multiple litecoind test nodes"""
for node in self.nodes:
# Issue RPC to stop nodes
node.stop_node(wait=wait)

View File

@ -2,7 +2,7 @@
# Copyright (c) 2017-2020 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Class for bitcoind node under test"""
"""Class for litecoind node under test"""
import contextlib
import decimal
@ -50,7 +50,7 @@ class ErrorMatch(Enum):
class TestNode():
"""A class for representing a bitcoind node under test.
"""A class for representing a litecoind node under test.
This class contains:
@ -206,19 +206,19 @@ class TestNode():
self.process = subprocess.Popen(self.args + extra_args, env=subp_env, stdout=stdout, stderr=stderr, cwd=cwd, **kwargs)
self.running = True
self.log.debug("bitcoind started, waiting for RPC to come up")
self.log.debug("litecoind started, waiting for RPC to come up")
if self.start_perf:
self._start_perf()
def wait_for_rpc_connection(self):
"""Sets up an RPC connection to the bitcoind process. Returns False if unable to connect."""
"""Sets up an RPC connection to the litecoind process. Returns False if unable to connect."""
# Poll at a rate of four times per second
poll_per_s = 4
for _ in range(poll_per_s * self.rpc_timeout):
if self.process.poll() is not None:
raise FailedToStartError(self._node_msg(
'bitcoind exited with status {} during initialization'.format(self.process.returncode)))
'litecoind exited with status {} during initialization'.format(self.process.returncode)))
try:
rpc = get_rpc_proxy(
rpc_url(self.datadir, self.index, self.chain, self.rpchost),
@ -276,7 +276,7 @@ class TestNode():
if "No RPC credentials" not in str(e):
raise
time.sleep(1.0 / poll_per_s)
self._raise_assertion_error("Unable to connect to bitcoind after {}s".format(self.rpc_timeout))
self._raise_assertion_error("Unable to connect to litecoind after {}s".format(self.rpc_timeout))
def wait_for_cookie_credentials(self):
"""Ensures auth cookie credentials can be read, e.g. for testing CLI with -rpcwait before RPC connection is up."""
@ -473,11 +473,11 @@ class TestNode():
def assert_start_raises_init_error(self, extra_args=None, expected_msg=None, match=ErrorMatch.FULL_TEXT, *args, **kwargs):
"""Attempt to start the node and expect it to raise an error.
extra_args: extra arguments to pass through to bitcoind
expected_msg: regex that stderr should match when bitcoind fails
extra_args: extra arguments to pass through to litecoind
expected_msg: regex that stderr should match when litecoind fails
Will throw if bitcoind starts without an error.
Will throw if an expected_msg is provided and it does not match bitcoind's stdout."""
Will throw if litecoind starts without an error.
Will throw if an expected_msg is provided and it does not match litecoind's stdout."""
with tempfile.NamedTemporaryFile(dir=self.stderr_dir, delete=False) as log_stderr, \
tempfile.NamedTemporaryFile(dir=self.stdout_dir, delete=False) as log_stdout:
try:
@ -486,7 +486,7 @@ class TestNode():
self.stop_node()
self.wait_until_stopped()
except FailedToStartError as e:
self.log.debug('bitcoind failed to start: %s', e)
self.log.debug('litecoind failed to start: %s', e)
self.running = False
self.process = None
# Check stderr for expected message
@ -507,9 +507,9 @@ class TestNode():
'Expected message "{}" does not fully match stderr:\n"{}"'.format(expected_msg, stderr))
else:
if expected_msg is None:
assert_msg = "bitcoind should have exited with an error"
assert_msg = "litecoind should have exited with an error"
else:
assert_msg = "bitcoind should have exited with expected error " + expected_msg
assert_msg = "litecoind should have exited with expected error " + expected_msg
self._raise_assertion_error(assert_msg)
def add_p2p_connection(self, p2p_conn, *, wait_for_verack=True, **kwargs):
@ -578,7 +578,7 @@ def arg_to_cli(arg):
class TestNodeCLI():
"""Interface to bitcoin-cli for an individual node"""
"""Interface to litecoin-cli for an individual node"""
def __init__(self, binary, datadir):
self.options = []
self.binary = binary
@ -606,7 +606,7 @@ class TestNodeCLI():
return results
def send_cli(self, command=None, *args, **kwargs):
"""Run bitcoin-cli command. Deserializes returned string as python object."""
"""Run litecoin-cli command. Deserializes returned string as python object."""
pos_args = [arg_to_cli(arg) for arg in args]
named_args = [str(key) + "=" + arg_to_cli(value) for (key, value) in kwargs.items()]
assert not (pos_args and named_args), "Cannot use positional arguments and named arguments in the same litecoin-cli call"

View File

@ -438,8 +438,8 @@ def run_tests(*, test_list, src_dir, build_dir, tmpdir, jobs=1, enable_coverage=
# Warn if bitcoind is already running
try:
# pgrep exits with code zero when one or more matching processes found
if subprocess.run(["pgrep", "-x", "bitcoind"], stdout=subprocess.DEVNULL).returncode == 0:
print("%sWARNING!%s There is already a bitcoind process running on this system. Tests may fail unexpectedly due to resource contention!" % (BOLD[1], BOLD[0]))
if subprocess.run(["pgrep", "-x", "litecoind"], stdout=subprocess.DEVNULL).returncode == 0:
print("%sWARNING!%s There is already a litecoind process running on this system. Tests may fail unexpectedly due to resource contention!" % (BOLD[1], BOLD[0]))
except OSError:
# pgrep not supported
pass
@ -713,7 +713,7 @@ class RPCCoverage():
Coverage calculation works by having each test script subprocess write
coverage files into a particular directory. These files contain the RPC
commands invoked during testing, as well as a complete listing of RPC
commands per `bitcoin-cli help` (`rpc_interface.txt`).
commands per `litecoin-cli help` (`rpc_interface.txt`).
After all tests complete, the commands run are combined and diff'd against
the complete list to calculate uncovered RPC commands.

View File

@ -335,16 +335,16 @@
{ "exec": "./litecoin-tx",
"args":
["-create",
"in=4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485:0",
"set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]",
"set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485\",\"vout\":\"0foo\",\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]",
"in=6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7:0",
"set=privatekeys:[\"T3Eyvg7Me8fuajt2RJvQaRokRabBweiyBWVJiQG8P1bwDUEXPhqv\"]",
"set=prevtxs:[{\"txid\":\"6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7\",\"vout\":\"0foo\",\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]",
"sign=ALL",
"outaddr=0.001:193P6LtvS4nCnkDvM9uXn1gsSRqh4aDAz7"],
"outaddr=0.001:LXC44cQhuRufFtaDhDYv4q8nxQJBkUAsXp"],
"return_code": 1,
"error_txt": "error: prevtxs internal object typecheck fail",
"description": "Tests the check for invalid vout index in prevtxs for sign"
},
{ "exec": "./bitcoin-tx",
{ "exec": "./litecoin-tx",
"args":
["-create",
"in=6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7:0",
@ -423,7 +423,7 @@
"error_txt": "error: Uncompressed pubkeys are not useable for SegWit outputs",
"description": "Creates a new transaction with a single pay-to-pub-key output, wrapped in P2SH (output as json)"
},
{ "exec": "./bitcoin-tx",
{ "exec": "./litecoin-tx",
"args":
["-create",
"in=69e9c12d30a6cd598a31ddfcaabeb9d9f0baf8938bf0ba6610beb04f589cc5ef:0",
@ -551,12 +551,12 @@
"output_cmp": "txcreatemultisig4.json",
"description": "Creates a new transaction with a single 2-of-3 multisig in a P2WSH output, wrapped in P2SH (output in json)"
},
{ "exec": "./bitcoin-tx",
{ "exec": "./litecoin-tx",
"args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:047d1368ba7ae01c94bc32293efd70bd7e3be7aa7912d07d0b1c659c1008d179b8642f5fb90f47580feb29f045e216ff5a4716d3a0fed36da414d332046303c44a:S"],
"output_cmp": "txcreatemultisig5.json",
"description": "Uncompressed pubkeys should work just fine for non-witness outputs"
},
{ "exec": "./bitcoin-tx",
{ "exec": "./litecoin-tx",
"args": ["-json", "-create", "outmultisig=1:2:3:02a5613bd857b7048924264d1e70e08fb2a7e6527d32b7ab1bb993ac59964ff397:021ac43c7ff740014c3b33737ede99c967e4764553d1b2b83db77c83b8715fa72d:047d1368ba7ae01c94bc32293efd70bd7e3be7aa7912d07d0b1c659c1008d179b8642f5fb90f47580feb29f045e216ff5a4716d3a0fed36da414d332046303c44a:WS"],
"return_code": 1,
"error_txt": "error: Uncompressed pubkeys are not useable for SegWit outputs",

View File

@ -18,8 +18,8 @@
"reqSigs": 2,
"type": "multisig",
"addresses": [
"La2DHFRvKvGwR78JkkMCzEw6BJUrSQa72A",
"LZkrFMdJCxcpf2fSorE4MJHUNZGfAnD7gf",
"La2DHFRvKvGwR78JkkMCzEw6BJUrSQa72A",
"LZkrFMdJCxcpf2fSorE4MJHUNZGfAnD7gf",
"LNZrr8v1gBobYuA3ABbTkRnuf7n5RRo5Cz"
]
}

View File

@ -18,7 +18,7 @@
"reqSigs": 1,
"type": "scripthash",
"addresses": [
"MAVWzxXm8KGkZTesqLtqywzrvbs96FEoKy"
"34HNh57oBCRKkxNyjTuWAJkTbuGh6jg2Ms"
]
}
}

View File

@ -18,7 +18,7 @@
"reqSigs": 1,
"type": "witness_v0_scripthash",
"addresses": [
"bc1qu9dgdg330r6r84g5mw7wqshg04exv2uttmw2elfwx74h5tgntuzs44gyfg"
"ltc1qu9dgdg330r6r84g5mw7wqshg04exv2uttmw2elfwx74h5tgntuzsk3x5nd"
]
}
}

View File

@ -18,7 +18,7 @@
"reqSigs": 1,
"type": "scripthash",
"addresses": [
"MJ1PnsRQqxToRBkMf74x1etf2c8i2imj3Y"
"3BoFUz1StqcNcgUTZE5cC1eFhuYFzj3fGH"
]
}
}

View File

@ -18,7 +18,7 @@
"reqSigs": 1,
"type": "witness_v0_keyhash",
"addresses": [
"bc1q5fgkuac9s2ry56jka5s6zqsyfcugcchry5cwu0"
"ltc1q5fgkuac9s2ry56jka5s6zqsyfcugcchrqgz2yl"
]
}
}

View File

@ -18,7 +18,7 @@
"reqSigs": 1,
"type": "scripthash",
"addresses": [
"MP18g1foe3PhM8ydEFVSJ2DMpcdvhLebXR"
"3GnzN8FqgvYGYdhj8NW6UNxxVv3Uj1ApQn"
]
}
}

View File

@ -18,7 +18,7 @@
"reqSigs": 1,
"type": "scripthash",
"addresses": [
"MJHYtjeEeGX586VC9HahUfnn4UxFmqozk8"
"3C5QarEGh9feKbDJ3QbMf2YNjnMoiPDhNp"
]
}
}

View File

@ -18,7 +18,7 @@
"reqSigs": 1,
"type": "witness_v0_scripthash",
"addresses": [
"bc1qp0lfxhnscvsu0j36l36uurgv5tuck4pzuqytkvwqp3kh78cupttqyf705v"
"ltc1qp0lfxhnscvsu0j36l36uurgv5tuck4pzuqytkvwqp3kh78cupttq8dslwf"
]
}
}

View File

@ -18,7 +18,7 @@
"reqSigs": 1,
"type": "scripthash",
"addresses": [
"MHaYuXfcFR7myUVrVpVjjVCngZLKDuRbn3"
"3BNQbeFeJJGMAyDxPwWPuqxPMrjsFLjk3f"
]
}
}

View File

@ -1 +1 @@
01000000018594c5bdcaec8f06b78b596f31cd292a294fd031e24eec716f43dac91ea7494d000000008a4730440220131432090a6af42da3e8335ff110831b41a44f4e9d18d88f5d50278380696c7202200fc2e48938f323ad13625890c0ea926c8a189c08b8efc38376b20c8a2188e96e01410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8ffffffff01a0860100000000001976a9145834479edbbe0539b31ffd3a8f8ebadc2165ed0188ac00000000
0100000001f77bd0a57e5b5e041e95567e0f01c3789af7f624ff490f756fb408362489276c0000000000ffffffff01a0860100000000001976a914834584e0afbd77db57fcf4a3a076b8d3e02aa6fb88ac00000000

View File

@ -1,18 +1,18 @@
{
"txid": "ffc7e509ec3fd60a182eb712621d41a47dc7d4ff310a70826c2fb0e9afb3fa02",
"hash": "ffc7e509ec3fd60a182eb712621d41a47dc7d4ff310a70826c2fb0e9afb3fa02",
"txid": "bf7c8b55745d4f9d9b2e33b5fbec5d08e38f3dcfc1838cb424a16db3ebc52f13",
"hash": "bf7c8b55745d4f9d9b2e33b5fbec5d08e38f3dcfc1838cb424a16db3ebc52f13",
"version": 1,
"size": 223,
"vsize": 223,
"weight": 892,
"size": 85,
"vsize": 85,
"weight": 340,
"locktime": 0,
"vin": [
{
"txid": "6c2789243608b46f750f49ff24f6f79a78c3010f7e56951e045e5b7ea5d07bf7",
"vout": 0,
"scriptSig": {
"asm": "30440220131432090a6af42da3e8335ff110831b41a44f4e9d18d88f5d50278380696c7202200fc2e48938f323ad13625890c0ea926c8a189c08b8efc38376b20c8a2188e96e[ALL] 0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",
"hex": "4730440220131432090a6af42da3e8335ff110831b41a44f4e9d18d88f5d50278380696c7202200fc2e48938f323ad13625890c0ea926c8a189c08b8efc38376b20c8a2188e96e01410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
"asm": "",
"hex": ""
},
"sequence": 4294967295
}
@ -32,5 +32,5 @@
}
}
],
"hex": "01000000018594c5bdcaec8f06b78b596f31cd292a294fd031e24eec716f43dac91ea7494d000000008a4730440220131432090a6af42da3e8335ff110831b41a44f4e9d18d88f5d50278380696c7202200fc2e48938f323ad13625890c0ea926c8a189c08b8efc38376b20c8a2188e96e01410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8ffffffff01a0860100000000001976a9145834479edbbe0539b31ffd3a8f8ebadc2165ed0188ac00000000"
"hex": "0100000001f77bd0a57e5b5e041e95567e0f01c3789af7f624ff490f756fb408362489276c0000000000ffffffff01a0860100000000001976a914834584e0afbd77db57fcf4a3a076b8d3e02aa6fb88ac00000000"
}