Skip to content

Conversation

@larrysalibra
Copy link
Contributor

This PR adds a SIP that:

  • enables the use of bitcoin native segwit (P2WPKH) & bitcoin legacy (P2PKH) addresses for sending and receiving sBTC and other Stacks assets in wallets and applications
  • defines the mechanism of converting between the supported bitcoin address types and Stacks addresses
  • describes application and wallet treatment of addresses
  • proposes a BIP-21 mechanism to reduce the change of accidental sending of Stacks assets to wallets that do not support Stacks
  • describes potential future work to fully enable bitcoin address support at all layers of the Stacks ecosystem


## **Introduction**

sBTC is designed to make Bitcoin programmable and enable faster transactions, positioning it as a significant component in the growth of decentralized finance and payments on Bitcoin. However, the current Stacks-specific address format presents a barrier to adoption for existing Bitcoin users, who are accustomed to Bitcoin's native address formats. Building wallets to handle both stacks addresses and bitcoin addresses currently requires duplication of user interface components and send/receive user flows. The resulting user interfaces can lead to confusion and a less intuitive user experience. Other Layer 2 solutions have faced similar UX challenges. The core problem this SIP addresses is the user experience friction caused by requiring Bitcoin users to use a non-Bitcoin address format when interacting with sBTC.
Copy link
Contributor

Choose a reason for hiding this comment

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

Formatting: please use consistent capitalization ("bitcoin," "stacks")


sBTC is designed to make Bitcoin programmable and enable faster transactions, positioning it as a significant component in the growth of decentralized finance and payments on Bitcoin. However, the current Stacks-specific address format presents a barrier to adoption for existing Bitcoin users, who are accustomed to Bitcoin's native address formats. Building wallets to handle both stacks addresses and bitcoin addresses currently requires duplication of user interface components and send/receive user flows. The resulting user interfaces can lead to confusion and a less intuitive user experience. Other Layer 2 solutions have faced similar UX challenges. The core problem this SIP addresses is the user experience friction caused by requiring Bitcoin users to use a non-Bitcoin address format when interacting with sBTC.

**The proposal is to enable the use of standard Bitcoin addresses (legacy P2PKH and native SegWit P2WPKH) for sending and receiving sBTC and other Stacks-based assets.** This would allow sBTC to look and function more like Bitcoin from a user's perspective, leveraging existing user familiarity and tools, such as bitcoin payment QR codes and payment flows. The goal is to make interacting with sBTC as seamless as interacting with Bitcoin on the base layer, thereby encouraging broader adoption.
Copy link
Contributor

Choose a reason for hiding this comment

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

If Stacks represented its addresses as Bitcoin addresses, wouldn't it be more likely that a user accidentally sends some BTC to a Stacks recipient? I think the counterargument to keeping the status quo is that Stacks has a different address encoding alphabet in order to make this a lot less likely. You can tell on inspection that a Stacks address is not a Bitcoin address (and vice versa), because Bitcoin addresses don't start with S and use base58 instead of Crockford-32.


This SIP will be considered activated once the following conditions are met:

1. **Updated Libraries**: Key Stacks developer libraries (e.g., Stacks.js or its successors) are updated to:
Copy link
Contributor

Choose a reason for hiding this comment

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

We should probably commit to a list of these, so there can be a checklist for activation.

* Accept P2PKH and P2WPKH Bitcoin addresses as input for transaction recipients.
* Provide utility functions to convert Stacks addresses to P2WPKH Bitcoin addresses for display purposes.
* Provide utility functions to resolve P2PKH/P2WPKH Bitcoin addresses back to Stacks addresses.
2. **Wallet Adoption**: At least two major Stacks wallets have implemented support for:
Copy link
Contributor

Choose a reason for hiding this comment

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

Can you specify the set from which these two are drawn?

* Displaying user account addresses in P2WPKH Bitcoin format.
* Allowing users to send sBTC (and other Stacks assets) to P2PKH and P2WPKH Bitcoin addresses.
* Implementing a warning mechanism (as described in the Specification section or similar) when sending sBTC to a Bitcoin address if sBTC support by the recipient cannot be confirmed.
3. **Explorer Adoption**: At least one major Stacks block explorer is updated to:
Copy link
Contributor

Choose a reason for hiding this comment

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

Is there more than one "major" Stacks block explorer besides the one Hiro runs? Also, can the set of "major" explorers be enumerated?

3. **Explorer Adoption**: At least one major Stacks block explorer is updated to:
* Allow searching by P2PKH/P2WPKH Bitcoin addresses.
* Display account information using the P2WPKH Bitcoin address format as an option.
4. **Community Endorsement**: The proposal receives positive feedback and endorsement from the Stacks developer community and key stakeholders, indicated by discussion on the Stacks forum and other relevant channels.
Copy link
Contributor

Choose a reason for hiding this comment

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

How might we measure this?

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.

2 participants