-
Notifications
You must be signed in to change notification settings - Fork 210
EIP-8025 #569
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
frisitano
wants to merge
2
commits into
ethereum:master
Choose a base branch
from
frisitano:feat/eip8025
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+165
−0
Open
EIP-8025 #569
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,60 @@ | ||
| get: | ||
| operationId: getExecutionProofs | ||
| summary: Get execution proofs | ||
| description: | | ||
| Retrieves execution proofs for a given block id. | ||
| Depending on `Accept` header it can be returned either as JSON or as bytes serialized by SSZ. | ||
|
|
||
| Proofs are returned as an ordered list of `ProverSignedExecutionProof` objects. | ||
|
|
||
| Proofs are only available for recent blocks within the proof retention period. | ||
| tags: | ||
| - Beacon | ||
| parameters: | ||
| - name: block_id | ||
| in: path | ||
| required: true | ||
| $ref: "../../../beacon-node-oapi.yaml#/components/parameters/BlockId" | ||
| responses: | ||
| "200": | ||
| description: Successful response | ||
| content: | ||
| application/json: | ||
| schema: | ||
| title: GetExecutionProofsResponse | ||
| type: object | ||
| required: [execution_optimistic, finalized, data] | ||
| properties: | ||
| execution_optimistic: | ||
| $ref: "../../../beacon-node-oapi.yaml#/components/schemas/ExecutionOptimistic" | ||
| finalized: | ||
| $ref: "../../../beacon-node-oapi.yaml#/components/schemas/Finalized" | ||
| data: | ||
| type: array | ||
| items: | ||
| $ref: '../../../beacon-node-oapi.yaml#/components/schemas/EIP8025.ProverSignedExecutionProof' | ||
| application/octet-stream: | ||
| schema: | ||
| description: "SSZ serialized `List[ProverSignedExecutionProof, MAX_EXECUTION_PROOFS_PER_PAYLOAD]` bytes. Use Accept header to choose this response type" | ||
| "400": | ||
| description: "The block ID supplied could not be parsed" | ||
| content: | ||
| application/json: | ||
| schema: | ||
| $ref: "../../../beacon-node-oapi.yaml#/components/schemas/ErrorMessage" | ||
| example: | ||
| code: 400 | ||
| message: "Invalid block ID: current" | ||
| "404": | ||
| description: "Block not found" | ||
| content: | ||
| application/json: | ||
| schema: | ||
| $ref: "../../../beacon-node-oapi.yaml#/components/schemas/ErrorMessage" | ||
| example: | ||
| code: 404 | ||
| message: "Block not found" | ||
| "406": | ||
| $ref: "../../../beacon-node-oapi.yaml#/components/responses/NotAcceptable" | ||
| "500": | ||
| $ref: '../../../beacon-node-oapi.yaml#/components/responses/InternalError' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| post: | ||
| operationId: submitExecutionProofs | ||
| summary: Submit execution proofs from proof engine | ||
| description: | | ||
| Receives unsigned execution proofs from the proof engine. The beacon node | ||
| validates, signs, stores, and broadcasts them on the `execution_proof` gossip topic. | ||
| Each proof includes the `proof_gen_id` to link it to the original proof generation request. | ||
| tags: | ||
| - Prover | ||
| requestBody: | ||
| required: true | ||
| content: | ||
| application/json: | ||
| schema: | ||
| type: array | ||
| items: | ||
| $ref: '../../beacon-node-oapi.yaml#/components/schemas/EIP8025.GeneratedProof' | ||
| application/octet-stream: | ||
| schema: | ||
| description: "SSZ serialized List[GeneratedProof, MAX_EXECUTION_PROOFS_PER_PAYLOAD]" | ||
| responses: | ||
| "200": | ||
| description: "Proofs received and validated successfully" | ||
| "400": | ||
| description: "One or more proofs failed validation or do not match pending requests" | ||
| content: | ||
| application/json: | ||
| schema: | ||
| $ref: "../../beacon-node-oapi.yaml#/components/schemas/IndexedErrorMessage" | ||
| "500": | ||
| $ref: '../../beacon-node-oapi.yaml#/components/responses/InternalError' | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| EIP8025: | ||
| ProofGenId: | ||
| type: string | ||
| format: hex | ||
| pattern: "^0x[a-fA-F0-9]{16}$" | ||
| description: "8-byte identifier for tracking proof generation requests" | ||
| example: "0x0102030405060708" | ||
|
|
||
| GeneratedProof: | ||
| type: object | ||
| description: "Generated execution proof with associated proof generation ID" | ||
| required: [proof_gen_id, execution_proof] | ||
| properties: | ||
| proof_gen_id: | ||
| $ref: '#/EIP8025/ProofGenId' | ||
| description: "ID linking this proof to the original request" | ||
| execution_proof: | ||
| $ref: '#/EIP8025/ExecutionProof' | ||
|
|
||
| PublicInput: | ||
| type: object | ||
| description: "Public input for execution proof verification" | ||
| required: [new_payload_request_root] | ||
| properties: | ||
| new_payload_request_root: | ||
| $ref: '../primitive.yaml#/Root' | ||
| description: "Root of the NewPayloadRequest being proven" | ||
|
|
||
| ExecutionProof: | ||
| type: object | ||
| description: "Unsigned execution proof for stateless validation" | ||
| required: [proof_data, proof_type, public_input] | ||
| properties: | ||
| proof_data: | ||
| type: string | ||
| format: hex | ||
| pattern: "^0x[a-fA-F0-9]{0,614400}$" | ||
| description: "Proof data, max 300KiB (307200 bytes = 614400 hex chars)" | ||
| example: "0x1234567890abcdef" | ||
| proof_type: | ||
| $ref: '../primitive.yaml#/Uint8' | ||
| description: "Type identifier for the proof system" | ||
| public_input: | ||
| $ref: '#/EIP8025/PublicInput' | ||
|
|
||
| ProverSignedExecutionProof: | ||
| type: object | ||
| description: "Execution proof signed by a whitelisted prover" | ||
| required: [message, prover_pubkey, signature] | ||
| properties: | ||
| message: | ||
| $ref: '#/EIP8025/ExecutionProof' | ||
| prover_pubkey: | ||
| $ref: '../primitive.yaml#/Pubkey' | ||
| description: "BLS public key of the prover" | ||
| signature: | ||
| $ref: '../primitive.yaml#/Signature' | ||
| description: "BLS signature over the execution proof" |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe basic question from my side: should this have the same name?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
They are in different contexts, so it's fine to have different names imo. Above, we have the HTTP endpoint that the prover receives requested proofs from the proof engine. Linked is the p2p req/res api. I think it's reasonable to have different naming.