Litecoin: Fix various tests
This commit is contained in:
parent
09e4e7254f
commit
a1e47d9f0e
@ -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.
@ -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
|
||||
}
|
||||
]
|
||||
]
|
||||
]
|
||||
@ -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;
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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" : [
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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()
|
||||
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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'
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)]))
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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.
|
||||
|
||||
|
||||
@ -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()
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -18,8 +18,8 @@
|
||||
"reqSigs": 2,
|
||||
"type": "multisig",
|
||||
"addresses": [
|
||||
"La2DHFRvKvGwR78JkkMCzEw6BJUrSQa72A",
|
||||
"LZkrFMdJCxcpf2fSorE4MJHUNZGfAnD7gf",
|
||||
"La2DHFRvKvGwR78JkkMCzEw6BJUrSQa72A",
|
||||
"LZkrFMdJCxcpf2fSorE4MJHUNZGfAnD7gf",
|
||||
"LNZrr8v1gBobYuA3ABbTkRnuf7n5RRo5Cz"
|
||||
]
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
"reqSigs": 1,
|
||||
"type": "scripthash",
|
||||
"addresses": [
|
||||
"MAVWzxXm8KGkZTesqLtqywzrvbs96FEoKy"
|
||||
"34HNh57oBCRKkxNyjTuWAJkTbuGh6jg2Ms"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
"reqSigs": 1,
|
||||
"type": "witness_v0_scripthash",
|
||||
"addresses": [
|
||||
"bc1qu9dgdg330r6r84g5mw7wqshg04exv2uttmw2elfwx74h5tgntuzs44gyfg"
|
||||
"ltc1qu9dgdg330r6r84g5mw7wqshg04exv2uttmw2elfwx74h5tgntuzsk3x5nd"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
"reqSigs": 1,
|
||||
"type": "scripthash",
|
||||
"addresses": [
|
||||
"MJ1PnsRQqxToRBkMf74x1etf2c8i2imj3Y"
|
||||
"3BoFUz1StqcNcgUTZE5cC1eFhuYFzj3fGH"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
"reqSigs": 1,
|
||||
"type": "witness_v0_keyhash",
|
||||
"addresses": [
|
||||
"bc1q5fgkuac9s2ry56jka5s6zqsyfcugcchry5cwu0"
|
||||
"ltc1q5fgkuac9s2ry56jka5s6zqsyfcugcchrqgz2yl"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
"reqSigs": 1,
|
||||
"type": "scripthash",
|
||||
"addresses": [
|
||||
"MP18g1foe3PhM8ydEFVSJ2DMpcdvhLebXR"
|
||||
"3GnzN8FqgvYGYdhj8NW6UNxxVv3Uj1ApQn"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
"reqSigs": 1,
|
||||
"type": "scripthash",
|
||||
"addresses": [
|
||||
"MJHYtjeEeGX586VC9HahUfnn4UxFmqozk8"
|
||||
"3C5QarEGh9feKbDJ3QbMf2YNjnMoiPDhNp"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
"reqSigs": 1,
|
||||
"type": "witness_v0_scripthash",
|
||||
"addresses": [
|
||||
"bc1qp0lfxhnscvsu0j36l36uurgv5tuck4pzuqytkvwqp3kh78cupttqyf705v"
|
||||
"ltc1qp0lfxhnscvsu0j36l36uurgv5tuck4pzuqytkvwqp3kh78cupttq8dslwf"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
"reqSigs": 1,
|
||||
"type": "scripthash",
|
||||
"addresses": [
|
||||
"MHaYuXfcFR7myUVrVpVjjVCngZLKDuRbn3"
|
||||
"3BNQbeFeJJGMAyDxPwWPuqxPMrjsFLjk3f"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@ -1 +1 @@
|
||||
01000000018594c5bdcaec8f06b78b596f31cd292a294fd031e24eec716f43dac91ea7494d000000008a4730440220131432090a6af42da3e8335ff110831b41a44f4e9d18d88f5d50278380696c7202200fc2e48938f323ad13625890c0ea926c8a189c08b8efc38376b20c8a2188e96e01410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8ffffffff01a0860100000000001976a9145834479edbbe0539b31ffd3a8f8ebadc2165ed0188ac00000000
|
||||
0100000001f77bd0a57e5b5e041e95567e0f01c3789af7f624ff490f756fb408362489276c0000000000ffffffff01a0860100000000001976a914834584e0afbd77db57fcf4a3a076b8d3e02aa6fb88ac00000000
|
||||
|
||||
@ -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"
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user