Join GitHub today
GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
Already on GitHub? Sign in to your account
The "Why" For Standard Transactions, Plus Std Tx Tweaks #436
Conversation
saivann
commented on the diff
May 31, 2014
| +Non-standard transactions---those that fail the test---may be accepted | ||
| +by nodes not using the default Bitcoin Core settings. If they are | ||
| +included in blocks, they will also avoid the isStandard test and be | ||
| +processed. However, miners who produce blocks with non-standard | ||
| +transactions put their block reward at risk---if a transaction | ||
| +produces a bug, the block which includes it will likely be orphaned by | ||
| +other miners. | ||
| + | ||
| +Besides making it more difficult for someone to attack Bitcoin for | ||
| +free by broadcasting harmful transactions, the standard transaction | ||
| +test also helps prevent users from creating transactions today that | ||
| +would make adding new transaction features in the future more | ||
| +difficult. For example, as described above, each transaction includes | ||
| +a version number---if users started arbitrarily changing the version | ||
| +number, it would become useless as a tool for introducing | ||
| +backwards-incompatible features. |
harding
Contributor
|
|
@harding This seems like very good changes. All LGTM!! |
|
@saivann thanks! In the absence of critical feedback, this will be merged late May 31st UTC. |
luke-jr
and 3 others
commented on an outdated diff
May 31, 2014
| -0.9, the standard script types are: | ||
| +After the discovery of several dangerous bugs in early versions of | ||
| +Bitcoin, a test was added which only accepted transactions from the | ||
| +network if they had an output script which matched a small set of | ||
| +believed-to-be-safe templates and if the rest of the transaction didn't | ||
| +violate another small set of rules enforcing good network behavior. This | ||
| +is the `isStandard()` test, and transactions which pass it are called | ||
| +standard transactions. | ||
| + | ||
| +Non-standard transactions---those that fail the test---may be accepted | ||
| +by nodes not using the default Bitcoin Core settings. If they are | ||
| +included in blocks, they will also avoid the isStandard test and be | ||
| +processed. However, miners who produce blocks with non-standard | ||
| +transactions put their block reward at risk---if a transaction | ||
| +produces a bug, the block which includes it will likely be orphaned by | ||
| +other miners. |
luke-jr
Contributor
|
luke-jr
and 1 other
commented on an outdated diff
May 31, 2014
| @@ -378,14 +403,19 @@ accept, broadcast, nor mine your transaction. When you try to broadcast | ||
| your transaction to a peer running the default settings, you will | ||
| receive an error. | ||
| -Unfortunately, if you create a non-standard redeemScript, hash it, and use the hash | ||
| +Unfortunately, if you create a redeemScript, hash it, and use the hash |
luke-jr
Contributor
|
harding commentedMay 31, 2014
Based on a discussion tonight on IRC with comments from @gmaxwell,
bitcoin428, and kadoban.
explains the purpose behind standard transactions so readers
understand that these aren't limitations for limitation's sake. More
specifically, note that bug-prevention isn't the only reason for
standard transactions---thanks to @gmaxwell for explaining the forward
compatablity reason to me.
that it doesn't apply to txes in blocks. Thanks to bitcoin428 for
pointing out this source of confusion.
not pass isStandard(). Thanks to kadoban for pointing out the absense
of that information.