Add ELIP: Liquid Wallet RPC Profile - #36
Open
KyrylR wants to merge 8 commits into
Open
Conversation
tvolk131
added a commit
to Resolvr-io/apogee
that referenced
this pull request
Jul 28, 2026
## Summary - define transport-neutral TypeScript request, result, and event types for the ten methods proposed in [ElementsProject/ELIPs#36](ElementsProject/ELIPs#36), pinned to draft revision `d5b713cbbad5a13f15baa35073e8dda53886f0b0` - add the proposed injected `LiquidProvider` contract: provider-owned JSON-RPC IDs, typed `request({ method, params })`, and `on({ event, listener })` returning an unsubscribe function - add structured RPC errors and dependency-free runtime validation that rebuilds trusted request objects from untrusted page input - model ELIP-0144 identifiers, descriptor result variants, message-signing variants, PSET constraints, and the provisional wallet ABI boundary ## Why This establishes a reviewable type and validation boundary before wiring the draft API into `window.liquid`. It intentionally leaves the existing provider and runtime behavior unchanged. ## Impact No new wallet methods are exposed yet and there are no user-visible behavior changes. Follow-up PRs can build the injection transport, router, and handlers against this contract. ## Validation - TypeScript: `tsconfig.json` - TypeScript: `tsconfig.node.json` - Vitest: 10 files, 159 tests (including the existing live SideSwap integration tests) - `git diff --check` <!-- codesmith:footer --> --- <a href="https://app.blacksmith.sh/Resolvr-io/codesmith/apogee/pr/63"><picture><source media="(prefers-color-scheme: dark)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"><source media="(prefers-color-scheme: light)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-light-v2.svg"><img alt="View with [code]smith" src="https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v2.svg"></picture></a> <a href="https://backend.blacksmith.sh/track/enable-autofix?expires=1787863915&installation_model_id=20418&pr_number=63&repository=Resolvr-io%2Fapogee&return_to=https%3A%2F%2Fgithub.com%2FResolvr-io%2Fapogee%2Fpull%2F63&signature=c7aa81156c2fedfaee37764bc988c4ca44b41b7d1fce665feba47f1012c40376"><picture><source media="(prefers-color-scheme: dark)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-light.svg"><img alt="Autofix with [code]smith" src="https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark.svg"></picture></a> <sup>Need help on this PR? Tag <code>@codesmith-bot</code> with what you need. Autofix is disabled.</sup> <!-- codesmith:autofix:disabled --> <!-- /codesmith:footer -->
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.
This ELIP defines a Liquid wallet JSON-RPC profile for the wallet SDKs and other dapp-to-wallet transports.
It specifies how a dapp identifies a connected Liquid account, requests public wallet descriptors, reads wallet-computed
balances and UTXOs, requests transfers, requests PSET signatures, signs messages, uses deterministic identity keys,
delegates complex confidential transaction construction to the Wallet ABI transaction protocol, and receives descriptor-change events.
Bitcoin integrations can use public addresses and PSBTs as their main wallet-facing primitives.
Liquid wallets require a more explicit profile because Liquid has confidential transactions, multiple issued assets,
network-specific policy assets, CT descriptors, blinding keys, PSETs, and Simplicity.
Dapps need enough public wallet information to identify the connected account, construct descriptor-aware receive
and change logic, read user-approved balances and UTXOs, and build valid PSET signing requests. At the same time,
wallets must not leak view material merely to support these flows. This ELIP separates public descriptor disclosure
from wallet-computed balance and UTXO disclosure, and it defines a descriptor-format negotiation mechanism
based on descriptor representations.