Skip to content

Stateless client: failed to fetch light block due to missing signed header #6532

@martintomazic

Description

@martintomazic

Follows #6527.

Problem

Using stateless client node, I run raw sgx rofl on the testnet and encountered the following issue:

{"err":"verification: StringTracer: io error: rpc error: server error: module: unknown code: 1 message: failed to fetch light block for height: 32140178: missing signed header","level":"error","module":"runtime/consensus/cometbft/verifier","msg":"Consensus verifier terminated, aborting","ts":"2026-05-18T22:30:08.489972817Z"}

^^ happens for the ronl component, at the tip of the chain repeatedly.

Possible solution

Stateless client is receiving notification about new blocks from its provider, triggering RHP consensus sync. Then the runtime enclave fetches light block using verifier io, that fetches this block via host from the remote peer, that doesn't have this block available.

On the remote peer light block may not be available due to the following reasons:

  1. Remote peer hasn't received light block yet it only has validator set available for the given height (future height).
  2. Light block is already available (i.e. commit is already part of the blockstore), however mux is still processing, so we treat it as a future height/locally not available (probably a bug, can be improved).

See code: https://github.com/oasisprotocol/oasis-core/blob/b6a87ba24f370845617840a085557ca3c7fd354c/go/consensus/cometbft/full/common.go#L610:L632

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions