-
Notifications
You must be signed in to change notification settings - Fork 0
CelestiaAppFetcher: ingest from celestia-app (consensus node) #28
Copy link
Copy link
Closed
Description
Summary
Implement CelestiaAppFetcher satisfying the DataFetcher interface. Connects to a celestia-app (consensus/full) node via CometBFT RPC or gRPC instead of a celestia-node (light/bridge).
Motivation
Enables indexing without running a DA node — useful for operators already running validators or full nodes. Removes the hard dependency on celestia-node for data ingestion.
Approach
- Query blocks via
/block+/block_results, extract blobs from block data - Header subscription via CometBFT WebSocket
/subscribe - Evaluate whether to use CometBFT RPC (HTTP) or gRPC (cosmos-sdk dependency tradeoff — may need the
submit/submodule pattern from Isolate cosmos-sdk dependency in a separate Go submodule #24)
Interface
Must satisfy DataFetcher:
GetHeader(ctx, height) (*Header, error)GetBlobs(ctx, height, namespaces) ([]Blob, error)GetNetworkHead(ctx) (*Header, error)SubscribeHeaders(ctx) (<-chan *Header, error)Close() error
Open Questions
- CometBFT RPC (zero cosmos-sdk deps, HTTP only) vs gRPC (richer API, pulls cosmos-sdk)?
- If gRPC, isolate in a submodule per Isolate cosmos-sdk dependency in a separate Go submodule #24?
- Blob extraction: parse from block transactions (MsgPayForBlobs) or use a dedicated endpoint?
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels