EIP Proposal: PURECALL (no state accesses)

Was chatting with @pipermerriam about this idea, curious if there are existing EIPs or proposals for it.

Basically, this proposal would be for a new calling opcode like STATICCALL that would ensure no state reads are occurring (along with state writes), and additionally that no environment variable reads are occurring (e.g. coinbase, msg.sender, etc.)

The use of this would be for an additional degree of confidence in library calls not accessing state, inspired most prominently by Casper’s “purity checker” which ensures that the validator’s signature code does not access these values and is a “pure call”.

Let me know what you think, if there’s no other EIPs and this is a good idea I will create one.

This is similar:

@pipermerriam was tossing around the idea of a more abstract opcode that allows you to describe the allowed accesses of the call via a list of flags.

@axic mentioned this exact proposal on EIP195:

We should revisit @vbuterin’s proposal