Introducing Stacks Pay: A Proposed Payment Request Standard for the Stacks Blockchain

Dear Stacks Community,

I am excited to announce the proposal of a new Stacks Improvement Proposal (SIP) titled Stacks Pay: A Payment Request Standard for Stacks Blockchain Payments. This proposed standard aims to enhance the way we interact with payments within the Stacks ecosystem by introducing a unified method for encoding, decoding, and processing payment requests.

TLDR: Stacks Pay is a proposed standard for wrapping stacks transaction information that allows easy sharing via links or QR codes.

Why Propose Stacks Pay?

As the Stacks ecosystem continues to grow and evolve, the need for standardized protocols becomes increasingly important. Currently, the lack of a unified payment request standard forces developers to create custom solutions, which can lead to fragmentation and inconsistent user experiences. Stacks Pay addresses this gap by:

  • Simplifying Payment Interactions: Provides a straightforward way to send and receive payments, making it easier for users and developers alike.
  • Enhancing Interoperability: Establishes a common language for wallets and applications, ensuring seamless interactions across the ecosystem.
  • Increasing Security: Offers mechanisms to securely tie transactions back to payment requests, reducing the risk of errors and fraudulent activities.

How Stacks Pay Adds Value to the Community

By adopting Stacks Pay, we can unlock several benefits for the Stacks community:

  • Streamlined User Experience: Users will enjoy a more intuitive and consistent payment process across different platforms and services.
  • Developer Efficiency: Developers can focus on building innovative features rather than reinventing payment request methods, accelerating development cycles.
  • Ecosystem Growth: A standard payment protocol can attract more merchants and service providers to the Stacks network, fostering economic growth and adoption.
  • Enhanced Functionality: Supports various operations like invoices, donations, and NFT minting, offering flexibility to cater to diverse use cases.

Call to Action

We invite all members of the Stacks community—developers, wallet providers, merchants, and users—to review the Stacks Pay standard proposal. Your feedback is invaluable in refining the proposal and ensuring it meets the needs of our diverse ecosystem.

The proposal can be found here: Stacks Pay SIP on GitHub

Please take a moment to read through the proposal and share your comments, suggestions, or concerns. Together, we can collaboratively shape the future of payments on the Stacks blockchain.

Thank you for your continued support and contributions to the Stacks community.

Best regards,

Dan Trevino
Founder, Boom Platforms

6 Likes

Hi Dan,

Great work on the SIP and reference implementations. Leather fully supports all standardization efforts👏🏼

I’ll leave some questions and feedback on your PR directly, but I’m curious how Web Extensions specifically can interact with this SIP?

As far as I understand, only desktop wallets & apps can leverage deep linking such that they’ll open automatically when a user clicks a Stacks Pay link.

So, I wonder if this SIP should also define a SIP-30-style RPC request. Something along the lines of:

await LeatherProvider.request('stx_stacksPay', params)

Where params is either the encoded URI scheme, or the objects InvoiceOperation, SupportOperation and MintOperation as defined in your ts lib.

What other ways might an app or user initiate a Stacks Pay request from extensions?

Thanks again, feedback incoming on PR shortly

2 Likes

To be honest I’m not sure how web extensions can register a desktop protocol handler… would navigator.registerProtocolHandler work? That’s what we’re using in the Boom mobile PWA.

if (window.registerProtocolHandler) {
  navigator.registerProtocolHandler(
    'web+stx', // protocol
    '/stxpay?url=%s', // handler must include %s
    'Boom Wallet', // friendly identifier
  )
}

in package.json:

  "protocol_handlers": [
    {
      "protocol": "web+stx",
      "url": "/stxpay?url=%s"
    }
  ],
1 Like