As far as I know, the quadratic hashing problem came from the fact that every time a transaction is verified (or signed), the "unsigned transaction" that is hashed and verified changes depending on the transaction input that is being analysed. Basically, the target input
ScriptSig is set to the
ScriptPubKey of the
UTXO to be redeemed, while the other inputs are left empty.
However, what I can't see is what's the reason behind that. Why aren't all the
ScriptSig fields assigned either to their
ScriptPubkey field, or left empty? The way it was designed doesn't seems to provide any kind of benefit (at least I can't see it), while it makes you recalculate the
double-sha256 every single time an input is analysed, leading to a quadratic hashing problem.