diff --git a/src/chainparams.cpp b/src/chainparams.cpp index b5a608a2e095..dd584f98c820 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -299,10 +299,10 @@ class SigNetParams : public CChainParams { consensus.fPowNoRetargeting = false; consensus.nRuleChangeActivationThreshold = 1916; consensus.nMinerConfirmationWindow = 2016; - consensus.powLimit = uint256S("00002adc28000000000000000000000000000000000000000000000000000000"); + consensus.powLimit = uint256S("00000377ae000000000000000000000000000000000000000000000000000000"); consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28; - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 1539478800; - consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT; + consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 1199145601; // January 1, 2008 + consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = 1230767999; // December 31, 2008 // message start is defined as the first 4 bytes of the sha256d of the block script CHashWriter h(SER_DISK, 0); @@ -315,8 +315,10 @@ class SigNetParams : public CChainParams { m_assumed_blockchain_size = 0; m_assumed_chain_state_size = 0; - genesis = CreateGenesisBlock(1534313275, 100123, 0x1e2adc28, 1, 50 * COIN); + genesis = CreateGenesisBlock(1598918400, 52613770, 0x1e0377ae, 1, 50 * COIN); consensus.hashGenesisBlock = genesis.GetHash(); + assert(consensus.hashGenesisBlock == uint256S("0x00000008819873e925422c1ff0f99f7cc9bbb232af63a077a480a3633bee1ef6")); + assert(genesis.hashMerkleRoot == uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b")); vFixedSeeds.clear(); diff --git a/src/signet.cpp b/src/signet.cpp index a77f7b734afb..a29f89b58e7b 100644 --- a/src/signet.cpp +++ b/src/signet.cpp @@ -83,12 +83,12 @@ SignetTxs SignetTxs::Create(const CBlock& block, const CScript& challenge) // responses from block coinbase tx // find and delete signet signature - if (block.vtx.empty()) return {tx_to_spend, tx_spending}; // no coinbase tx in block; invalid + if (block.vtx.empty()) return invalid(); // no coinbase tx in block; invalid CMutableTransaction modified_cb(*block.vtx.at(0)); const int cidx = GetWitnessCommitmentIndex(block); if (cidx == NO_WITNESS_COMMITMENT) { - return {tx_to_spend, tx_spending}; // require a witness commitment + return invalid(); // require a witness commitment } CScript& witness_commitment = modified_cb.vout.at(cidx).scriptPubKey; @@ -100,10 +100,10 @@ SignetTxs SignetTxs::Create(const CBlock& block, const CScript& challenge) try { VectorReader v(SER_NETWORK, INIT_PROTO_VERSION, signet_solution, 0); v >> tx_spending.vin[0].scriptSig; - if (!v.empty()) v >> tx_spending.vin[0].scriptWitness.stack; - if (!v.empty()) return {tx_to_spend, tx_spending}; // extraneous data encountered; invalid + v >> tx_spending.vin[0].scriptWitness.stack; + if (!v.empty()) return invalid(); // extraneous data encountered } catch (const std::exception&) { - return {tx_to_spend, tx_spending}; // excepted; invalid + return invalid(); // parsing error } } uint256 signet_merkle = ComputeModifiedMerkleRoot(modified_cb, block); @@ -117,7 +117,7 @@ SignetTxs SignetTxs::Create(const CBlock& block, const CScript& challenge) tx_to_spend.vin[0].scriptSig << block_data; tx_spending.vin[0].prevout = COutPoint(tx_to_spend.GetHash(), 0); - return {tx_to_spend, tx_spending, true}; + return {tx_to_spend, tx_spending}; } // Signet block solution checker diff --git a/src/signet.h b/src/signet.h index 94223387d999..5694716fb610 100644 --- a/src/signet.h +++ b/src/signet.h @@ -23,8 +23,11 @@ bool CheckSignetBlockSolution(const CBlock& block, const Consensus::Params& cons */ class SignetTxs { private: + struct invalid {}; + SignetTxs(invalid i) : m_to_spend(), m_to_sign(), m_valid(false) { } + template - SignetTxs(const T1& to_spend, const T2& to_sign, bool valid = false) : m_to_spend{to_spend}, m_to_sign{to_sign}, m_valid(valid) { } + SignetTxs(const T1& to_spend, const T2& to_sign) : m_to_spend{to_spend}, m_to_sign{to_sign}, m_valid(true) { } static SignetTxs Create(const CBlock& block, const CScript& challenge); diff --git a/src/test/pow_tests.cpp b/src/test/pow_tests.cpp index 0f9872f434b2..ca49b89ad84a 100644 --- a/src/test/pow_tests.cpp +++ b/src/test/pow_tests.cpp @@ -135,4 +135,51 @@ BOOST_AUTO_TEST_CASE(GetBlockProofEquivalentTime_test) } } +void sanity_check_chainparams(std::string chainName) +{ + const auto chainParams = CreateChainParams(chainName); + const auto consensus = chainParams->GetConsensus(); + + // hash genesis is correct + BOOST_CHECK_EQUAL(consensus.hashGenesisBlock, chainParams->GenesisBlock().GetHash()); + + // target timespan is an even multiple of spacing + BOOST_CHECK_EQUAL(consensus.nPowTargetTimespan % consensus.nPowTargetSpacing, 0); + + // genesis nBits is positive, doesn't overflow and is lower than powLimit + arith_uint256 pow_compact; + bool neg, over; + pow_compact.SetCompact(chainParams->GenesisBlock().nBits, &neg, &over); + BOOST_CHECK(!neg && pow_compact != 0); + BOOST_CHECK(!over); + BOOST_CHECK(UintToArith256(consensus.powLimit) >= pow_compact); + + // check max target * 4*nPowTargetTimespan doesn't overflow -- see pow.cpp:CalculateNextWorkRequired() + if (!consensus.fPowNoRetargeting) { + arith_uint256 targ_max("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"); + targ_max /= consensus.nPowTargetTimespan*4; + BOOST_CHECK(UintToArith256(consensus.powLimit) < targ_max); + } +} + +BOOST_AUTO_TEST_CASE(ChainParams_MAIN_sanity) +{ + sanity_check_chainparams(CBaseChainParams::MAIN); +} + +BOOST_AUTO_TEST_CASE(ChainParams_REGTEST_sanity) +{ + sanity_check_chainparams(CBaseChainParams::REGTEST); +} + +BOOST_AUTO_TEST_CASE(ChainParams_TESTNET_sanity) +{ + sanity_check_chainparams(CBaseChainParams::TESTNET); +} + +BOOST_AUTO_TEST_CASE(ChainParams_SIGNET_sanity) +{ + sanity_check_chainparams(CBaseChainParams::SIGNET); +} + BOOST_AUTO_TEST_SUITE_END() diff --git a/test/functional/feature_signet.py b/test/functional/feature_signet.py index b2d28094dbd5..e4f69719a2d7 100755 --- a/test/functional/feature_signet.py +++ b/test/functional/feature_signet.py @@ -10,16 +10,16 @@ from test_framework.util import assert_equal signet_blocks = [ - '000000209d7961aee045f252e2653297ff04985bc9e70fea2a15b7c79eaf677f2d030000c18056977d14f38c21c844a9a5e0709a71c9479343149d8bc29d1d6eb9f3eca2c045315f28dc2a1ea5c4020001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025151feffffff0200f2052a01000000000000000000000000766a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4eecc7daa24900473044022006cc48d7c3f13ce39ceaa8b4a0bb90dc3912f303b909c79ff02ecbc80136cbce0220353a8353542812ae4ee84b669dcfb28f6417258122e8268b58903c3a25f28729010120000000000000000000000000000000000000000000000000000000000000000000000000', - '00000020bc632b80f00c410c9ba86f4b208c95ebe41531f737a39c668c9bab17b5180000a5b1ec07c41066c837ecb7fc15d648bef65e7b4ba87b6c9dde1a1a36937d734fc545315f28dc2a1e562a040001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025251feffffff0200f2052a01000000000000000000000000766a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4eecc7daa2490047304402201b9dedfb80346b66fd8962a0f874de88b578d7008cf9c38525c0ea823c3036ba022012d8eb97c5e66b406e7f510bac1480523ce90da0c8706ddd5481f349498da1b9010120000000000000000000000000000000000000000000000000000000000000000000000000', - '00000020fa337bb2bdf372bfdbab85b8d56325b3e566ab8c0c24ec03ce9641eeae250000d9cb0ae3e04f2f330b96dd6182fe3d6e0c02f468d8203085843825087ee69c3214bb315f28dc2a1e9b5e0a0001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025351feffffff0200f2052a01000000000000000000000000766a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4eecc7daa249004730440220415b7172231277ef85ec2516177f1316628c99c4c35e00f9c8b5de488c02463902205342dafbbf3922ffbbc46d692a5fa8b47afd977453aac530de14bc7424bda085010120000000000000000000000000000000000000000000000000000000000000000000000000', - '0000002016d90f09ec92b66e7233c796bd1ef64fc022b26be70b04b3614eba02b114000056da87b60f9517926611db57d785d91cc905089018ab976ef0a07e27cbe73ec5ceff315f28dc2a1e1450080001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025451feffffff0200f2052a01000000000000000000000000766a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4eecc7daa249004730440220378df0d77b449096b5b5475586ee1b2834044219b4bbff8080380701ed48b52602205d73312e4ce98360f1fc5c0951a7fb6b7fb26cc3d198afc960f025601f76e9f4010120000000000000000000000000000000000000000000000000000000000000000000000000', - '00000020771037dd773ff36da73d886c1b438e6d07c4d85c0a8d704bce82fb4c761c00006b7e50cb80afedc2ed4bf48ca27476f055aeac59f9ba6c6a30fc8b464b866c6e9000325f28dc2a1e82e4020001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025551feffffff0200f2052a01000000160014218756592118b9349807ce9fd91d2bdc254d79730000000000000000766a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4eecc7daa2490047304402203f254ee2a4958382f17920c5a7067f1fe4d5810c6ab9b02a2c3dc730caa46de802207d8cf6038e78f06337365ab76eababed0078f46375e3994e66f3bf08df48d830010120000000000000000000000000000000000000000000000000000000000000000000000000', - '00000020a6143c64d2d72db0740b78ae82a4b522125d0c1d431c2d636cb04789600a0000bb11dac7fd024ada923231bd0d17107facc4e2989cda9c0e8b4ff4cdfba414379600325f28dc2a1e492f120001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025651feffffff0200f2052a01000000160014218756592118b9349807ce9fd91d2bdc254d79730000000000000000766a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4eecc7daa249004730440220145e90993a216261a685263619056e1e7504ccbac0a6139e3cb68d4102266fa10220380054d093bf58a9afbdc0d5b321d7fc688823e85248bd37d9d8d8e49497a7ff010120000000000000000000000000000000000000000000000000000000000000000000000000', - '00000020eb7e4051e7bd10636d5e7380ca74771b284425bf69637d2c88e841d33e0500007768a8a6536a5d55b2125fd1fd80fbc1a5722728cf1668ffc2faaa9a83d5a6ee261a325f28dc2a1e8127000001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025751feffffff0200f2052a0100000047512103ad5e0edad18cb1f0fc0d28a3d4f1f3e445640337489abb10404f2d1e086be430210359ef5021964fe22d6f8e05b2463c9540ce96883fe3b278760f048f5189f2e6c452ae0000000000000000766a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4eecc7daa2490047304402204109f2014dd4a9bcbdb43b14a67eb2dd11d55bc205b20cb73884d2d01af466400220209a14c5d38d0f36b080f0d3807917340e0db8fbaa327ce58a44aed5228112eb010120000000000000000000000000000000000000000000000000000000000000000000000000', - '000000204765c5525340783e50e5ab9a60ed45247c0a5376d113ab9027d04524dd260000bfae9d0edb60bcc8314458341a13d5f8d2def60b61abceaf1dda8a03ec7c71c92a1a325f28dc2a1e6d14000001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025851feffffff0200f2052a0100000047512103ad5e0edad18cb1f0fc0d28a3d4f1f3e445640337489abb10404f2d1e086be430210359ef5021964fe22d6f8e05b2463c9540ce96883fe3b278760f048f5189f2e6c452ae0000000000000000766a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4eecc7daa249004730440220179ce76d5f2293a781348eec5ced16ca68d0e12dfda30f169ef8f78952e2242002207a1e848f16019376ada366f00e3d2b48d210bc9f2e2f73c2b82bbd2d170d608d010120000000000000000000000000000000000000000000000000000000000000000000000000', - '0000002090e20d551753314673ab7b35a4e79276b50b2742acb94d6898f68b8bcb160000cdcb82f191a03ac8d759e33adeaa806d840f1a5aab27d87d62528c834cc8f55d131b325f28dc2a1e791a010001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025951feffffff0200f2052a0100000047512103ad5e0edad18cb1f0fc0d28a3d4f1f3e445640337489abb10404f2d1e086be430210359ef5021964fe22d6f8e05b2463c9540ce96883fe3b278760f048f5189f2e6c452ae0000000000000000766a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4eecc7daa24900473044022052c9fae3f5d4d3e608f71222f15ff6250d70c38877a929a6e3e790b941ca67c1022053f259179e007e184b7fbbd3f0f65b9563f932149f20c4aa772ad6c4343ce59d010120000000000000000000000000000000000000000000000000000000000000000000000000', - '00000020bbb57e867e82507e4643c6ecdd3c1c185745dbcbf6cd12c72736764ea52a000054f1ff647eef12aa3659d102fccbf9e09f9201bc5372c9e0f29b9e74bec44b29261b325f28dc2a1e9d97000001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025a51feffffff0200f2052a0100000047512103ad5e0edad18cb1f0fc0d28a3d4f1f3e445640337489abb10404f2d1e086be430210359ef5021964fe22d6f8e05b2463c9540ce96883fe3b278760f048f5189f2e6c452ae0000000000000000766a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4eecc7daa24900473044022070264c40d291b035dc734d8faec72302b478869fa6a06e5cf42a3ef11da476b102207bc0817928969ba9aa036739061dfef9edf79ea0638e539e0fd2f30439c2df59010120000000000000000000000000000000000000000000000000000000000000000000000000', + '00000020f61eee3b63a380a477a063af32b2bbc97c9ff9f01f2c4225e973988108000000f575c83235984e7dc4afc1f30944c170462e84437ab6f2d52e16878a79e4678bd1914d5fae77031eccf4070001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025151feffffff0200f2052a010000001600149243f727dd5343293eb83174324019ec16c2630f0000000000000000776a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4fecc7daa2490047304402205e423a8754336ca99dbe16509b877ef1bf98d008836c725005b3c787c41ebe46022047246e4467ad7cc7f1ad98662afcaf14c115e0095a227c7b05c5182591c23e7e01000120000000000000000000000000000000000000000000000000000000000000000000000000', + '00000020533b53ded9bff4adc94101d32400a144c54edc5ed492a3b26c63b2d686000000b38fef50592017cfafbcab88eb3d9cf50b2c801711cad8299495d26df5e54812e7914d5fae77031ecfdd0b0001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025251feffffff0200f2052a01000000160014fd09839740f0e0b4fc6d5e2527e4022aa9b89dfa0000000000000000776a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4fecc7daa24900473044022031d64a1692cdad1fc0ced69838169fe19ae01be524d831b95fcf5ea4e6541c3c02204f9dea0801df8b4d0cd0857c62ab35c6c25cc47c930630dc7fe723531daa3e9b01000120000000000000000000000000000000000000000000000000000000000000000000000000', + '000000202960f3752f0bfa8858a3e333294aedc7808025e868c9dc03e71d88bb320000007765fcd3d5b4966beb338bba2675dc2cf2ad28d4ad1d83bdb6f286e7e27ac1f807924d5fae77031e81d60b0001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025351feffffff0200f2052a010000001600141e5fb426042692ae0e87c070e78c39307a5661c20000000000000000776a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4fecc7daa2490047304402205de93694763a42954865bcf1540cb82958bc62d0ec4eee02070fb7937cd037f4022067f333753bce47b10bc25eb6e1f311482e994c862a7e0b2d41ab1c8679fd1b1101000120000000000000000000000000000000000000000000000000000000000000000000000000', + '00000020b06443a13ae1d3d50faef5ecad38c6818194dc46abca3e972e2aacdae800000069a5829097e80fee00ac49a56ea9f82d741a6af84d32b3bc455cf31871e2a8ac27924d5fae77031e9c91050001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025451feffffff0200f2052a0100000016001430db2f8225dcf7751361ab38735de08190318cb70000000000000000776a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4fecc7daa2490047304402200936f5f9872f6df5dd242026ad52241a68423f7f682e79169a8d85a374eab9b802202cd2979c48b321b3453e65e8f92460db3fca93cbea8539b450c959f4fbe630c601000120000000000000000000000000000000000000000000000000000000000000000000000000', + '000000207ed403758a4f228a1939418a155e2ebd4ae6b26e5ffd0ae433123f7694010000542e80b609c5bc58af5bdf492e26d4f60cd43a3966c2e063c50444c29b3757a636924d5fae77031ee8601d0001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025551feffffff0200f2052a01000000160014edc207e014df34fa3885dff97d1129d356e1186a0000000000000000776a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4fecc7daa24900473044022021a3656609f85a66a2c5672ed9322c2158d57251040d2716ed202a1fe14f0c12022057d68bc6611f7a9424a7e00bbf3e27e6ae6b096f60bac624a094bc97a59aa1ff01000120000000000000000000000000000000000000000000000000000000000000000000000000', + '000000205bea0a88d1422c3df08d766ad72df95084d0700e6f873b75dd4e986c7703000002b57516d33ed60c2bdd9f93d6d5614083324c837e68e5ba6e04287a7285633585924d5fae77031ed171960001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025651feffffff0200f2052a010000001600143ae612599cf96f2442ce572633e0251116eaa52f0000000000000000776a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4fecc7daa24900473044022059a7c54de76bfdbb1dd44c78ea2dbd2bb4e97f4abad38965f41e76433e56423c022054bf17f04fe17415c0141f60eebd2b839200f574d8ad8d55a0917b92b0eb913401000120000000000000000000000000000000000000000000000000000000000000000000000000', + '00000020daf3b60d374b19476461f97540498dcfa2eb7016238ec6b1d022f82fb60100007a7ae65b53cb988c2ec92d2384996713821d5645ffe61c9acea60da75cd5edfa1a944d5fae77031e9dbb050001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025751feffffff0200f2052a01000000160014ef2dceae02e35f8137de76768ae3345d99ca68860000000000000000776a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4fecc7daa2490047304402202b3f946d6447f9bf17d00f3696cede7ee70b785495e5498274ee682a493befd5022045fc0bcf9332243168b5d35507175f9f374a8eba2336873885d12aada67ea5f601000120000000000000000000000000000000000000000000000000000000000000000000000000', + '00000020457cc5f3c2e1a5655bc20e20e48d33e1b7ea68786c614032b5c518f0b6000000541f36942d82c6e7248275ff15c8933487fbe1819c67a9ecc0f4b70bb7e6cf672a944d5fae77031e8f39860001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025851feffffff0200f2052a0100000016001472a27906947c06d034b38ba2fa13c6391a4832790000000000000000776a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4fecc7daa2490047304402202d62805ce60cbd60591f97f949b5ea5bd7e2307bcde343e6ea8394da92758e72022053a25370b0aa20da100189b7899a8f8675a0fdc60e38ece6b8a4f98edd94569e01000120000000000000000000000000000000000000000000000000000000000000000000000000', + '00000020a2eb61eb4f3831baa3a3363e1b42db4462663f756f07423e81ed30322102000077224de7dea0f8d0ec22b1d2e2e255f0a987b96fe7200e1a2e6373f48a2f5b7894954d5fae77031e36867e0001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025951feffffff0200f2052a01000000160014aa0ad9f26801258382e0734dceec03a4a75f60240000000000000000776a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4fecc7daa2490047304402206fa0d59990eed369bd7375767c9a6c9369fae209152b8674e520da270605528c0220749eed3b12dbe3f583f505d21803e4aef59c8e24c5831951eafa4f15a8f92c4e01000120000000000000000000000000000000000000000000000000000000000000000000000000', + '00000020a868e8514be5e46dabd6a122132f423f36a43b716a40c394e2a8d063e1010000f4c6c717e99d800c699c25a2006a75a0c5c09f432a936f385e6fce139cdbd1a5e9964d5fae77031e7d026e0001010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025a51feffffff0200f2052a01000000160014aaa671c82b138e3b8f510cd801e5f2bd0aa305940000000000000000776a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4fecc7daa24900473044022042309f4c3c7a1a2ac8c24f890f962df1c0086cec10be0868087cfc427520cb2702201dafee8911c269b7e786e242045bb57cef3f5b0f177010c6159abae42f646cc501000120000000000000000000000000000000000000000000000000000000000000000000000000', ] class SignetBasicTest(BitcoinTestFramework):