I don’t think think we need to boil the ocean in this EIP. I can’t come up with any use cases where CALLER
wouldn’t refer to the address of the entity making a call. If there are, we should could address them. However, I don’t see a benefit in altering a widely used opcode to support potential transaction types.
ORIGIN
is a bit of a special case since AFAIK it hasn’t been used for anything terribly productive on mainnet. To be safe and less contentious, we might as well just introduce GASPAYER
since all transactions will be paid by someone. CALLER
is widely used and any transaction type which significantly alters the meaning of it will be certainly be met with resistance.
My intuition is that we should minimize the observability of different transaction types from within the EVM. For example, what if a transaction was introduced which paid a portion of the fees to a developer fund and to boycott it, some contracts would not allow transactions of that type? I believe all transactions should be treated equally once they enter the EVM. What use cases can you imagine if contracts can treat transactions unequally?
I think this is more than reasonable and, in fact, is already the implicit assertion made by contract developers.
Is there a reason why it wouldn’t set CALLER
to the address of the multisig?