Skip to content

Commit 2f42f60

Browse files
spencer-tbmarioevz
andauthored
chore: add osaka engine updates (#1510)
* chore: add osaka engine updates. * chore(docs): add changelog. * Update src/ethereum_test_rpc/types.py Co-authored-by: Mario Vega <[email protected]> * Update src/ethereum_test_rpc/types.py Co-authored-by: Mario Vega <[email protected]> * chore: tox fixes. --------- Co-authored-by: Mario Vega <[email protected]>
1 parent b33ed11 commit 2f42f60

File tree

4 files changed

+40
-0
lines changed

4 files changed

+40
-0
lines changed

docs/CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ Test fixtures for use by clients are available for each release on the [Github r
1616

1717
### 📋 Misc
1818

19+
- ✨ Engine API updates for Osaka, add `get_blobs` rpc method ([#1510](https://github.com/ethereum/execution-spec-tests/pull/1510)).
20+
1921
### 🧪 Test Cases
2022

2123
## [v4.4.0](https://github.com/ethereum/execution-spec-tests/releases/tag/v4.4.0) - 2025-04-29

src/ethereum_test_forks/forks/forks.py

+7
Original file line numberDiff line numberDiff line change
@@ -1284,6 +1284,13 @@ def engine_forkchoice_updated_version(
12841284
class Osaka(Prague, solc_name="cancun"):
12851285
"""Osaka fork."""
12861286

1287+
@classmethod
1288+
def engine_get_payload_version(
1289+
cls, block_number: int = 0, timestamp: int = 0
1290+
) -> Optional[int]:
1291+
"""From Osaka, get payload calls must use version 5."""
1292+
return 5
1293+
12871294
@classmethod
12881295
def evm_code_types(cls, block_number: int = 0, timestamp: int = 0) -> List[EVMCodeType]:
12891296
"""EOF V1 is supported starting from Osaka."""

src/ethereum_test_rpc/rpc.py

+16
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from .types import (
1616
ForkchoiceState,
1717
ForkchoiceUpdateResponse,
18+
GetBlobsResponse,
1819
GetPayloadResponse,
1920
JSONRPCError,
2021
PayloadAttributes,
@@ -344,3 +345,18 @@ def get_payload(
344345
),
345346
context=self.response_validation_context,
346347
)
348+
349+
def get_blobs(
350+
self,
351+
params: List[Hash],
352+
*,
353+
version: int,
354+
) -> GetBlobsResponse:
355+
"""`engine_getBlobsVX`: Retrieves blobs from an execution layers tx pool."""
356+
return GetBlobsResponse.model_validate(
357+
self.post_request(
358+
f"getBlobsV{version}",
359+
*[to_json(param) for param in params],
360+
),
361+
context=self.response_validation_context,
362+
)

src/ethereum_test_rpc/types.py

+15
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,24 @@ def blob_versioned_hashes(self) -> List[Hash]:
136136
return [Hash(b"\1" + commitment[1:]) for commitment in self.commitments]
137137

138138

139+
class BlobAndProof(CamelModel):
140+
"""Represents a blob and proof structure."""
141+
142+
blob: Bytes
143+
proofs: List[Bytes] | None = None # >= Osaka (V2)
144+
145+
proof: Bytes | None = None # <= Prague (V1)
146+
147+
139148
class GetPayloadResponse(CamelModel):
140149
"""Represents the response of a get payload request."""
141150

142151
execution_payload: FixtureExecutionPayload
143152
blobs_bundle: BlobsBundle | None = None
144153
execution_requests: List[Bytes] | None = None
154+
155+
156+
class GetBlobsResponse(CamelModel):
157+
"""Represents the response of a get blobs request."""
158+
159+
result: List[BlobAndProof | None]

0 commit comments

Comments
 (0)