diff --git a/ch10.asciidoc b/ch10.asciidoc index a7522732..48179f14 100644 --- a/ch10.asciidoc +++ b/ch10.asciidoc @@ -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