<aside> ⚠️ This spec is out of date

Please see: https://warpcast.notion.site/Frame-Transactions-Public-Draft-v2-9d9f9f4f527249519a41bd8d16165f73?pvs=4

</aside>

Goals


  1. Allow frames to trigger onchain transactions from Farcaster apps.
  2. Minimize risk to users from malicious frames

Proposal


At a high level:

  1. Frame buttons have a tx action type which can trigger a transaction.
  2. Frame buttons of type tx point to a URL which returns the transaction data.
  3. Farcaster apps can validate the domain for safety and fetch the transaction data.
  4. Farcaster apps can then pass the transaction data over to a wallet to execute.
  5. If the transaction succeeds, user is returned to the app and a POST call is made to the frame server with a transaction ID.

An important feature of this design is that the button does not contain the transaction data itself. Consider an example where alice wants to build a frame to rent Farcaster storage. She would create a button like this: