So current tx. is (basically) like this right;
inputs;
(n times)
outputs;
OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG (n times)
but this is really boilerplate. And probably like 90% of tx. are like this^. so why not have an inbuilt method to process these tx. much easier and more scalable?
so like this;
type: simple_tx,
inputs: {
tx_id: (n times)
aggregated signature: (1 time)
}
outputs: {
type: simple_unlock
new_owner:
}
so here we get rid of a lot a lot of data by making tx much more simple. Node processes inputs by searching all tx_id's and makes sure they are all of the type
simple_unlock. Then it adds all the pub keys for those tx up and makes sure that the input signature matches*. Then if its valid the node adds the new outputs to the db.
if
simple_unlock is used with traditional scripting unlocks outputs then it just defaults to
OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG and the spender has to provide a valid unlock script.
Using this method means that you can get size of input signatures down from O(n) to O(1). There is also space saving on the outputs because you only need to use a pub key and not other scripting stuff.
*i am not sure if ecdsa has signature aggregation? But I know schnorr does.