Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enforce SCRIPT_VERIFY_P2SH and SCRIPT_VERIFY_WITNESS from genesis #11739

Merged
merged 5 commits into from Apr 19, 2018

Conversation

@sdaftuar
Copy link
Member

sdaftuar commented Nov 20, 2017

As discussed at the IRC meeting back in October (https://botbot.me/freenode/bitcoin-core-dev/2017-10-12/?msg=92231929&page=2), I had looked into the feasibility of enforcing P2SH and SCRIPT_VERIFY_WITNESS back to the genesis block.

The P2SH change is pretty straightforward -- there was only one historical block on mainnet that violated the rule, so I carved out an exception to it, similar to the way we have exceptions for the BIP30 violators.

The segwit change is not entirely as clear. The code changes themselves are relatively straightforward: we can just always turn on SCRIPT_VERIFY_WITNESS whenever P2SH is active. However conceptually, this amounts to splitting up BIP141 into two parts, the part that implements new script rules, and the part that handles witness commitments in blocks.

Arguably though the script rules are really defined in BIP 143 anyway, and so this really amounts to backdating BIP 143 -- script rules for v0 segwit outputs -- back to genesis. So maybe conceptually this isn't so bad...

I don't feel strongly about this change in either direction; I started working on it because I was searching for a way to simplify the way we understand and implement the consensus rules around segwit, but I'm not yet sure whether I think this achieves anything toward that goal.

ping @TheBlueMatt

@sdaftuar

This comment has been minimized.

Copy link
Member Author

sdaftuar commented Nov 20, 2017

Forgot to flag this: there is one mainnet block that violated P2SH, and one testnet block as well. For now I carved out both, but perhaps we could consider migration to a new testnet (4?) instead and drop the testnet exception? Seems like it might be cleaner to have a new testnet that always has P2SH and segwit from genesis.... Does anyone think this would be worth proposing?

@fanquake fanquake added the Validation label Nov 20, 2017
src/validation.cpp Outdated
fStrictPayToScriptHash = false;
}

unsigned int flags = fStrictPayToScriptHash ? SCRIPT_VERIFY_P2SH : SCRIPT_VERIFY_NONE;

// Start enforcing P2SH (BIP16)
if (pindex->nHeight >= consensusparams.BIP16Height) {

This comment has been minimized.

Copy link
@MarcoFalke

MarcoFalke Nov 21, 2017

Member

fixup nit: in commit 3a76e3c962516cdf7d577aa3dcbe0251b94e5355: You probably meant to use if (fStrictPayToScriptHash) { flags |= SCRIPT_VERIFY_P2SH; }, as BIP16Height was removed and thus fails to compile.

@TheBlueMatt

This comment has been minimized.

Copy link
Contributor

TheBlueMatt commented Nov 22, 2017

@sipa

This comment has been minimized.

Copy link
Member

sipa commented Nov 22, 2017

The code changes here don't look as bad as I would have expected. I'd prefer to encapsulate the exception block hashes in chainparams, though.

@gmaxwell

This comment has been minimized.

Copy link
Contributor

gmaxwell commented Nov 23, 2017

Concept ACK! as far as testnet, restarting with a new testnet would be fine, but there are a bunch of very interesting test cases in testnet we should consider extracting. One possibility would be to instrument the codebase to call the gprof things to record branch coverage data at each block; an then make a list of testnet blocks that increased cover. Seems like a real pain though.

@sdaftuar sdaftuar force-pushed the sdaftuar:2017-09-p2sh-segwit-from-genesis branch to ad3e97a Dec 5, 2017
@sdaftuar

This comment has been minimized.

Copy link
Member Author

sdaftuar commented Dec 5, 2017

Nits addressed.

Copy link
Contributor

TheBlueMatt left a comment

utACK ad3e97a

// BIP16 didn't become active until Apr 1 2012
// However, only one historical block violated the P2SH rules, so for simplicity, always leave P2SH
// on except for the one violating block.
if (!(pindex->phashBlock != nullptr && (*(pindex->phashBlock) == consensusparams.BIP16Exception))) {

This comment has been minimized.

Copy link
@TheBlueMatt

TheBlueMatt Dec 8, 2017

Contributor

Why not assert pindex->phashBlock? No properly-constructed CBlockIndex should have that unset, no?

This comment has been minimized.

Copy link
@sdaftuar

sdaftuar Dec 11, 2017

Author Member

It's unset when invoked via TestBlockValidity() (eg for mining).

This comment has been minimized.

Copy link
@TheBlueMatt

TheBlueMatt Dec 12, 2017

Contributor

Ah, that sounds like a bug in TBV, but that's for a separate PR, I suppose.

This comment has been minimized.

Copy link
@jtimon

jtimon Jan 23, 2018

Member

Yes, please, I always found checks to pindex->phashBlock == nullptr ugly and expensive to maintain documented (perhaps we can repeat the "pindex->phashBlock can be null if called by CreateNewBlock/TestBlockValidity" comment from the beginning and unify it with the comment for fEnforceBIP30, to more easily delete them all later when they're not needed). There's the assert you want below, just needs to be moved to the top once the special cases are dealt with more explicitly.
But, yeah, that's for a separate PR.

@laanwj

This comment has been minimized.

Copy link
Member

laanwj commented Dec 20, 2017

Concept ACK

Copy link
Contributor

ryanofsky left a comment

utACK ad3e97a

// BIP16 didn't become active until Apr 1 2012
// However, only one historical block violated the P2SH rules, so for simplicity, always leave P2SH
// on except for the one violating block.
if (!(pindex->phashBlock != nullptr && (*(pindex->phashBlock) == consensusparams.BIP16Exception))) {

This comment has been minimized.

Copy link
@ryanofsky

ryanofsky Jan 10, 2018

Contributor

In commit "Use P2SH consensus rules for all blocks"

Maybe check BIP16Exception.IsNull() to be a little more strict. Could also remove unnecessary nesting and negatives:

if (consensusparams.BIP16Exception.IsNull() ||
    pindex->phashBlock == nullptr ||
    *pindex->phashBlock != consensusparams.BIP16Exception)
@@ -1905,7 +1905,7 @@ def run_test(self):
self.test_unnecessary_witness_before_segwit_activation()
self.test_witness_tx_relay_before_segwit_activation()
self.test_block_relay(segwit_activated=False)
self.test_p2sh_witness(segwit_activated=False)
#self.test_p2sh_witness(segwit_activated=False)

This comment has been minimized.

Copy link
@ryanofsky

ryanofsky Jan 10, 2018

Contributor

In commit "[qa] Remove some pre-activation segwit tests"

Should actually remove

self.log.info("Verify unsigned bare witness txs in versionbits-setting blocks are valid before the fork")
self.success_mine(self.nodes[2], wit_ids[NODE_2][WIT_V0][1], False) #block 428
self.success_mine(self.nodes[2], wit_ids[NODE_2][WIT_V1][1], False) #block 429
# TODO: verify spending a segwit v0 output is invalid before the fork

This comment has been minimized.

Copy link
@ryanofsky

ryanofsky Jan 10, 2018

Contributor

In commit "[qa] Remove some pre-activation segwit tests"

Note: TODO

This comment has been minimized.

Copy link
@jnewbery

jnewbery Jan 23, 2018

Member

I don't understand this comment. What does 'before the fork' mean if segwit is active since genesis?

@gmaxwell

This comment has been minimized.

Copy link
Contributor

gmaxwell commented Jan 11, 2018

Tested ACK

@sdaftuar

This comment has been minimized.

Copy link
Member Author

sdaftuar commented Jan 22, 2018

Addressed @ryanofsky's comments. However I think I will need to rebase in order to for the new test I wrote to work...

Copy link
Member

jtimon left a comment

This needs a BIP IMO.
Concept ACK. if the segwit case is not clear yet, perhaps it should be left for later (in fact, I would prefer the 2 things in 2 different PRs either way, preferrably one on top of the other [perhaps open one with only p2sh and rebase this one of top of the new one], but all between the parenthesis is just PR bikeshedding).

utACK individual commits df7fad0 d32bcd9

// BIP16 didn't become active until Apr 1 2012
// However, only one historical block violated the P2SH rules, so for simplicity, always leave P2SH
// on except for the one violating block.
if (!(pindex->phashBlock != nullptr && (*(pindex->phashBlock) == consensusparams.BIP16Exception))) {

This comment has been minimized.

Copy link
@jtimon

jtimon Jan 23, 2018

Member

Yes, please, I always found checks to pindex->phashBlock == nullptr ugly and expensive to maintain documented (perhaps we can repeat the "pindex->phashBlock can be null if called by CreateNewBlock/TestBlockValidity" comment from the beginning and unify it with the comment for fEnforceBIP30, to more easily delete them all later when they're not needed). There's the assert you want below, just needs to be moved to the top once the special cases are dealt with more explicitly.
But, yeah, that's for a separate PR.

@sdaftuar sdaftuar force-pushed the sdaftuar:2017-09-p2sh-segwit-from-genesis branch from a76ce4c to b782474 Jan 23, 2018
@sdaftuar

This comment has been minimized.

Copy link
Member Author

sdaftuar commented Jan 23, 2018

Rebased and fixed the last commit to work with latest master. Previous version of these commits is at https://github.com/sdaftuar/bitcoin/commits/11739.1

@sdaftuar

This comment has been minimized.

Copy link
Member Author

sdaftuar commented Jan 23, 2018

@jtimon Agreed -- I sent an email to the bitcoin-dev list recently with a link to the draft BIP text.

@sdaftuar sdaftuar changed the title RFC: Enforce SCRIPT_VERIFY_P2SH and SCRIPT_VERIFY_WITNESS from genesis Enforce SCRIPT_VERIFY_P2SH and SCRIPT_VERIFY_WITNESS from genesis Jan 23, 2018
self.log.info("Verify unsigned bare witness txs in versionbits-setting blocks are valid before the fork")
self.success_mine(self.nodes[2], wit_ids[NODE_2][WIT_V0][1], False) #block 428
self.success_mine(self.nodes[2], wit_ids[NODE_2][WIT_V1][1], False) #block 429
# TODO: verify spending a segwit v0 output is invalid before the fork

This comment has been minimized.

Copy link
@jnewbery

jnewbery Jan 23, 2018

Member

I don't understand this comment. What does 'before the fork' mean if segwit is active since genesis?

@@ -857,7 +857,7 @@ void PeerLogicValidation::NewPoWValidBlock(const CBlockIndex *pindex, const std:
return;
nHighestFastAnnounce = pindex->nHeight;

bool fWitnessEnabled = IsWitnessEnabled(pindex->pprev, Params().GetConsensus());
bool fWitnessEnabled = IsWitnessCommitmentEnabled(pindex->pprev, Params().GetConsensus());

This comment has been minimized.

Copy link
@jnewbery

jnewbery Jan 23, 2018

Member

Could also change the name of the local variable here:

fWitnessEnabled -> witness_commitment_enabled

consensus.BIP34Height = 227931;
consensus.BIP34Hash = uint256S("0x000000000000024b89b42a942fe0d9fea3bb44ab7bd1b19115dd6a759c0808b8");
consensus.BIP16Exception = uint256S("0x00000000000002dc756eebf4f49723ed8d30cc28a5f108eb94b1ba88ac4f9c22");

This comment has been minimized.

Copy link
@jnewbery

jnewbery Jan 23, 2018

Member

nit: prefer the BIP constants in numeric order (ie BIP 16 above BIP 34). Same for params.h below.


assert(len(self.utxo))

# Create two outputs, a p2wsh and p2sh-p2wsh

This comment has been minimized.

Copy link
@jnewbery

jnewbery Jan 23, 2018

Member

comment says p2sh-p2wsh, but the second output below is just a p2sh as far as I can tell.

This comment has been minimized.

Copy link
@jnewbery

jnewbery Jan 23, 2018

Member

strange. The P2SH output can't be spent either. If I change the test_witness_block() call to a test_transaction_acceptance() call below, I see the following log:

(mandatory-script-verify-flag-failed (Operation not valid with the current stack size) (code 16))

This comment has been minimized.

Copy link
@sdaftuar

sdaftuar Jan 25, 2018

Author Member

Fixed -- I forgot to stick the p2sh redeem script in the scriptsig (and also inadvertently made this a p2sh, rather than p2sh-p2wsh).

@jnewbery

This comment has been minimized.

Copy link
Member

jnewbery commented Jan 23, 2018

utACK up to 4e2b90d.

I don't think the final commit adds any value and can be removed from this PR.

@sdaftuar sdaftuar force-pushed the sdaftuar:2017-09-p2sh-segwit-from-genesis branch from 42caf4d to 33203e1 Jan 25, 2018
@sdaftuar

This comment has been minimized.

Copy link
Member Author

sdaftuar commented Jan 25, 2018

Github thought this needed to be rebased, so I did, though there were no conflicts to be resolved.
Original unsquashed version is https://github.com/sdaftuar/bitcoin/commits/11739.2.

self.log.info("Verify unsigned bare witness txs in versionbits-setting blocks are valid before the fork")
self.success_mine(self.nodes[2], wit_ids[NODE_2][WIT_V0][1], False) #block 428
self.success_mine(self.nodes[2], wit_ids[NODE_2][WIT_V1][1], False) #block 429
# TODO: verify spending a segwit v0 output is invalid before the fork

This comment has been minimized.

Copy link
@jnewbery

jnewbery Jan 25, 2018

Member

I wouldn't bother adding this comment, which you're just going to remove in a later commit. I think you can also remove the comment above.

@sdaftuar sdaftuar force-pushed the sdaftuar:2017-09-p2sh-segwit-from-genesis branch from 33203e1 to 98e4af6 Jan 25, 2018
@sdaftuar

This comment has been minimized.

Copy link
Member Author

sdaftuar commented Jan 25, 2018

I decided to remove the scripted-diff commit, because in retrospect I think the existing function name, IsWitnessEnabled, is fine.

Addressed nits from @jnewbery and @ryanofsky and squashed. Old version is: https://github.com/sdaftuar/bitcoin/commits/11739.3

@sdaftuar sdaftuar force-pushed the sdaftuar:2017-09-p2sh-segwit-from-genesis branch from 98e4af6 to 831b8bd Jan 25, 2018
@Sjors

This comment has been minimized.

Copy link
Member

Sjors commented Feb 2, 2018

Should we also remove the relevant soft fork entries from getblockchaininfo?

@jnewbery

This comment has been minimized.

Copy link
Member

jnewbery commented Feb 2, 2018

Should we also remove the relevant soft fork entries from getblockchaininfo?

BIP 16 already is not shown in getblockchaininfo (it was a flag day upgrade rather than IsSuperMajority deployment). This PR doesn't move the segwit softfork height, it just enforces the SCRIPT_VERIFY_WITNESS rules to genesis.

@jtimon jtimon mentioned this pull request Feb 5, 2018
laanwj added a commit that referenced this pull request Feb 8, 2018
db1cbcc [RPC] Remove deprecated addmultisigaddress return format (John Newbery)
cb28a0b [RPC] Remove deprecated createmultisig object (John Newbery)
ed45c82 [tests] Remove test for deprecated createmultsig option (John Newbery)
d066a1c [rpc] Remove deprecated getmininginfo RPC option (John Newbery)
c6f09c2 [rpc] remove deprecated estimatefee RPC (John Newbery)
a8e437a [tests] Remove estimatefee from rpc_deprecated.py test (John Newbery)
a5623b1 [tests] Remove tests for deprecated estimatefee RPC (John Newbery)
d119f2e [tests] Fix style warnings in feature_fee_estimation.py (John Newbery)

Pull request description:

  There were some RPC/RPC options deprecated in v0.16. Those can now be removed from master since v0.16 has been branched.

  - `estimatefee` RPC has been removed. The `feature_fee_estimation.py` test has been updated to remove the RPC, but doesn't yet have good coverage of the replacement RPC `estimatesmartfee`. Improving the test coverage should be done in a new PR. (#11031)
  - the `errors` field returned by `getmininginfo` has been deprecated and replaced by a `warning` field. (#10858)
  - providing addresses as inputs to `createmultisig` has been deprecated. Users should use `addmultisigaddress` instead (#11415)
  - The return format from `addmultisigaddress` has changed (#11415)

  `getwitnessaddress` was also deprecated in v0.16 and can be removed, but many tests are using that RPC, so it's a larger job to remove. It should be removed in a separate PR (possibly after #11739 and #11398 have been merged and the segwit test code tidied up)

Tree-SHA512: 8ffaa5f6094131339b9e9e468e8b141de4b144697d2271efa2992b80b12eb97849ade3da8df5c1c9400ed4c04e6a029926550a3e5846d2029b644f9e84ac7124
laanwj added a commit that referenced this pull request Mar 5, 2018
…or TBV

9c5a4a6 Stop special-casing phashBlock handling in validation for TBV (Matt Corallo)

Pull request description:

  There is no reason to do this, really, we already have "ignore PoW" flags. Motivated by #11739 (comment)

Tree-SHA512: 37cb1ae5b11c9e8ed7a679bb07ad3b119a2a014744b26d197d67ba21beb19fe6815271df935e40f7c7bd5f2e4d7ae4dad7bd4d00fa230a8d789f37e9de31a769
Copy link
Member

instagibbs left a comment

I am unable to comment on the changes here as I don't understand that section of code: 8b975bc#diff-24efdb00bfbe56b140fb006b562cc70bR4034

I have also not tested the exact hashes given.

utACK otherwise

@@ -186,7 +186,7 @@ class CTestNetParams : public CChainParams {
CTestNetParams() {
strNetworkID = "test";
consensus.nSubsidyHalvingInterval = 210000;
consensus.BIP16Height = 514; // 00000000040b4e986385315e14bee30ad876d8b47f748025b26683116d21aa65
consensus.BIP16Exception = uint256S("0x00000000dd30457c001f4095d208cc1296b0eed002427aa599874af7a432b105");

This comment has been minimized.

Copy link
@instagibbs

instagibbs Mar 7, 2018

Member

imo it should just have a completely new set of chainparams, in other words leave as is

@@ -1730,8 +1730,13 @@ static unsigned int GetBlockScriptFlags(const CBlockIndex* pindex, const Consens

unsigned int flags = SCRIPT_VERIFY_NONE;

// Start enforcing P2SH (BIP16)
if (pindex->nHeight >= consensusparams.BIP16Height) {
// BIP16 didn't become active until Apr 1 2012

This comment has been minimized.

Copy link
@instagibbs

instagibbs Mar 7, 2018

Member

mu-nit: this comment is for mainnet only, though both mainnet and testnet has an instance. Perhaps discuss the date in chainparams?

This comment has been minimized.

Copy link
@sdaftuar

sdaftuar Apr 13, 2018

Author Member

Actually, this comment applies to testnet3 as well! See #1503.

This comment has been minimized.

Copy link
@instagibbs

instagibbs Apr 13, 2018

Member

For the benefit of code readers, maybe say that as well :)

@@ -1740,6 +1745,11 @@ static unsigned int GetBlockScriptFlags(const CBlockIndex* pindex, const Consens
flags |= SCRIPT_VERIFY_P2SH;
}

// Enforce WITNESS rules whenever P2SH is in effect.

This comment has been minimized.

Copy link
@instagibbs

instagibbs Mar 7, 2018

Member

"Enforce WITNESS rules whenever P2SH is in effect and witness deployment is not defined."

... or something

This comment has been minimized.

Copy link
@sdaftuar

sdaftuar Apr 13, 2018

Author Member

I've improved the comments in latest version.

@sdaftuar sdaftuar force-pushed the sdaftuar:2017-09-p2sh-segwit-from-genesis branch from 9080e76 to 6d5962a Apr 13, 2018
@sdaftuar

This comment has been minimized.

Copy link
Member Author

sdaftuar commented Apr 13, 2018

Updated comments to address nit from @instagibbs, and squashed (previous version is https://github.com/sdaftuar/bitcoin/commits/11739.6 for comparison).

@sdaftuar sdaftuar force-pushed the sdaftuar:2017-09-p2sh-segwit-from-genesis branch from 6d5962a to dee104d Apr 13, 2018
@sdaftuar

This comment has been minimized.

Copy link
Member Author

sdaftuar commented Apr 13, 2018

Updated again to improve code comment around historical p2sh activation. (Compare: https://github.com/sdaftuar/bitcoin/commits/11739.7)

sdaftuar added 5 commits Sep 12, 2017
This commit moves P2SH activation back to the genesis block, with
a hardcoded exception for the one historical block in the chain that
violated this rule.
This is in preparation for enforcing SCRIPT_VERIFY_WITNESS from
the genesis block.
This is in preparation for always enforcing SCRIPT_VERIFY_WITNESS.
Also updates the comments for an existing test, that now should be rewritten.
Includes changes suggested by John Newbery.
@sdaftuar sdaftuar force-pushed the sdaftuar:2017-09-p2sh-segwit-from-genesis branch from dee104d to 8b56fc0 Apr 13, 2018
@sdaftuar

This comment has been minimized.

Copy link
Member Author

sdaftuar commented Apr 13, 2018

Needed rebase.

@jnewbery

This comment has been minimized.

Copy link
Member

jnewbery commented Apr 13, 2018

Tested ACK 8b56fc0

Travis failure was unrelated p2p_compactblocks.py flakiness. I've restared the job.

It'd be great to get this (and then #12360) in before v0.17.

@sdaftuar

This comment has been minimized.

Copy link
Member Author

sdaftuar commented Apr 16, 2018

Tests are passing now.

@laanwj laanwj added this to Blockers in High-priority for review Apr 16, 2018
@TheBlueMatt

This comment has been minimized.

Copy link
Contributor

TheBlueMatt commented Apr 17, 2018

non-test-changes-re-utACK 8b56fc0 (though I miss the s/IsWitnessEnabled/IsWitnessCommitmentEnabled/ scripted-diff change).

@MarcoFalke

This comment has been minimized.

Copy link
Member

MarcoFalke commented Apr 19, 2018

utACK 8b56fc0

@MarcoFalke MarcoFalke merged commit 8b56fc0 into bitcoin:master Apr 19, 2018
1 check passed
1 check passed
continuous-integration/travis-ci/pr The Travis CI build passed
Details
MarcoFalke added a commit that referenced this pull request Apr 19, 2018
…om genesis

8b56fc0 [qa] Test that v0 segwit outputs can't be spent pre-activation (Suhas Daftuar)
ccb8ca4 Always enforce SCRIPT_VERIFY_WITNESS with P2SH (Suhas Daftuar)
5c31b20 [qa] Remove some pre-activation segwit tests (Suhas Daftuar)
95749a5 Separate NULLDUMMY enforcement from SEGWIT enforcement (Suhas Daftuar)
ce65018 Use P2SH consensus rules for all blocks (Suhas Daftuar)

Pull request description:

  As discussed at the IRC meeting back in October (https://botbot.me/freenode/bitcoin-core-dev/2017-10-12/?msg=92231929&page=2), I had looked into the feasibility of enforcing P2SH and SCRIPT_VERIFY_WITNESS back to the genesis block.

  The P2SH change is pretty straightforward -- there was only one historical block on mainnet that violated the rule, so I carved out an exception to it, similar to the way we have exceptions for the BIP30 violators.

  The segwit change is not entirely as clear.  The code changes themselves are relatively straightforward: we can just always turn on SCRIPT_VERIFY_WITNESS whenever P2SH is active.  However conceptually, this amounts to splitting up BIP141 into two parts, the part that implements new script rules, and the part that handles witness commitments in blocks.

  Arguably though the script rules are really defined in BIP 143 anyway, and so this really amounts to backdating BIP 143 -- script rules for v0 segwit outputs -- back to genesis.  So maybe conceptually this isn't so bad...

  I don't feel strongly about this change in either direction; I started working on it because I was searching for a way to simplify the way we understand and implement the consensus rules around segwit, but I'm not yet sure whether I think this achieves anything toward that goal.

  ping @TheBlueMatt

Tree-SHA512: 73551d4a983eb9792c7ac67f56005822528ac4d1fd52c27cee6d305ebee953f69687ef4ddee8bdc0fec77f77e6b5a9d669750793efee54c076533a095e233042
@fanquake fanquake removed this from Blockers in High-priority for review Apr 20, 2018
jasonbcox added a commit to Bitcoin-ABC/bitcoin-abc that referenced this pull request May 3, 2019
…or TBV

Summary:
9c5a4a6 Stop special-casing phashBlock handling in validation for TBV (Matt Corallo)

Pull request description:

  There is no reason to do this, really, we already have "ignore PoW" flags. Motivated by bitcoin/bitcoin#11739 (comment)

Tree-SHA512: 37cb1ae5b11c9e8ed7a679bb07ad3b119a2a014744b26d197d67ba21beb19fe6815271df935e40f7c7bd5f2e4d7ae4dad7bd4d00fa230a8d789f37e9de31a769

Backport of Core PR 11880
https://github.com/bitcoin/bitcoin/pull/11880/files

Test Plan:
ninja check
make check
test_runner.py

Reviewers: deadalnix, Fabien, #bitcoin_abc

Reviewed By: Fabien, #bitcoin_abc

Differential Revision: https://reviews.bitcoinabc.org/D2898
jonspock added a commit to devaultcrypto/devault that referenced this pull request Jun 5, 2019
…or TBV

Summary:
9c5a4a6ed Stop special-casing phashBlock handling in validation for TBV (Matt Corallo)

Pull request description:

  There is no reason to do this, really, we already have "ignore PoW" flags. Motivated by bitcoin/bitcoin#11739 (comment)

Tree-SHA512: 37cb1ae5b11c9e8ed7a679bb07ad3b119a2a014744b26d197d67ba21beb19fe6815271df935e40f7c7bd5f2e4d7ae4dad7bd4d00fa230a8d789f37e9de31a769

Backport of Core PR 11880
https://github.com/bitcoin/bitcoin/pull/11880/files

Test Plan:
ninja check
make check
test_runner.py

Reviewers: deadalnix, Fabien, #bitcoin_abc

Reviewed By: Fabien, #bitcoin_abc

Differential Revision: https://reviews.bitcoinabc.org/D2898
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.