@@ -976,6 +976,14 @@ def header_beacon_root_required(
976976 del block_number , timestamp
977977 return False
978978
979+ @classmethod
980+ def header_slot_number_required (
981+ cls , * , block_number : int = 0 , timestamp : int = 0
982+ ) -> bool :
983+ """At genesis, header must not contain slot number (EIP-7843)."""
984+ del block_number , timestamp
985+ return False
986+
979987 @classmethod
980988 def engine_new_payload_blob_hashes (
981989 cls , * , block_number : int = 0 , timestamp : int = 0
@@ -3338,9 +3346,7 @@ class Amsterdam(BPO2):
33383346 def header_bal_hash_required (
33393347 cls , * , block_number : int = 0 , timestamp : int = 0
33403348 ) -> bool :
3341- """
3342- From Amsterdam, header must contain block access list hash (EIP-7928).
3343- """
3349+ """BAL hash in header required from Amsterdam (EIP-7928)."""
33443350 del block_number , timestamp
33453351 return True
33463352
@@ -3367,3 +3373,36 @@ def engine_execution_payload_block_access_list(
33673373 """
33683374 del block_number , timestamp
33693375 return True
3376+
3377+ @classmethod
3378+ def header_slot_number_required (
3379+ cls , * , block_number : int = 0 , timestamp : int = 0
3380+ ) -> bool :
3381+ """Slot number in header required from Amsterdam (EIP-7843)."""
3382+ del block_number , timestamp
3383+ return True
3384+
3385+ @classmethod
3386+ def opcode_gas_map (
3387+ cls , * , block_number : int = 0 , timestamp : int = 0
3388+ ) -> Dict [OpcodeBase , int | Callable [[OpcodeBase ], int ]]:
3389+ """Add SLOTNUM opcode gas cost for Amsterdam (EIP-7843)."""
3390+ gas_costs = cls .gas_costs (
3391+ block_number = block_number , timestamp = timestamp
3392+ )
3393+ base_map = super (Amsterdam , cls ).opcode_gas_map (
3394+ block_number = block_number , timestamp = timestamp
3395+ )
3396+ return {
3397+ ** base_map ,
3398+ Opcodes .SLOTNUM : gas_costs .G_BASE ,
3399+ }
3400+
3401+ @classmethod
3402+ def valid_opcodes (
3403+ cls , * , block_number : int = 0 , timestamp : int = 0
3404+ ) -> List [Opcodes ]:
3405+ """Add SLOTNUM opcode for Amsterdam (EIP-7843)."""
3406+ return [Opcodes .SLOTNUM ] + super (Amsterdam , cls ).valid_opcodes (
3407+ block_number = block_number , timestamp = timestamp
3408+ )
0 commit comments