sRFC 25: Solana Actions v1

v1 of the Solana Actions API specification is identical to the Solana Pay transaction request specification, with one key differentiator. Instead of the solana: URI scheme, solana-action: is used to provide an opportunity for clients to treat Actions differently that existing payments schemes related to Solana Pay.

  • In part, this is due to a common failure case related to QR codes on iOS devices. The use of solana: was ambiguously used by various applications that lacked support for Solana Pay, resulting in native camera scans prompting the opening of apps with no action item. As a result, on iOS devices, the oldest installed application that has registered this URI scheme will handle the Action by default, and we expect a higher success rate since the use of solana-action: is much more deliberate.
    • This does not affect Android as the OS lets the user select the app that would handle that URI scheme.
    • The use of Universal Links was dismissed as this targets a specific URL and application, with no opportunity for other apps to equivalently serve that request.
    • solana: can be used as a fallback scheme; Actions-aware clients will support both schemes
  • Similarly, wallets like Phantom / Solflare / Backpack / TipLink made assumptions that URIs of this form would strictly be payments-related, and the resultant UX flow might be confusing for generalized use-cases unrelated to payments.

The use of APIs in conjunction with Solana programs provides the ability to express rich combinations of offchain / onchain business logic, reducing time to market and the use of the right technology for any given purpose.

Rationale

Solana Actions builds on the power of Solana Pay transaction request, but with an explicit reframing of the premise to encompass use-cases well-beyond payments. “Solana Actions” captures the wide-swath of diverse products built on the Solana blockchain, including (but not limited to) governance, games, and digital assets.

2 Likes