Besides Ethereum, EVM has been widely used by multiple blockchain projects to support smart contracts (including EEA). Different vendors may want to add new features where standard EVM does not have. However, adding such features with compatibility with the standard EVM can be complicated - it is not recommended to use a new opcode as the opcode may be used by the standard EVM in the future. Instead, it generally requires to implement a precompile contracts, which needs careful gas calculation and can be error-prone.
The EIP aims to ease the work of adding non-standard EVM features (i.e., extensions in x86). The EIP uses two opcodes OP_VENDOR and OP_VCALL:
- OP_VENDOR returns a uint256 indicating who is the vendor of the EVM. The vendor list can be registered similar to coin_type in HD wallets.
- OP_VCALL calls a vendor-specific extension (similar to CPU instruction extensions such as SSE, AVX). Which extension of the vendor and the arguments can be specified in the stack or data appended after OP_VCALL.
Note that this can be also used to tell which version of Ethereum the EVM is running on (such as Peterburg, Byzantine).