Skip to content

feat: BCUR2 wallet registration and address confirmation#468

Open
cc-unchained wants to merge 3 commits intocaravan-bitcoin:mainfrom
cc-unchained:feat/bcur2-compat
Open

feat: BCUR2 wallet registration and address confirmation#468
cc-unchained wants to merge 3 commits intocaravan-bitcoin:mainfrom
cc-unchained:feat/bcur2-compat

Conversation

@cc-unchained
Copy link
Contributor

What kind of change does this PR introduce?

New feature to enable users to register wallets by scanning BCUR2-compatible QR codes and extends the QR code features to address confirmation flows.

Issue Number:

N/A

Snapshots/Videos:

If relevant, did you update the documentation?

Summary

This MR introduces BCUR2 support for wallet registration and address confirmation functionality. Below is the summary of the changes:

  1. Enhanced BCUR2Encoder Component:
    • Added new prop instructions to allow customization of user instructions displayed with the QR codes in BCUR2Encoder.tsx.
    • Made default instructions part of the props for flexibility.
  2. New RegisterBCUR2Button Component:
    • Added a new button for registering wallets via the BCUR2 protocol (RegisterWallet/RegisterBCUR2Button.tsx).
    • Implements interaction with the newly added BCUR2Encoder.
  3. Integration of BCUR2 into Wallet Registration and Address Confirmation:
    • Updated Wallet/RegisterWallet.jsx to include the new RegisterBCUR2Button.
    • Incorporated BCUR2Encoder for address confirmation based on QR codes in Slices/ConfirmAddress.jsx.
  4. Enhancements to RegisterWallet Module:
    • Included the BCUR2 button within RegisterWallet/index.jsx.

Does this PR introduce a breaking change?
No.

Checklist

  • I have tested my changes thoroughly.
  • I have added or updated tests to cover my changes (if applicable).
  • I have verified that test coverage meets or exceeds 95% (if applicable).
  • I have run the test suite locally, and all tests pass.
  • I have written tests for all new changes/features
  • I have followed the project's coding style and conventions.
  • I have created a changeset to document my changes (npm run changeset)

Other information

Have you read the contributing guide?

For information on creating and using changesets, please refer to our documentation on changesets.

@changeset-bot
Copy link

changeset-bot bot commented Feb 6, 2026

🦋 Changeset detected

Latest commit: c4b7afa

The changes in this PR will be included in the next version bump.

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel
Copy link

vercel bot commented Feb 6, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
caravan-coordinator Ready Ready Preview, Comment Feb 21, 2026 6:41am

Request Review

@bucko13
Copy link
Contributor

bucko13 commented Feb 10, 2026

Confirmed address verification menu includes BCUR2
Screenshot 2026-02-10 at 4 40 25 PM

Style nit here: I think we could center this a bit
Screenshot 2026-02-10 at 4 40 35 PM

Missing:

  • The test suite should include registration (i think the suite has them as wallet policy verification) and address verification for bcur2
  • Address verification should have a wallet verification step as well so that a device like seed signer especially won't have to exit out of the flow and find the verification. this can be done as multi-steps in the modal or with tabs that can be switched through.

Copy link
Contributor

@bucko13 bucko13 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Couple additional comments but thanks for putting this together!


export const getColdcardConfig = (walletConfig: MultisigWalletConfig) => {
const interaction = ConfigAdapter({
KEYSTORE: COLDCARD,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to keep the code easier to follow, i think it would be good to adapt (pun somewhat intended?) caravan-wallets to accept BCUR2 as the keystore for this as well and return the same thing. Two different keystores can have the same interaction under the hood, but adding that makes it easier to connect menus for example and just select the keystore enum with the interactions without having to convert

@jbrauck-unchained
Copy link
Contributor

Wow this worked so slick on my passport my goodness
ACCEPTANCE TESTED!

Copy link
Contributor

@bucko13 bucko13 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code looks good! Just going to run through some acceptance testing and I think we can merge in.

Copy link
Contributor

@bucko13 bucko13 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code looks good. Test suite looks good. Tested the registration first before the address which works. One last UX nit is that I think the confirm address modal should show the address on screen in the modal. Currently you have to close the modal before you actually verify.

Image

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.

3 participants