Skip to content

Commit a3ad6c5

Browse files
committed
eip8025
1 parent 339eea9 commit a3ad6c5

File tree

4 files changed

+119
-0
lines changed

4 files changed

+119
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
get:
2+
operationId: getExecutionProofs
3+
summary: Get execution proofs
4+
description: |
5+
Retrieves execution proofs known by the node.
6+
parameters:
7+
- name: new_payload_request_root
8+
in: query
9+
required: false
10+
schema:
11+
$ref: '../../../beacon-node-oapi.yaml#/components/schemas/Root'
12+
description: "Filter by new payload request root"
13+
tags:
14+
- Beacon
15+
responses:
16+
"200":
17+
description: Successful response
18+
content:
19+
application/json:
20+
schema:
21+
title: GetExecutionProofsResponse
22+
type: object
23+
required: [data]
24+
properties:
25+
data:
26+
type: array
27+
items:
28+
$ref: '../../../beacon-node-oapi.yaml#/components/schemas/EIP8025.ProverSignedExecutionProof'
29+
"400":
30+
description: "The new_payload_request_root could not be parsed"
31+
content:
32+
application/json:
33+
schema:
34+
$ref: "../../../beacon-node-oapi.yaml#/components/schemas/ErrorMessage"
35+
example:
36+
code: 400
37+
message: "Invalid new_payload_request_root"
38+
"500":
39+
$ref: '../../../beacon-node-oapi.yaml#/components/responses/InternalError'

apis/prover/execution_proofs.yaml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
post:
2+
operationId: submitExecutionProofs
3+
summary: Submit execution proofs from proof engine
4+
description: |
5+
Receives unsigned execution proofs from the proof engine. The beacon node
6+
validates, signs, stores, and broadcasts them on the `execution_proof` gossip topic.
7+
tags:
8+
- Prover
9+
requestBody:
10+
required: true
11+
content:
12+
application/json:
13+
schema:
14+
type: array
15+
items:
16+
$ref: '../../beacon-node-oapi.yaml#/components/schemas/EIP8025.ExecutionProof'
17+
application/octet-stream:
18+
schema:
19+
description: "SSZ serialized List[ExecutionProof, MAX_EXECUTION_PROOFS_PER_PAYLOAD]"
20+
responses:
21+
"200":
22+
description: "Proofs received and validated successfully"
23+
"400":
24+
description: "One or more proofs failed validation or do not match pending requests"
25+
content:
26+
application/json:
27+
schema:
28+
$ref: "../../beacon-node-oapi.yaml#/components/schemas/IndexedErrorMessage"
29+
"500":
30+
$ref: '../../beacon-node-oapi.yaml#/components/responses/InternalError'

beacon-node-oapi.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,10 @@ paths:
144144
$ref: "./apis/beacon/pool/voluntary_exits.yaml"
145145
/eth/v1/beacon/pool/bls_to_execution_changes:
146146
$ref: "./apis/beacon/pool/bls_to_execution_changes.yaml"
147+
/eth/v1/beacon/proofs/execution_proofs:
148+
$ref: "./apis/beacon/proofs/execution_proofs.yaml"
149+
/eth/v1/prover/execution_proofs:
150+
$ref: "./apis/prover/execution_proofs.yaml"
147151

148152
/eth/v2/debug/beacon/states/{state_id}:
149153
$ref: './apis/debug/state.v2.yaml'
@@ -433,6 +437,12 @@ components:
433437
$ref: "./types/fulu/block_contents.yaml#/Fulu/SignedBlockContents"
434438
Fulu.DataColumnSidecars:
435439
$ref: "./types/fulu/data_column_sidecar.yaml#/Fulu/DataColumnSidecars"
440+
EIP8025.PublicInput:
441+
$ref: './types/eip8025/execution_proof.yaml#/EIP8025/PublicInput'
442+
EIP8025.ExecutionProof:
443+
$ref: './types/eip8025/execution_proof.yaml#/EIP8025/ExecutionProof'
444+
EIP8025.ProverSignedExecutionProof:
445+
$ref: './types/eip8025/execution_proof.yaml#/EIP8025/ProverSignedExecutionProof'
436446
Node:
437447
$ref: './types/fork_choice.yaml#/Node'
438448
ExtraData:

types/eip8025/execution_proof.yaml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
EIP8025:
2+
PublicInput:
3+
type: object
4+
description: "Public input for execution proof verification"
5+
required: [new_payload_request_root]
6+
properties:
7+
new_payload_request_root:
8+
$ref: '../primitive.yaml#/Root'
9+
description: "Root of the NewPayloadRequest being proven"
10+
11+
ExecutionProof:
12+
type: object
13+
description: "Unsigned execution proof for stateless validation"
14+
required: [proof_data, proof_type, public_input]
15+
properties:
16+
proof_data:
17+
type: string
18+
format: hex
19+
pattern: "^0x[a-fA-F0-9]{0,614400}$"
20+
description: "Proof data, max 300KiB (307200 bytes = 614400 hex chars)"
21+
example: "0x1234567890abcdef"
22+
proof_type:
23+
$ref: '../primitive.yaml#/Uint8'
24+
description: "Type identifier for the proof system"
25+
public_input:
26+
$ref: '#/EIP8025/PublicInput'
27+
28+
ProverSignedExecutionProof:
29+
type: object
30+
description: "Execution proof signed by a whitelisted prover"
31+
required: [message, prover_pubkey, signature]
32+
properties:
33+
message:
34+
$ref: '#/EIP8025/ExecutionProof'
35+
prover_pubkey:
36+
$ref: '../primitive.yaml#/Pubkey'
37+
description: "BLS public key of the prover"
38+
signature:
39+
$ref: '../primitive.yaml#/Signature'
40+
description: "BLS signature over the execution proof"

0 commit comments

Comments
 (0)