Skip to content

Commit ad04d1c

Browse files
committed
Always add default_witness_commitment with GBT client support
1 parent 0c577f2 commit ad04d1c

File tree

3 files changed

+5
-9
lines changed

3 files changed

+5
-9
lines changed

src/main.cpp

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3531,15 +3531,8 @@ std::vector<unsigned char> GenerateCoinbaseCommitment(CBlock& block, const CBloc
35313531
{
35323532
std::vector<unsigned char> commitment;
35333533
int commitpos = GetWitnessCommitmentIndex(block);
3534-
bool fHaveWitness = false;
3535-
for (size_t t = 1; t < block.vtx.size(); t++) {
3536-
if (!block.vtx[t]->wit.IsNull()) {
3537-
fHaveWitness = true;
3538-
break;
3539-
}
3540-
}
35413534
std::vector<unsigned char> ret(32, 0x00);
3542-
if (fHaveWitness && IsWitnessEnabled(pindexPrev, consensusParams)) {
3535+
if (consensusParams.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nTimeout != 0) {
35433536
if (commitpos == -1) {
35443537
uint256 witnessroot = BlockWitnessMerkleRoot(block, NULL);
35453538
CHash256().Write(witnessroot.begin(), 32).Write(&ret[0], 32).Finalize(witnessroot.begin());

src/rpc/mining.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,9 @@ UniValue getblocktemplate(const JSONRPCRequest& request)
680680
result.push_back(Pair("curtime", pblock->GetBlockTime()));
681681
result.push_back(Pair("bits", strprintf("%08x", pblock->nBits)));
682682
result.push_back(Pair("height", (int64_t)(pindexPrev->nHeight+1)));
683-
if (!pblocktemplate->vchCoinbaseCommitment.empty()) {
683+
684+
const struct BIP9DeploymentInfo& segwit_info = VersionBitsDeploymentInfo[Consensus::DEPLOYMENT_SEGWIT];
685+
if (!pblocktemplate->vchCoinbaseCommitment.empty() && setClientRules.find(segwit_info.name) != setClientRules.end()) {
684686
result.push_back(Pair("default_witness_commitment", HexStr(pblocktemplate->vchCoinbaseCommitment.begin(), pblocktemplate->vchCoinbaseCommitment.end())));
685687
}
686688

src/test/miner_tests.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity)
214214
txCoinbase.vin[0].scriptSig = CScript();
215215
txCoinbase.vin[0].scriptSig.push_back(blockinfo[i].extranonce);
216216
txCoinbase.vin[0].scriptSig.push_back(chainActive.Height());
217+
txCoinbase.vout.resize(1); // Ignore the (optional) segwit commitment added by CreateNewBlock (as the hardcoded nonces don't account for this)
217218
txCoinbase.vout[0].scriptPubKey = CScript();
218219
pblock->vtx[0] = MakeTransactionRef(std::move(txCoinbase));
219220
if (txFirst.size() == 0)

0 commit comments

Comments
 (0)