Implement excessive sighashing protection policy with loose sighash estimation#8756
Closed
jl2012 wants to merge 3 commits intobitcoin:masterfrom
Closed
Implement excessive sighashing protection policy with loose sighash estimation#8756jl2012 wants to merge 3 commits intobitcoin:masterfrom
jl2012 wants to merge 3 commits intobitcoin:masterfrom
Conversation
63db0c6 to
ed71079
Compare
Contributor
Author
|
A draft BIP is made for the detailed rationale of this PR: https://github.com/jl2012/bips/blob/sighash/bip-sighash.mediawiki |
ed71079 to
5cd44e8
Compare
Contributor
Author
|
Unit tests are completed and related BIP updated |
This implements a static estimation of sighash size for a transaction. A transaction with more than 90bytes of sighash per weight is non-standard. This is equivalent to 36MB for an 100kB non-segwit transaction, or 360MB for a block in the worst case. All transactions below 100kB with legitimate use of CHECK(MULTI)SIG should remain standard with this limit.
This makes sure that SignatureHash is performed once only for each signature within a CHECKMULTISIG. Alternative to bitcoin#8654.
5cd44e8 to
3d3337a
Compare
3d3337a to
e20b6c6
Compare
Contributor
Author
|
closed in favor of #8755 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is an alternative to #8755 and #8654
This implements a static estimation of sighash size for a transaction. A transaction with more than 90bytes of sighash per weight is non-standard. This is equivalent to 36MB for an 100kB non-segwit transaction, or 360MB for a block in the worst case. All existing standard transactions with legitimate use of
CHECK(MULTI)SIGshould remain standard with this limit.The estimation of sighash is based on the assumption that
SignatureHashis performed once only for each signature within aCHECKMULTISIG. This PR does not depend on any other policy or softforks like those in #8755. Despite the counting is more conservative, legitimate standard transactions for #8755 should also be standard in this implementation.Todo: unit tests