EIP-2274: Multiple address spaces for Precompiled contracts

Hi everyone,

I just wrote this draft EIP to have different addressing schemes to define precompiled contracts

Happy to discuss it and have any feedback!

First, I don’t think there is any requirement technical or specification wise that all precompiled contracts exist in a consecutive space. The chain operator could just as easily add a precompiled contract at 0x42 instead of 0xE.

As an alternative what if instead the precompile range from 0x0 to 0xffff was assigned to precompile operators? Much like port assignments are for TCP. Mainnet would get 0x0000 to 0x00ff and a private use space would be reserved at 0xff00 to 0xffff much like unicode. There are some mainnet uses such as 0xdead for ENS, where they could just be given the 0xdea0-0xdeaf range during the initial assignments.

I think this is no less disruptive than making sure the vmID space is properly used and has the advantage of not requiring a new opcode (with associated required toolchain support in solidity and vyper).