feat: Ripple family support (ripple, ripple-testnet)#284
Open
artemrootman wants to merge 4 commits into
Open
Conversation
- ripple_specific: validated-ledger head (deliberately not dshackle's
ledger_closed - closed may be unvalidated; validated is XRPL finality and
carries parent_hash), poll-only (XRPL subscriptions are WS-command-framed,
out of v1 scope).
- ripple_validations: network-id chain validation (absent field = mainnet/0)
and server_state health with a corrected mapping vs dshackle
(full/validating/proposing/tracking available, connected/syncing syncing,
amendment_blocked hard-down) + same-payload peer check.
- ripple_labels: clio_version -> clio, else build_version -> rippled.
- ripple_bounds: real complete_ledgers parsing (single/disjoint/empty; start
of the last range) instead of dshackle's hardcoded STATE=1; opts into the
new DecreasingBoundDetector capability - archival backfill legally moves
the bound DOWN, the shared processor's monotonic filter now honors that
opt-in only.
- flow: per-spec wildcard translator lookup + rippleErrorNormalizer - XRPL
errors arrive as HTTP 200 {result:{status:error}}; node-health codes
(noNetwork/noCurrent/noClosed/tooBusy/amendmentBlocked/notReady/
failedToForward) become retryable errors so failover engages, everything
else passes through byte-exact for xrpl.js wire parity.
- ripple method spec: 38-method surface (dshackle minus subscribe/
unsubscribe), submit/submit_multisigned broadcast, cacheable:false v1.
- registry: Ripple BlockchainType + factory case + method-spec name.
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.
What
Adds the Ripple / XRP Ledger blockchain family (
BlockchainType = "ripple"), covering mainnet and testnet. Not to be confused with thexrplchain (the XRPL EVM sidechain, already served by the EVM family).Design doc:
docs/superpowers/specs/2026-07-17-ripple-support-design.md.Stacked on #283 (near family); will retarget to main once it merges.
How
ripple_specific: poll-based validated-ledger head (deliberately notledger_closed, which can return a not-yet-validated ledger; validated is XRPL finality and carriesparent_hash). Poll-only — XRPL subscriptions are WS-command-framed, out of v1 scope.{result:{status:"error"}}and clients (xrpl.js) expect that wire shape. A per-spec wildcard translator converts only node-health codes (noNetwork,noCurrent,noClosed,tooBusy,amendmentBlocked,notReady,failedToForward) into retryable errors so failover engages; everything else passes through byte-exact.ripple_validations: network-id chain validation (the field is absent on mainnet = 0) andserver_statehealth with a corrected state ladder (full/validating/proposing/trackingavailable,connected/syncingsyncing,amendment_blockedhard-down).ripple_bounds: realcomplete_ledgersparsing (single/disjoint/"empty"; start of the last range). Introduces theDecreasingBoundDetectorcapability: an archival rippled backfills history backwards, so its lower bound legally decreases — the shared processor's monotonic filter now honors that opt-in (only ripple opts in; other families unchanged).ripple_labels:clio_version→ clio, elsebuild_version→ rippled.subscribe/unsubscribe— over public HTTP those are an admin-only callback mode),submit/submit_multisignedbroadcast (idempotent by tx hash + account sequence), allcacheable: falsein v1.Testing
resultobjects for all deterministic cases including error passthroughs and theledger_datapagination marker. Details in the design doc.