This reverts commit e3dcf0ce1f, reversing
changes made to c71e9fdf2d.
Once again we had a broken new plugin that Travis CI and local building
didn't catch.
I believe that the current description of transaction execution is not
accurately describing how the stack machine works. (It's close but uses
slightly misleading wording.) While data values are pushed when executed
in the script, other opcodes are never pushed; they are simply executed.
Wording improved per apoelstra's comments.
Rebased-from: 54f01b2d0b2b2383fd0d9085a829b55d83f7cd67
Rebased-by: David A. Harding
Closes#816
Converts fake subheadings created using **bold** to real HTML
subheadings without adding them to the table of contents.
Also fixes a link broken by commit 4e067ac89e and adds a Makefile
test to catch future similar breakage.
Provides a detailed description of the transaction format, replacing an
example hexdump taken from the wiki.
I'm putting this in the transaction section as the format is necessary
for the creation of txids, which are used as merkle leaves (so are
covered by consensus rules). However, this is also the format used by
several P2P network messages to transmit transactions, so I'll be
linking back to it from there as I document those messages.
As reported by @gsalgado (thanks!), the docs incorrectly state that all
sigs are compared against all pubkeys. This commit provides a corrected
description, additional details, and references in other parts of the
text where we mention multisig. (Fixes#622)
* Replace previous TX Overview image with a simplified illustration.
The previous overview image was commented out in pull #566 / commit
6afc683. New image incorporates suggestions by @saivann (thanks!)
* Add new illustration showing the specifics of outputs and inputs (and
how they're related). This replaces most of the detail lost by using a
simplified overview image
* Add two short paragraphs briefly describing the ouput and input
features, leading into the existing detailed P2PKH description
This modifies commits provided by @petertodd to use the terms "pubkey
script" and "signature script" instead of other terms.
* Rename "scriptPubKey" and "output script" to "pubkey script"
(suggested by @luke-jr). We leave a token "scriptPubKey" at the point
where we define pubkey script so that searchers can find it.
* Rename "scriptSig" to "signature script" (suggested by @luke-jr). We
also leave a token "scriptSig" at this definition point.
* Rename "redeemScript" to "redeem script"
* Defined ECDSA on secp256k1 curve as the crypto used in the Transaction
section and added references to secp256k1 private/public keys and
signatures.
* Removed "The Parts Of A Transaction" illustration by commenting it out
in the HTML. Shoehorning the pubkey/signature script terms into this
image was becoming difficult, and I'm not very fond of that
illustration anyway. I'll see if I can think of a nicer replacement
illustration for some point in the future.
* Add a short paraphrased version @petertodd's description of scripts as
generalized crypto.
* Updated all the illustrations which referred to either pubkey scripts
or signature scripts to use these terms.
* Small grammar fixes.
* Lower case #term-scriptPubKey as all our other anchor links are
lower case
* Replace script/scripts with scriptPubKey/scriptPubKeys in
_autocrossref.yaml. (Fixes `make test` errors from broken
auto-crossref links.)
* Remove contentious sentence about mining non-standard txes possibly
creating orphaned blocks and loss of block reward. Suggested by
@luke-jr (thanks!)
* Remove unnecessary value judgement ("unfortunately") against
non-standard redeemScripts. Mention that they can be used deliberately
by someone who wants to easily receive payment to a non-standard
output script. Suggested by @luke-jr (thanks!)
Based on a discussion tonight on IRC with comments from @gmaxwell,
bitcoin428, and kadoban.
* Add a new introduction to the Standard Transaction section which
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.
* Make it clear that isStandard() only applies to loose transactions and
that it doesn't apply to txes in blocks. Thanks to bitcoin428 for
pointing out this source of confusion.
* Make it cleare that a non-standard redeemScript is a script that would
not pass isStandard(). Thanks to kadoban for pointing out the absense
of that information.
* Correct misinformation about the dust limit. Reported by @dbilitch and
confirmed by @gmaxwell. Thanks!
* Drop reported minimum relay fee from 10,000 to 1,000 satoshis.
_includes/guide_transactions.md:
* Expand the security part of the Avoiding Key Reuse subsection to also
describe why creating more than one signature with the same private
key might be a problem. Based on feedback from @luke-jr. Thanks!
_includes/guide_transactions.md:
* Assertions that pay-to-public-key (unhashed) was "used in all coinbase
transactions" and "is more convenient" have been removed: the first
statement because its provably untrue; the second because it's debatable
(spending unhashed keys requires fewer bytes, so it might be more
convenient). Based on feedback from @TierNolan. Thanks!
_includes/guide_transactions.md:
* DOS expanded to "denial of service" to improve readability and avoid
conflation with Disk Operating System. Change based on feedback from
@luke-jr. Thanks!
_includes/guide_mining.md:
* Dropped assertion that `getblocktemplate` can't reuse an established
socket. Change based on feedback from @luke-jr. Thanks!
_includes/guide_contracts.md:
* Dropped opening sentences to Contracts section, which were a holdover
from when contracts was a subsection of Transactions. New opening
sentence is now similar to the summary sentences which open all other
sections. Change based on feedback from @mikehearn. Thanks!
* Deleted USA-centric example from second paragraph and merged remaining
parts of the first two paragraphs into a single opening paragraph with
no example. Change based on feedback from @mikehearn. Thanks!
* Removed mention of placeholder byte from multisig example. Change
based on feedback from @mikehearn. Thanks!
Thanks also (in alphabetical order) to @cbeams, @mikehearn, and
@tgeller, among others.
The last pre-squash commit was: c2b8d562aa107c7b68c60946cea14cdccc5159ad