Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 6 additions & 9 deletions specs/gloas/builder.md
Original file line number Diff line number Diff line change
Expand Up @@ -231,16 +231,10 @@ alias `bid` to be the committed `ExecutionPayloadBid` in
6. Set `envelope.blob_kzg_commitments` to be the `commitments` field of the
blobs bundle constructed when constructing the bid. This field **MUST** have
a `hash_tree_root` equal to `bid.blob_kzg_commitments_root`.

After setting these parameters, the builder assembles
`signed_execution_payload_envelope = SignedExecutionPayloadEnvelope(message=envelope, signature=BLSSignature())`,
then verify that the envelope is valid with
`process_execution_payload(state, signed_execution_payload_envelope, execution_engine, verify=False)`.
This function should not trigger an exception.
Comment on lines -235 to -239
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm I'm pretty sure this section is necessary. I believe we want builders to check that the execution payload envelope is valid before setting envelope.state_root. If this is not the case, we can/should remove the verify parameter entirely.

cc @potuz

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, isn't it at L248? I thought it's a duplicate and just wanted to make a stylistic change without changing original meaning.


7. Set `envelope.state_root` to `hash_tree_root(state)`.

After preparing the `envelope` the builder should sign the envelope using:
After building the `envelope`, the builder obtains a `signature` of the envelope
by using:

```python
def get_execution_payload_envelope_signature(
Expand All @@ -253,7 +247,10 @@ def get_execution_payload_envelope_signature(

Then the builder assembles
`signed_execution_payload_envelope = SignedExecutionPayloadEnvelope(message=envelope, signature=signature)`
and broadcasts it on the `execution_payload` global gossip topic.
and verifies the validity of the envelope with
`process_execution_payload(state, signed_execution_payload_envelope, execution_engine, verify=False)`.
If it doesn't trigger an exception, the builder broadcasts it on the
`execution_payload` global gossip topic.

### Honest payload withheld messages

Expand Down