Skip to content

Implement FOCIL (EIP-7805) for Grandine #545

@Subhasish-Behera

Description

@Subhasish-Behera

Implement FOCIL (EIP-7805)

Spec: EIP-7805 - Fork-Choice enforced Inclusion Lists


Overview

Implement Fork-Choice enforced Inclusion Lists (FOCIL) to enable censorship resistance through committee-based forced transaction inclusion.

Resources

Specification:

Engine API :

  • ethereum/execution-apis src/engine/experimental/eip7805.md - engine_getInclusionListV1, engine_newPayloadV5, engine_forkchoiceUpdatedV4

Beacon API :

  • ethereum/beacon-APIs apis/validator/inclusion_list.yaml, apis/validator/duties/inclusion_list.yaml - IL duties, produce/publish IL, event stream

Additional:


Checklist

Types & Core Containers

Storage

Fork Choice

Engine API

  • Implement is_inclusion_list_satisfied (engine_newPayloadV5) - execution-apis eip7805.md#engine_newpayloadv5, fork-choice.md#new-is_inclusion_list_satisfied
  • Implement engine_getInclusionListV1 - execution-apis eip7805.md#engine_getinclusionlistv1
  • Implement is_inclusion_list_satisfied in Eth1Api - execution-apis eip7805.md#engine_newpayloadv5
  • Modify notify_forkchoice_updated (engine_forkchoiceUpdatedV4) - execution-apis eip7805.md#engine_forkchoiceupdatedv4, fork-choice.md#modified-notify_forkchoice_updated

Note: Two approaches exist for applying ILs to payload building:

  • Approach A: Call FCU with empty IL at slot start, then call FCU again with actual IL once gathered (requires EL to support updating in-flight payload via FCU)
  • Approach B: Call FCU once, then use engine_updatePayloadWithInclusionListV1 to inject IL into in-flight payload

Approach A uses engine_forkchoiceUpdatedV4. Approach B is an alternative if EL doesn't support mid-build FCU updates.

Gossip & P2P

Validator Duties

Beacon REST API

  • GET /eth/v1/validator/inclusion_list - Produce IL - beacon-APIs inclusion_list.yaml
  • POST /eth/v1/validator/inclusion_list - Publish IL - beacon-APIs inclusion_list.yaml
  • POST /eth/v1/validator/duties/inclusion_list/{epoch} - Get IL committee duties - beacon-APIs duties/inclusion_list.yaml
  • Event stream: inclusion_list event - beacon-APIs eventstream/index.yaml

Block Production

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions