Conversation
Co-authored-by: developeruche <developeruche@gmail.com>
Require a complete witness for every VALID response and clarify trie, bytecode, and ancestor-header contents. Keep behavioral rules in refactor.md and SSZ definitions in refactor-ssz.md.
|
This looks good to me!.. But currently, this capability is not being advertised. I guess What do you think?
|
Uhm, I'm not sure this is necessary, since in this PR we already say that this optional endpoint is advertised in
So if it is advertised there, I'm not sure we need a new
|
* added example for sumbit payload witness * nit fixes
|
@MariusVanDerWijden opened for review! |
MariusVanDerWijden
left a comment
There was a problem hiding this comment.
Generally LGTM, theres one change that I couldn't understand
| ``` | ||
|
|
||
| The 41 bytes break down as: `status` (1 byte = `0x01`, `VALID`) + | ||
| The 41 bytes break down as: `status` (1 byte = `0x00`, `VALID`) + |
There was a problem hiding this comment.
Ah, this just fixes a typo in an existing example. The existing PayloadStatus enum defines VALID = 0 and INVALID = 1, so the byte here should be 0x00.
Note: this PR is based on previous work from @developeruche, plus some extra refinements
This PR adds
POST /engine/v1/payloads/witnessto the REST + SSZ proposal. It lets zkVM provers and stateless validators submit a payload and receive its validation result, execution witness, and transaction sender public keys in one call, avoiding a separate witness request and hex-JSON encoding.The endpoint is optional from Amsterdam onward and advertised through capabilities. It accepts the same request as
/payloads. EveryVALIDresponse must include a complete witness, including for already-known payloads; other statuses must omit it.Responses also include
public_keys, allowing proving hosts to populateStatelessInput.public_keyswithout recovering keys themselves. ForVALIDpayloads, including already-known payloads, the list contains one 65-byte uncompressed sender public key per transaction, in transaction order; for other statuses, it is empty. Stateless validators must still verify the supplied keys against transaction signatures and recovery IDs.The proposal defines witness contents, public-key semantics, SSZ containers, and size bounds. Behavioral requirements live in
refactor.md; encoding definitions live inrefactor-ssz.md.