CH12: replace std tx policy with only consensus tx rules

The previous list mixed consensus rules that transaction must follow
with standard transaction policy, which I think was confusng for readers
and also a problem in a later reference where we claim that all
transactions in a block must follow the rules (true for consensus; false
for policy).
develop
David A. Harding 1 year ago
parent cb15241574
commit 4fa8a1590c

@ -321,55 +321,28 @@ criteria:
- Neither lists of inputs or outputs are empty.
- The transaction size in bytes is less than +MAX_BLOCK_SIZE+.
- The transaction weight is less than the maximum block weight
limit.
- Each output value, as well as the total, must be within the allowed
range of values (less than 21m coins, more than the _dust_ threshold).
- None of the inputs have hash=0, N=1 (coinbase transactions should not
be relayed).
range of values (zero or more, but less than 21m coins).
- +nLocktime+ is equal to +INT_MAX+, or +nLocktime+ and +nSequence+
values are satisfied according to +MedianTimePast+.
- The transaction size in bytes is greater than or equal to 100.
values are satisfied according to the locktime and BIP68 rules.
- The number of signature operations (SIGOPS) contained in the
transaction is less than the signature operation limit.
- The unlocking script (+scriptSig+) can only push numbers on the stack,
and the locking script (+scriptPubkey+) must match +IsStandard+ forms
(this rejects "nonstandard" transactions).
- A matching transaction in the pool, or in a block in the main branch,
must exist.
- For each input, if the referenced output exists in any other
transaction in the pool, the transaction must be rejected.
- For each input, look in the main branch and the transaction pool to
find the referenced output transaction. If the output transaction is
missing for any input, this will be an orphan transaction. Add to the
orphan transactions pool, if a matching transaction is not already in
the pool.
- The outputs being spent match outputs in the mempool or unspent
outputs in a block in the main branch.
- For each input, if the referenced output transaction is a coinbase
output, it must have at least +COINBASE_MATURITY+ (100) confirmations.
- For each input, the referenced output must exist and cannot already be
spent.
- Using the referenced output transactions to get input values, check
that each input value, as well as the sum, are in the allowed range of
values (less than 21m coins, more than 0).
- Reject if the sum of input values is less than sum of output values.
- Reject if transaction fee would be too low (+minRelayTxFee+) to get
into an empty block.
- The unlocking scripts for each input must validate against the
corresponding output locking scripts.
- The scripts for each input must validate against the
corresponding output scripts.
These conditions can be seen in detail in the functions
+AcceptToMemoryPool+, +CheckTransaction+, and +CheckInputs+ in Bitcoin

Loading…
Cancel
Save