Add a BLOBBASEFEE (0x4a) instruction that returns the value of the blob base-fee of the current block it is executing in. It is the identical to EIP-3198 (BASEFEE opcode) except that it returns the blob base-fee as per EIP-4844.
The intended use case would be for contracts to get the value of the blob base-fee. This feature enables blob-data users to programmatically account for the blob gas price, eg:
Add a BLOBBASEFEE instruction with opcode 0x4a, with gas cost 2.
| Op | Input | Output | Cost |
|---|---|---|---|
| 0x4a | 0 | 1 | 2 |
BLOBBASEFEE returns the result of the get_blob_gasprice(header) -> int function as defined in EIP-4844 §Gas accounting.
The value of the blob base-fee is needed to process data-blob transactions. That means its value is already available before running the EVM code.
The instruction does not add extra complexity and additional read/write operations, hence the choice of 2 gas cost. This is also identical to EIP-3198 (BASEFEE opcode)'s cost as it just makes available data that is in the header.
There are no known backward compatibility issues with this instruction.
Assume calling get_blob_gasprice(header) (as defined in EIP-4844 §Gas accounting) on the current block's header returns 7 wei:
BLOBBASEFEE should push the value 7 (left padded byte32) to the stack.
Bytecode: 0x4900 (BLOBBASEFEE, STOP)
| Pc | Op | Cost | Stack | RStack |
|---|---|---|---|---|
| 0 | BLOBBASEFEE | 2 | [] | [] |
| 1 | STOP | 0 | [7] | [] |
Output: 0x
Consumed gas: 2
A complete suite of tests can be found here.
The value of the blob base-fee is not sensitive and is publicly accessible in the block header. There are no known security implications with this instruction.
Copyright and related rights waived via CC0.