Skip to content

Add ELIP: Liquid Wallet RPC Profile - #36

Open
KyrylR wants to merge 8 commits into
ElementsProject:mainfrom
KyrylR:feature/liquid-wallet-rpc-profile
Open

Add ELIP: Liquid Wallet RPC Profile#36
KyrylR wants to merge 8 commits into
ElementsProject:mainfrom
KyrylR:feature/liquid-wallet-rpc-profile

Conversation

@KyrylR

@KyrylR KyrylR commented Jun 1, 2026

Copy link
Copy Markdown

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.

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 -->
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