What would you like to work on?
Add CIP-186 (cardano-foundation/CIPs#1189) deep-link signing to Lace Mobile — a cip30dl-lace: URL-scheme + https App-Link receiver that lets an external mobile browser or native dApp request a CIP-30 operation (signTx / signData) and receive an encrypted, signature-bound response, reusing Lace's existing signer and consent UI. No relay server, no WebSocket, no QR.
Why does this matter?
Lace Mobile's dApp connection today only works for dApps opened inside Lace's in-app WebView (Lace is the browser). There's no path for an external mobile browser or a native dApp to hand a transaction to Lace for signing. CIP-186 fills that gap — and is a lighter, relay-free complement to the WalletConnect path the README lists as planned. dApps integrate once and reach every deep-link wallet; users get one-tap signing from any mobile dApp.
Scope and approach
We've mapped it against the current tree; the lift is small because it reuses what's already there:
- A new module (≈ the
cardano-uri-linking shape) for the URL intake + the NaCl-box envelope; register cip30dl-lace in apps/lace-mobile/app.json (Expo prebuild generates the Info.plist / AndroidManifest entries).
- Signing reused verbatim —
signerFactory.createTransactionSigner(ctx).sign(...) → witness set, the same call the mobile WebView bridge already makes.
- Consent reused verbatim —
SignTxView / AuthorizeDappSheet + @lace-contract/authentication-prompt (password / biometric).
- Crypto — NaCl box via
libsodium-wrappers-sumo (already a transitive dep via @cardano-sdk/crypto); HKDF via @noble/hashes (already used in packages/lib/crypto).
Net: one new module + an app.json edit; no changes to signing, key management, or consent UX.
Design points we'd want your input on before starting:
- App-Link domain ownership /
apple-app-site-association + assetlinks.json hosting.
- Feature-flag gating (matching the
CARDANO_URI_LINKING pattern).
- A sibling deep-link module vs. extending
cardano-uri-linking.
Relevant background
Happy to build a PoC on a Lace fork to demonstrate the round-trip before any integration work, and to do the substantive integration under a CLA against your internal source of truth.
How would you like to engage?
Not sure yet. Let's discuss. Happy to let you shape scope.
Preferred contact for follow-up
@realdecimalist
What would you like to work on?
Add CIP-186 (cardano-foundation/CIPs#1189) deep-link signing to Lace Mobile — a
cip30dl-lace:URL-scheme + https App-Link receiver that lets an external mobile browser or native dApp request a CIP-30 operation (signTx/signData) and receive an encrypted, signature-bound response, reusing Lace's existing signer and consent UI. No relay server, no WebSocket, no QR.Why does this matter?
Lace Mobile's dApp connection today only works for dApps opened inside Lace's in-app WebView (Lace is the browser). There's no path for an external mobile browser or a native dApp to hand a transaction to Lace for signing. CIP-186 fills that gap — and is a lighter, relay-free complement to the WalletConnect path the README lists as planned. dApps integrate once and reach every deep-link wallet; users get one-tap signing from any mobile dApp.
Scope and approach
We've mapped it against the current tree; the lift is small because it reuses what's already there:
cardano-uri-linkingshape) for the URL intake + the NaCl-box envelope; registercip30dl-laceinapps/lace-mobile/app.json(Expo prebuild generates theInfo.plist/AndroidManifestentries).signerFactory.createTransactionSigner(ctx).sign(...)→ witness set, the same call the mobile WebView bridge already makes.SignTxView/AuthorizeDappSheet+@lace-contract/authentication-prompt(password / biometric).libsodium-wrappers-sumo(already a transitive dep via@cardano-sdk/crypto); HKDF via@noble/hashes(already used inpackages/lib/crypto).Net: one new module + an
app.jsonedit; no changes to signing, key management, or consent UX.Design points we'd want your input on before starting:
apple-app-site-association+assetlinks.jsonhosting.CARDANO_URI_LINKINGpattern).cardano-uri-linking.Relevant background
new DeepLinkClient({ wallet: "lace" }).Happy to build a PoC on a Lace fork to demonstrate the round-trip before any integration work, and to do the substantive integration under a CLA against your internal source of truth.
How would you like to engage?
Not sure yet. Let's discuss. Happy to let you shape scope.
Preferred contact for follow-up
@realdecimalist