Add celestia (Celestia DA JSON-RPC) - #894
Open
l0gun0v wants to merge 2 commits into
Open
Conversation
added 2 commits
September 1, 2026 22:56
- bump emerald-grpc (CHAIN_CELESTIA__MAINNET=1175, CHAIN_CELESTIA__MOCHA=10209) and chains.yaml - codegen type map: celestia served via nodecore, suppressed to ETHEREUM like aptos/stellar
- BlockchainType.CELESTIA + codegen mapping (was suppressed to ETHEREUM) - CelestiaChainSpecific: head via header.LocalHead polling (CometBFT: height is a decimal string, commits are final, no ws subscriptions - go-jsonrpc channels) - DefaultCelestiaMethods: the 31-method read-only DA surface - chain-id validation via header.chain_id (empty/mismatch is fatal) - BLOCK lower bound via header.Tail (archive bridge reports 1)
This was referenced Sep 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds native support for the Celestia DA chain (celestia-node JSON-RPC API):
celestia(mainnet) andcelestia-mocha.Why native and not suppressed-to-ETHEREUM
The aptos/stellar-style
"celestia" -> BlockchainType.ETHEREUMsuppression is not enough for a JSON-RPC chain served through nodecore: the ETHEREUM method allowlist rejects everyheader.*/blob.*call with -32601, and the generic head poll callseth_getBlockByNumberwhich the DA node does not serve. So celestia follows the aztec pattern: its own BlockchainType, methods and ChainSpecific.Changes
foundation BlockchainType.kt:CELESTIA(ApiType.JSON_RPC); codegen mapstype: celestiato it (submodules bumped to the revisions carrying celestia 1175/10209)upstream/celestia/CelestiaChainSpecific.kt: head viaheader.LocalHeadpolling (CometBFT encoding: height is a decimal string, hashes bare hex; commits are final). WS explicitly unsupported — celestia-node subscriptions use the go-jsonrpc channel protocol (xrpc.ch.val), not JSON-RPC subscriptionsupstream/celestia/CelestiaLowerBoundBlockDetector.kt: BLOCK lower bound viaheader.Tail(the node reports its DA pruning window directly; archive bridge reports 1); cached-bound retention on errors, aztec patterncalls/DefaultCelestiaMethods.kt: the 31-method read-only DA surface (header.*,blob.Get*,share.*,das.*,blobstream.*, read-onlystate.*,node.Ready); write/admin methods excluded — they spend or expose the node's own walletnode.Readyhealth; chain-id viaheader.LocalHead → header.chain_id(empty/mismatch is fatal)ChainSpecificRegistry,CallTargetsHolderTesting
compileKotlin/compileTestKotlingreen; chainscodegen emitsCELESTIA__MAINNET(1_175, …, BlockchainType.CELESTIA)dshackle (proxy) → nodecore → QuickNode DA endpoint:header.NetworkHeadreturns live mainnet headers,blob.GetAllpasses through,blob.Submitrejected with -32601, the head is tracked natively (State of CELESTIA_MAINNET: height=…, status=[OK/1], lag=[0])Note
Mocha is migrating
mocha-4→mocha-5(the live testnet already reportsmocha-5; current celestia-node releases cannot join mocha-4 at all). The chain-id fix is a companion PR in drpcorg/public and reaches dshackle with the next routine submodule bump.Companion PRs: https://github.com/drpcorg/dproxy/pull/2829, drpcorg/nodecore#326, drpcorg/emerald-grpc#168 (merged), drpcorg/public#246 (merged)