mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 14:59:39 -04:00
Remove Taproot activation height
Drop DEPLOYMENT_TAPROOT from consensus.vDeployments. Bump MinBIP9WarningHeight. Clarify what is considered a BuriedDeployment and drop taproot from getdeploymentinfo RPC. Add a test to getblocktemplate to ensure the taproot rule is still set. Co-Authored-By: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>
This commit is contained in:
parent
a9a2b669f3
commit
f88b9cb471
9 changed files with 25 additions and 54 deletions
|
@ -58,7 +58,8 @@ BIPs that are implemented by Bitcoin Core:
|
||||||
Validation rules for Taproot (including Schnorr signatures and Tapscript
|
Validation rules for Taproot (including Schnorr signatures and Tapscript
|
||||||
leaves) are implemented as of **v0.21.0** ([PR 19953](https://github.com/bitcoin/bitcoin/pull/19953)),
|
leaves) are implemented as of **v0.21.0** ([PR 19953](https://github.com/bitcoin/bitcoin/pull/19953)),
|
||||||
with mainnet activation as of **v0.21.1** ([PR 21377](https://github.com/bitcoin/bitcoin/pull/21377),
|
with mainnet activation as of **v0.21.1** ([PR 21377](https://github.com/bitcoin/bitcoin/pull/21377),
|
||||||
[PR 21686](https://github.com/bitcoin/bitcoin/pull/21686)).
|
[PR 21686](https://github.com/bitcoin/bitcoin/pull/21686)),
|
||||||
|
always active as of **v24.0** ([PR 23536](https://github.com/bitcoin/bitcoin/pull/23536)).
|
||||||
* [`BIP 350`](https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki): Addresses for native v1+ segregated Witness outputs use Bech32m instead of Bech32 as of **v22.0** ([PR 20861](https://github.com/bitcoin/bitcoin/pull/20861)).
|
* [`BIP 350`](https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki): Addresses for native v1+ segregated Witness outputs use Bech32m instead of Bech32 as of **v22.0** ([PR 20861](https://github.com/bitcoin/bitcoin/pull/20861)).
|
||||||
* [`BIP 371`](https://github.com/bitcoin/bips/blob/master/bip-0371.mediawiki): Taproot fields for PSBT as of **v24.0** ([PR 22558](https://github.com/bitcoin/bitcoin/pull/22558)).
|
* [`BIP 371`](https://github.com/bitcoin/bips/blob/master/bip-0371.mediawiki): Taproot fields for PSBT as of **v24.0** ([PR 22558](https://github.com/bitcoin/bitcoin/pull/22558)).
|
||||||
* [`BIP 379`](https://github.com/bitcoin/bips/blob/master/bip-0379.md): Miniscript was partially implemented in **v24.0** ([PR 24148](https://github.com/bitcoin/bitcoin/pull/24148)), and fully implemented as of **v26.0** ([PR 27255](https://github.com/bitcoin/bitcoin/pull/27255)).
|
* [`BIP 379`](https://github.com/bitcoin/bips/blob/master/bip-0379.md): Miniscript was partially implemented in **v24.0** ([PR 24148](https://github.com/bitcoin/bitcoin/pull/24148)), and fully implemented as of **v26.0** ([PR 27255](https://github.com/bitcoin/bitcoin/pull/27255)).
|
||||||
|
|
4
doc/release-notes-26201.md
Normal file
4
doc/release-notes-26201.md
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
RPC
|
||||||
|
---
|
||||||
|
|
||||||
|
- 'taproot' has been removed from 'getdeploymentinfo' because its historical activation height is no longer used anywhere in the codebase. (#26201)
|
|
@ -18,6 +18,7 @@ namespace Consensus {
|
||||||
/**
|
/**
|
||||||
* A buried deployment is one where the height of the activation has been hardcoded into
|
* A buried deployment is one where the height of the activation has been hardcoded into
|
||||||
* the client implementation long after the consensus change has activated. See BIP 90.
|
* the client implementation long after the consensus change has activated. See BIP 90.
|
||||||
|
* Consensus changes for which the new rules are enforced from genesis are not listed here.
|
||||||
*/
|
*/
|
||||||
enum BuriedDeployment : int16_t {
|
enum BuriedDeployment : int16_t {
|
||||||
// buried deployments get negative values to avoid overlap with DeploymentPos
|
// buried deployments get negative values to avoid overlap with DeploymentPos
|
||||||
|
@ -25,14 +26,16 @@ enum BuriedDeployment : int16_t {
|
||||||
DEPLOYMENT_CLTV,
|
DEPLOYMENT_CLTV,
|
||||||
DEPLOYMENT_DERSIG,
|
DEPLOYMENT_DERSIG,
|
||||||
DEPLOYMENT_CSV,
|
DEPLOYMENT_CSV,
|
||||||
|
// SCRIPT_VERIFY_WITNESS is enforced from genesis, but the check for downloading
|
||||||
|
// missing witness data is not. BIP 147 also relies on hardcoded activation height.
|
||||||
DEPLOYMENT_SEGWIT,
|
DEPLOYMENT_SEGWIT,
|
||||||
};
|
};
|
||||||
constexpr bool ValidDeployment(BuriedDeployment dep) { return dep <= DEPLOYMENT_SEGWIT; }
|
constexpr bool ValidDeployment(BuriedDeployment dep) { return dep <= DEPLOYMENT_SEGWIT; }
|
||||||
|
|
||||||
enum DeploymentPos : uint16_t {
|
enum DeploymentPos : uint16_t {
|
||||||
DEPLOYMENT_TESTDUMMY,
|
DEPLOYMENT_TESTDUMMY,
|
||||||
DEPLOYMENT_TAPROOT, // Deployment of Schnorr/Taproot (BIPs 340-342)
|
|
||||||
// NOTE: Also add new deployments to VersionBitsDeploymentInfo in deploymentinfo.cpp
|
// NOTE: Also add new deployments to VersionBitsDeploymentInfo in deploymentinfo.cpp
|
||||||
|
// Removing an entry may require bumping MinBIP9WarningHeight.
|
||||||
MAX_VERSION_BITS_DEPLOYMENTS
|
MAX_VERSION_BITS_DEPLOYMENTS
|
||||||
};
|
};
|
||||||
constexpr bool ValidDeployment(DeploymentPos dep) { return dep < MAX_VERSION_BITS_DEPLOYMENTS; }
|
constexpr bool ValidDeployment(DeploymentPos dep) { return dep < MAX_VERSION_BITS_DEPLOYMENTS; }
|
||||||
|
@ -95,7 +98,7 @@ struct Params {
|
||||||
* BIP 16 exception blocks. */
|
* BIP 16 exception blocks. */
|
||||||
int SegwitHeight;
|
int SegwitHeight;
|
||||||
/** Don't warn about unknown BIP 9 activations below this height.
|
/** Don't warn about unknown BIP 9 activations below this height.
|
||||||
* This prevents us from warning about the CSV and segwit activations. */
|
* This prevents us from warning about the CSV, segwit and taproot activations. */
|
||||||
int MinBIP9WarningHeight;
|
int MinBIP9WarningHeight;
|
||||||
/**
|
/**
|
||||||
* Minimum blocks including miner confirmation of the total of 2016 blocks in a retargeting period,
|
* Minimum blocks including miner confirmation of the total of 2016 blocks in a retargeting period,
|
||||||
|
|
|
@ -13,10 +13,6 @@ const struct VBDeploymentInfo VersionBitsDeploymentInfo[Consensus::MAX_VERSION_B
|
||||||
/*.name =*/ "testdummy",
|
/*.name =*/ "testdummy",
|
||||||
/*.gbt_force =*/ true,
|
/*.gbt_force =*/ true,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
/*.name =*/ "taproot",
|
|
||||||
/*.gbt_force =*/ true,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
std::string DeploymentName(Consensus::BuriedDeployment dep)
|
std::string DeploymentName(Consensus::BuriedDeployment dep)
|
||||||
|
|
|
@ -97,7 +97,7 @@ public:
|
||||||
consensus.BIP66Height = 363725; // 00000000000000000379eaa19dce8c9b722d46ae6a57c2f1a988119488b50931
|
consensus.BIP66Height = 363725; // 00000000000000000379eaa19dce8c9b722d46ae6a57c2f1a988119488b50931
|
||||||
consensus.CSVHeight = 419328; // 000000000000000004a1b34462cb8aeebd5799177f7a29cf28f2d1961716b5b5
|
consensus.CSVHeight = 419328; // 000000000000000004a1b34462cb8aeebd5799177f7a29cf28f2d1961716b5b5
|
||||||
consensus.SegwitHeight = 481824; // 0000000000000000001c8018d9cb3b742ef25114f27563e3fc4a1902167f9893
|
consensus.SegwitHeight = 481824; // 0000000000000000001c8018d9cb3b742ef25114f27563e3fc4a1902167f9893
|
||||||
consensus.MinBIP9WarningHeight = 483840; // segwit activation height + miner confirmation window
|
consensus.MinBIP9WarningHeight = 711648; // taproot activation height + miner confirmation window
|
||||||
consensus.powLimit = uint256{"00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"};
|
consensus.powLimit = uint256{"00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"};
|
||||||
consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks
|
consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks
|
||||||
consensus.nPowTargetSpacing = 10 * 60;
|
consensus.nPowTargetSpacing = 10 * 60;
|
||||||
|
@ -111,12 +111,6 @@ public:
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
|
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
|
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
|
||||||
|
|
||||||
// Deployment of Taproot (BIPs 340-342)
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].bit = 2;
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nStartTime = 1619222400; // April 24th, 2021
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = 1628640000; // August 11th, 2021
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 709632; // Approximately November 12th, 2021
|
|
||||||
|
|
||||||
consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000b1f3b93b65b16d035a82be84"};
|
consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000b1f3b93b65b16d035a82be84"};
|
||||||
consensus.defaultAssumeValid = uint256{"00000000000000000001b658dd1120e82e66d2790811f89ede9742ada3ed6d77"}; // 886157
|
consensus.defaultAssumeValid = uint256{"00000000000000000001b658dd1120e82e66d2790811f89ede9742ada3ed6d77"}; // 886157
|
||||||
|
|
||||||
|
@ -227,7 +221,7 @@ public:
|
||||||
consensus.BIP66Height = 330776; // 000000002104c8c45e99a8853285a3b592602a3ccde2b832481da85e9e4ba182
|
consensus.BIP66Height = 330776; // 000000002104c8c45e99a8853285a3b592602a3ccde2b832481da85e9e4ba182
|
||||||
consensus.CSVHeight = 770112; // 00000000025e930139bac5c6c31a403776da130831ab85be56578f3fa75369bb
|
consensus.CSVHeight = 770112; // 00000000025e930139bac5c6c31a403776da130831ab85be56578f3fa75369bb
|
||||||
consensus.SegwitHeight = 834624; // 00000000002b980fcd729daaa248fd9316a5200e9b367f4ff2c42453e84201ca
|
consensus.SegwitHeight = 834624; // 00000000002b980fcd729daaa248fd9316a5200e9b367f4ff2c42453e84201ca
|
||||||
consensus.MinBIP9WarningHeight = 836640; // segwit activation height + miner confirmation window
|
consensus.MinBIP9WarningHeight = 2013984; // taproot activation height + miner confirmation window
|
||||||
consensus.powLimit = uint256{"00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"};
|
consensus.powLimit = uint256{"00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff"};
|
||||||
consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks
|
consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks
|
||||||
consensus.nPowTargetSpacing = 10 * 60;
|
consensus.nPowTargetSpacing = 10 * 60;
|
||||||
|
@ -241,12 +235,6 @@ public:
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
|
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
|
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
|
||||||
|
|
||||||
// Deployment of Taproot (BIPs 340-342)
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].bit = 2;
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nStartTime = 1619222400; // April 24th, 2021
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = 1628640000; // August 11th, 2021
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0; // No activation delay
|
|
||||||
|
|
||||||
consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000000015f5e0c9f13455b0eb17"};
|
consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000000015f5e0c9f13455b0eb17"};
|
||||||
consensus.defaultAssumeValid = uint256{"00000000000003fc7967410ba2d0a8a8d50daedc318d43e8baf1a9782c236a57"}; // 3974606
|
consensus.defaultAssumeValid = uint256{"00000000000003fc7967410ba2d0a8a8d50daedc318d43e8baf1a9782c236a57"}; // 3974606
|
||||||
|
|
||||||
|
@ -340,12 +328,6 @@ public:
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
|
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
|
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
|
||||||
|
|
||||||
// Deployment of Taproot (BIPs 340-342)
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].bit = 2;
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nStartTime = Consensus::BIP9Deployment::ALWAYS_ACTIVE;
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0; // No activation delay
|
|
||||||
|
|
||||||
consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000000001d6dce8651b6094e4c1"};
|
consensus.nMinimumChainWork = uint256{"0000000000000000000000000000000000000000000001d6dce8651b6094e4c1"};
|
||||||
consensus.defaultAssumeValid = uint256{"0000000000003ed4f08dbdf6f7d6b271a6bcffce25675cb40aa9fa43179a89f3"}; // 72600
|
consensus.defaultAssumeValid = uint256{"0000000000003ed4f08dbdf6f7d6b271a6bcffce25675cb40aa9fa43179a89f3"}; // 72600
|
||||||
|
|
||||||
|
@ -480,12 +462,6 @@ public:
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
|
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
|
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
|
||||||
|
|
||||||
// Activation of Taproot (BIPs 340-342)
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].bit = 2;
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nStartTime = Consensus::BIP9Deployment::ALWAYS_ACTIVE;
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0; // No activation delay
|
|
||||||
|
|
||||||
// message start is defined as the first 4 bytes of the sha256d of the block script
|
// message start is defined as the first 4 bytes of the sha256d of the block script
|
||||||
HashWriter h{};
|
HashWriter h{};
|
||||||
h << consensus.signet_challenge;
|
h << consensus.signet_challenge;
|
||||||
|
@ -558,11 +534,6 @@ public:
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
|
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
|
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].min_activation_height = 0; // No activation delay
|
||||||
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].bit = 2;
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nStartTime = Consensus::BIP9Deployment::ALWAYS_ACTIVE;
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
|
|
||||||
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0; // No activation delay
|
|
||||||
|
|
||||||
consensus.nMinimumChainWork = uint256{};
|
consensus.nMinimumChainWork = uint256{};
|
||||||
consensus.defaultAssumeValid = uint256{};
|
consensus.defaultAssumeValid = uint256{};
|
||||||
|
|
||||||
|
|
|
@ -1407,7 +1407,6 @@ UniValue DeploymentInfo(const CBlockIndex* blockindex, const ChainstateManager&
|
||||||
SoftForkDescPushBack(blockindex, softforks, chainman, Consensus::DEPLOYMENT_CSV);
|
SoftForkDescPushBack(blockindex, softforks, chainman, Consensus::DEPLOYMENT_CSV);
|
||||||
SoftForkDescPushBack(blockindex, softforks, chainman, Consensus::DEPLOYMENT_SEGWIT);
|
SoftForkDescPushBack(blockindex, softforks, chainman, Consensus::DEPLOYMENT_SEGWIT);
|
||||||
SoftForkDescPushBack(blockindex, softforks, chainman, Consensus::DEPLOYMENT_TESTDUMMY);
|
SoftForkDescPushBack(blockindex, softforks, chainman, Consensus::DEPLOYMENT_TESTDUMMY);
|
||||||
SoftForkDescPushBack(blockindex, softforks, chainman, Consensus::DEPLOYMENT_TAPROOT);
|
|
||||||
return softforks;
|
return softforks;
|
||||||
}
|
}
|
||||||
} // anon namespace
|
} // anon namespace
|
||||||
|
@ -1415,7 +1414,8 @@ UniValue DeploymentInfo(const CBlockIndex* blockindex, const ChainstateManager&
|
||||||
RPCHelpMan getdeploymentinfo()
|
RPCHelpMan getdeploymentinfo()
|
||||||
{
|
{
|
||||||
return RPCHelpMan{"getdeploymentinfo",
|
return RPCHelpMan{"getdeploymentinfo",
|
||||||
"Returns an object containing various state info regarding deployments of consensus changes.",
|
"Returns an object containing various state info regarding deployments of consensus changes.\n"
|
||||||
|
"Consensus changes for which the new rules are enforced from genesis are not listed here.",
|
||||||
{
|
{
|
||||||
{"blockhash", RPCArg::Type::STR_HEX, RPCArg::Default{"hash of current chain tip"}, "The block hash at which to query deployment state"},
|
{"blockhash", RPCArg::Type::STR_HEX, RPCArg::Default{"hash of current chain tip"}, "The block hash at which to query deployment state"},
|
||||||
},
|
},
|
||||||
|
|
|
@ -919,8 +919,14 @@ static RPCHelpMan getblocktemplate()
|
||||||
result.pushKV("capabilities", std::move(aCaps));
|
result.pushKV("capabilities", std::move(aCaps));
|
||||||
|
|
||||||
UniValue aRules(UniValue::VARR);
|
UniValue aRules(UniValue::VARR);
|
||||||
|
// See getblocktemplate changes in BIP 9:
|
||||||
|
// ! indicates a more subtle change to the block structure or generation transaction
|
||||||
|
// Otherwise clients may assume the rule will not impact usage of the template as-is.
|
||||||
aRules.push_back("csv");
|
aRules.push_back("csv");
|
||||||
if (!fPreSegWit) aRules.push_back("!segwit");
|
if (!fPreSegWit) {
|
||||||
|
aRules.push_back("!segwit");
|
||||||
|
aRules.push_back("taproot");
|
||||||
|
}
|
||||||
if (consensusParams.signet_blocks) {
|
if (consensusParams.signet_blocks) {
|
||||||
// indicate to miner that they must understand signet rules
|
// indicate to miner that they must understand signet rules
|
||||||
// when attempting to mine with this template
|
// when attempting to mine with this template
|
||||||
|
|
|
@ -376,6 +376,9 @@ class MiningTest(BitcoinTestFramework):
|
||||||
self.log.info("getblocktemplate: segwit rule must be set")
|
self.log.info("getblocktemplate: segwit rule must be set")
|
||||||
assert_raises_rpc_error(-8, "getblocktemplate must be called with the segwit rule set", node.getblocktemplate, {})
|
assert_raises_rpc_error(-8, "getblocktemplate must be called with the segwit rule set", node.getblocktemplate, {})
|
||||||
|
|
||||||
|
self.log.info("getblocktemplate: result should set the right rules")
|
||||||
|
assert_equal(['csv', '!segwit', 'taproot'], self.nodes[0].getblocktemplate(NORMAL_GBT_REQUEST_PARAMS)['rules'])
|
||||||
|
|
||||||
self.log.info("getblocktemplate: Test valid block")
|
self.log.info("getblocktemplate: Test valid block")
|
||||||
assert_template(node, block, None)
|
assert_template(node, block, None)
|
||||||
|
|
||||||
|
|
|
@ -238,19 +238,6 @@ class BlockchainTest(BitcoinTestFramework):
|
||||||
},
|
},
|
||||||
'active': False
|
'active': False
|
||||||
},
|
},
|
||||||
'taproot': {
|
|
||||||
'type': 'bip9',
|
|
||||||
'bip9': {
|
|
||||||
'start_time': -1,
|
|
||||||
'timeout': 9223372036854775807,
|
|
||||||
'min_activation_height': 0,
|
|
||||||
'status': 'active',
|
|
||||||
'status_next': 'active',
|
|
||||||
'since': 0,
|
|
||||||
},
|
|
||||||
'height': 0,
|
|
||||||
'active': True
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue