Empact
commented at 12:53 AM on January 16, 2020:
member
This bases the script/standard hash types, TxDestination-related and CScriptID on a base template which does not silently convert the underlying uintN type.
Inspired by and built on #17924. Commits are small and focused to ease review.
Note some of these changes may be relative to existing bugs of the same sort as #17924. See particularly "Convert CPubKey to WitnessV0KeyHash directly" and "Remove an apparently unnecessary conversion".
DrahtBot
commented at 2:54 AM on January 16, 2020:
member
<!--e57a25ab6845829454e8d69fc972939a-->
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
<!--174a7506f384e20aa4161008e828411d-->
Conflicts
Reviewers, this pull request conflicts with the following ones:
#19326 (Simplify hash.h interface using Spans by sipa)
#19183 ([WIP DONOTMERGE] Replace boost with C++17 by MarcoFalke)
#19114 (scripted-diff: TxoutType C++11 scoped enum class by MarcoFalke)
#16841 (Replace GetScriptForWitness with GetScriptForDestination by meshcollider)
#15294 ([moveonly] wallet: Extract RipeMd160 by Empact)
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.
DrahtBot added the label GUI on Jan 16, 2020
DrahtBot added the label RPC/REST/ZMQ on Jan 16, 2020
DrahtBot added the label Tests on Jan 16, 2020
DrahtBot added the label Wallet on Jan 16, 2020
instagibbs
commented at 5:34 PM on January 16, 2020:
member
concept ACK, will review deeper if base is merged
Empact force-pushed on Jan 16, 2020
fanquake removed the label GUI on Jan 17, 2020
fanquake removed the label Tests on Jan 17, 2020
Sjors
commented at 8:57 AM on January 17, 2020:
member
laanwj
commented at 2:08 PM on February 5, 2020:
member
Concept ACK, I like the idea of using explicit and separate types here to prevent non-sensible conversions, if you can use language features to avoid bugs that's very good.
Empact requested review from Sjors on Feb 6, 2020
Empact requested review from ryanofsky on Feb 6, 2020
Empact requested review from achow101 on Feb 6, 2020
Empact requested review from instagibbs on Feb 6, 2020
practicalswift
commented at 6:46 AM on February 11, 2020:
contributor
Concept ACK: explicit conversion is better (and safer!) than implicit conversion
DrahtBot added the label Needs rebase on Feb 25, 2020
Empact force-pushed on Feb 28, 2020
DrahtBot removed the label Needs rebase on Feb 28, 2020
Empact
commented at 2:04 AM on February 28, 2020:
member
Rebased, dropped one commit, as #17577 removed the relevant verifymessage conversion.
DrahtBot added the label Needs rebase on Mar 9, 2020
Empact force-pushed on Mar 10, 2020
Empact
commented at 11:56 AM on March 10, 2020:
member
I'm not sure what's up with Appveyor, and I'm happy to squash.
MarcoFalke
commented at 11:47 AM on June 19, 2020:
member
I think it makes sense to squash fixup commits that fix a compile-failure. Otherwise it is not possible to compile earlier commits.
Prefer explicit uint160 conversion0a5ea32ce6
Prefer explicit CScriptID construction3fcc468123
Convert CPubKey to WitnessV0KeyHash directly
The round-tripping through PKHash has no effect, and is
potentially misleading as such.
a9e451f144
Use explicit conversion from PKHash -> CKeyID
These types are equivalent, in data etc, so they need only their
data cast across.
Note a function is used rather than a casting
operator as CKeyID is defined at a lower level than script/standard
2c54217f91
Use explicit conversion from WitnessV0KeyHash -> CKeyID
These types are equivalent, in data etc, so they need only their
data cast across.
f32c1e07fd
Explicitly support conversion between equivalent hash types
CScript -> CScriptID -> ScriptHash is unnecessary because
ScriptHash and CScriptID do the same thing.
fa9ef2cdbe
Disallow automatic conversion between hash types
A templated BaseHash does not allow for automatic conversion, thus
conversions much be explicitly allowed / whitelisted, which will
reduce the risk of unintended conversions.
4d7369125a
Empact force-pushed on Jun 19, 2020
Empact
commented at 8:04 PM on June 19, 2020:
member
Squashed the fix and rebased.
achow101
commented at 10:24 PM on June 19, 2020:
member
ACK4d7369125a82214ea42b808a32b71b315a5c3c72
Only change since last is to handle a newly introduced conversion. That's also a good example of the benefits that this PR brings.
meshcollider
commented at 8:03 AM on June 21, 2020:
contributor
re-utACK4d7369125a82214ea42b808a32b71b315a5c3c72
meshcollider merged this on Jun 21, 2020
meshcollider closed this on Jun 21, 2020
Empact deleted the branch on Jun 21, 2020
Fabcien referenced this in commit 79bd38319d on Feb 3, 2021
MarcoFalke removed the label Waiting for author on Apr 4, 2021
This is a metadata mirror of the GitHub repository
bitcoin/bitcoin.
This site is not affiliated with GitHub.
Content is generated from a GitHub metadata backup.
generated: 2026-04-21 18:14 UTC
This site is hosted by @0xB10C More mirrored repositories can be found on mirror.b10c.me