Danny, et al., I'm hoping you'll be willing to respond continue this dialog...
What's the different between the private key and the signature?
A bitcoin private key is a randomly chosen number between 1 and 115792089237316195423570985008687907852837564279074904382605163141518161494336. Using point multiplication from a base point on the elliptic curve identified as secp256k1, a public key is mathematically associated with that private key. A signature on arbitrary data (such as a bitcoin transaction) can be mathematically generated from the private key that can be verified by anyone that possess the publick key.
What does the digital signature consist of?
https://en.bitcoin.it/wiki/Elliptic_Curve_Digital_Signature_AlgorithmWhere did it come from?
From a mathematical operation with the private key and the transaction data. The result can be verified with the public key, but does not reveal the private key (as long as the signature is properly generated).
Danny says the "private key allows you to provide a digital signature that meets the requirements of specific transaction outputs in order to be allowed to use them as transaction inputs."
Provide a digital signature... to the blockchain, right?
Provide a digital signature in the transaction input. The signature satisfies the output script of the output that is being spent by the transaction that is being created. The transaction is then broadcast to all connected bitcoin peers. Every peer verifies that the transaction is valid and then (if it is) relays it to all the peers that they are connected to. All those peers then verify that the transaction is valid and then (if it is) relay it to all their connected peers, and so on until the entire connected network has heard about the transaction.
Eventually, miners (which are peers on the network) hear about it and may choose to add it to blocks that they are building for the blockchain.
Transactions technically consist of input orders, and output orders?
Transactions technically consist of a list of inputs (which are references to previously unspent outputs) and a list of new unspent outputs. Specifically:
- A 4 byte version number
- 1 to 9 bytes indicating the number of inputs in the input list
- The list of inputs
- 1 to 9 bytes indicating the number of outputs in the output list
- A 4 byte locktime
Why did you say "specific" in "specific transaction outputs"?
Because many people mistakenly believe that the blockchain contains a balance associated with the bitcoin address, and that the input to the transaction is an amount of bitcoins to transfer from that balance. This is not how it works. The inputs are a list indicating exactly which previously unspent outputs are being spent.
Do some transaction outputs not require digital signatures?
Outputs are encumbered with scripts. In general most of those scripts encumber the output with a requirement for a valid signature. However, it's possible to create other scripts that do not require a signature (or which require multiple signatures).
An example of a complete transaction is one successfully-executed output order plus the successfully-executed input order that the output order triggers?
An example of a complete transaction is a list of previously unspent outputs as inputs that have all had their scripts satisfied with the data in the inputs, plus a valid list of outputs that meet the requirements of the bitcoin consensus rules.
Neither order will be executed unless a full set of requirements are met? Orders for transactions, such as an output and input order, are carried out only per certain requirements?
I'm not certain what you mean by "orders". Output scripts of previous transactions are executed by all peers that are attempting to validate them as inputs to the new transaction.
One requirement is typically valid order data (such as the currency, the amount...)?
Nope. No currency. No amount. Just a list of previously unspent transaction outputs to be used as transaction inputs along with the necessary data to satisfy the requirements of the outputs and then a list of new outputs encumbered with new scripts.
Another is a valid private key?
Nope. No need to provide a private key. You generally need to use the private key to provide a valid signature.
Another is the digital signature associated with the private key?
Yes. Most commonly a digital signature must be provided along with the public key.
Another is confirmation that the private key and digital signature match each other?
The public key is typically required so that all peers and nodes on the network can validate the signature. The peers and nodes then calculate a hash of the public key to make sure that the public key provided is the one that the output required.
Output requirements include (a) a valid digital signature and?? the signature must be (b) validly coupled with its private key?
Output requirements include whatever the output script indicates is required. Most commonly this is a signature and a public key.
If output requirements are met, the requirements can then be used to try to clear a transaction input?
If output requirements are met, then the list of outputs are considered to be valid by all nodes and the value associated with those outputs can be re-assigned into new outputs and a transaction fee.