Skip to content

Comments

feat: add xrp support#727

Draft
yilmazbahadir wants to merge 3 commits intobaha/feat/asset-modulesfrom
baha/feat/add-xrp-support
Draft

feat: add xrp support#727
yilmazbahadir wants to merge 3 commits intobaha/feat/asset-modulesfrom
baha/feat/add-xrp-support

Conversation

@yilmazbahadir
Copy link
Collaborator

@yilmazbahadir yilmazbahadir commented Feb 23, 2026

Do not merge! this will be rebased onto dev after #726 is merged.

📝 Summary

Adds first-party XRP support to gridplus-sdk using the new chain plugin architecture, including runtime registration, SDK helper APIs, protocol/constants updates, docs, and XRP e2e coverage.
Also includes follow-up lint/typecheck fixes for XRP e2e tests.

🔧 Context / Implementation

  • Added new chain package: @gridplus/xrp
    • packages/chains/xrp/src/chain.ts
    • packages/chains/xrp/src/devices/lattice.ts
    • packages/chains/xrp/src/index.ts
  • Registered XRP as a built-in default chain plugin in SDK:
    • packages/sdk/src/chains/defaultManifest.ts
  • Added public SDK XRP APIs:
    • fetchXrpAddresses(...) in packages/sdk/src/api/addresses.ts
    • signXrp(...) in packages/sdk/src/api/signing.ts
  • Added protocol and constant support required for XRP generic signing:
    • SHA512HALF hash support
    • XRP encoding support
    • XRP derivation/coin constants
    • updates in packages/types/* and packages/sdk/src/constants.ts
  • Updated docs for XRP usage and chain modules:
    • packages/docs/docs/addresses.md
    • packages/docs/docs/signing.md
    • packages/docs/docs/intro.md
    • packages/docs/docs/chain-modules.md
  • Added/updated tests:
    • XRP e2e signing tests
    • default chain manifest test coverage
    • follow-up lint/type fixes in e2e test files

🧪 Test Plan

  1. pnpm lint
  2. pnpm typecheck
  3. pnpm --filter gridplus-sdk run test-unit
  4. pnpm --filter gridplus-sdk run e2e-sign-xrp (with simulator and test firmware capabilities)

Expected result:

  • Lint/typecheck/unit tests pass.
  • XRP appears in default chain plugins.
  • fetchXrpAddresses and signXrp work through SDK helper APIs.
  • XRP e2e signing passes on supported simulator/firmware capability set.

🖼️ Screenshots (if applicable)

Before After
XRP not supported as a first-party chain in SDK XRP supported via built-in chain plugin + helper APIs and e2e coverage

- add new @gridplus/xrp chain package (module, lattice signer plugin, shared helpers)
- register xrp:lattice in SDK default chain manifest
- add public SDK helpers: fetchXrpAddresses() and signXrp()
- extend protocol/constants/types with SHA512HALF + XRP encoding support
- gate XRP generic-signing capabilities by firmware version (>= 0.18.10)
- allow XRP coin type in derivation path validation and add XRP derivation constant
- add XRP e2e signing coverage and default manifest unit assertion
- update docs/sidebar/architecture docs for XRP and chain-modules page
- update workspace scripts/deps and pnpm lockfile for @gridplus/xrp
- replace `catch (err: any)` with `unknown` handling in general e2e tests
- format xrp e2e vector literals and xrp signer queue call for biome
- type xrp capability maps as `Record<string, unknown>` to satisfy typecheck
Move compressSecp256k1Pubkey to one xrp shared module and re-export from chain/devices.

Replace repeated XRP e2e timeout literals with constants and localize one-off test client setup.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant