I think it's not a horrible idea to just add a field into the transaction metadata for N_SIG_OPS in the script_sig It is much simpler in implementation if the concern is complexity (once a transaction goes above N_SIG_OPS it could be considered invalid, number computed must be equal). It wouldn't even need to be stored permanently as it can be pruned easily and recomputed later (hashes would protect against buggy complicated sig counting code). Furthermore, it would differentiate a branch with different counts well. On Wed, Jul 22, 2015 at 2:09 AM, Gavin Andresen via bitcoin-dev < bitcoin-dev@lists.linuxfoundation.org> wrote: > On Mon, Jul 20, 2015 at 4:55 PM, Gregory Maxwell > wrote: > >> On Mon, Jul 20, 2015 at 7:10 PM, Gavin Andresen via bitcoin-dev >> wrote: >> > Mitigate a potential CPU exhaustion denial-of-service attack by limiting >> > the maximum size of a transaction included in a block. >> >> This seems like a fairly indirect approach. The resource being watched >> for is not the size (otherwise two transactions for 200k would be >> strictly worse than one 200k transactions) but the potential of N^2 >> costs related to repeated hashing in checksig; which this ignores. >> > > Yes. The tradeoff is implementation complexity: it is trivial to check > transaction size, > not as trivial to count signature operations, because > number-of-bytes-in-transaction > doesn't require any context. > > But I would REALLY hate myself if in ten years a future version of me was > struggling to > get consensus to move away from some stupid 100,000 byte transaction size > limit > I imposed to mitigate a potential DoS attack. > > So I agree, a limit on sigops is the right way to go. And if that is being > changed, > might as well accurately count exactly how many sigops a transaction > actually > requires to be validated... > > -- > -- > Gavin Andresen > > > _______________________________________________ > bitcoin-dev mailing list > bitcoin-dev@lists.linuxfoundation.org > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev > >