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.