LogoLogo
back to urani.trade
  • Welcome
  • URANI App
    • The Urani App
    • MEV Projects
  • URANI SWAP
    • Swap tl; dr
    • Technicals
      • MEV tl; dr
      • Urani's Intents
      • Intent Transaction Flow
      • Batch Auctions
      • Urani's Intent Specs
      • Order Types
  • URANI PROTOCOL
    • Protocol tl; dr
    • Technicals
      • Optimization Problems
      • Raking the Agents' Solution
      • Batch Auction Specs
      • Ring (DAG) Trades
      • Order Execution
      • Multidimensional Price Free Market
        • On Solana
          • Solana Fees Overview
          • Solana Transactions Overview
          • Understanding Slippage
        • Urani's Dynamic Fees
      • Oracle Market Data Proxy
      • Security Considerations
      • Intent Gossip Layer Specs
      • Settlement Specs
  • URANI ARENA
    • Arena tl; dr
    • Technicals
      • The PvP Competition
      • Incentives for Operators
      • Reputation Dashboard
      • The Competition Seasons
  • MEV AGENTS
    • Agents tl; dr
    • Technicals
      • Urani's In-house Agents
        • MEV Agent Aleph
        • MEV Agent Bet
      • The Onboarding Process
      • Economic Incentives
      • MEV Agent Specs
      • Setting up an Agent's Graph
      • Building an initial AMM Strategy
      • Liquidity Strategies
        • On Solana
          • Raydium
          • Phoenix
          • Orca
          • Meteora
          • Jupiter
      • Performance and Reputation
      • Solving Cryptomarkets
        • Quantitative Theories and AI-Centric Agents
        • DeFi Glossary
        • In Honor of Jim Simons (1938-2024)
Powered by GitBook
  1. URANI SWAP
  2. Technicals

Intent Transaction Flow

PreviousUrani's IntentsNextBatch Auctions

Last updated 8 months ago

In the context of the Urani protocol, the intent transaction flow refers to the structured process by which user-initiated transactions are prepared, submitted, and eventually fulfilled.


Intents on Solana


Durable Nonce

A durable nonce is a mechanism in Solana that ensures a transaction remains valid even if it is processed later.

Transactions typically rely on a recent block hash to prevent double spending and ensure timely processing. However, a durable nonce replaces the blockhash for transactions that must remain valid for an extended period.

This nonce is a value stored in a dedicated account, and it gets updated each time the nonce is used in a transaction.


PDAs

Program-derived Addresses (PDAs) are a fundamental component of Solana's architecture. They allow programs to generate addresses deterministically based on specific inputs, ensuring consistent and predictable account addresses without managing private keys. PDAs are particularly useful for creating accounts tied to a program's logic.

Urani leverages PDAs to store intent data in a Solana-native data structure. Additionally, the Urani Protocol needs to call other programs to find the best match and fulfill the transaction. PDAs are essential to such CPIs (Cross-Program Invocations).

Using PDAs, the Urani protocol can effectively manage the data and the flow to accommodate the protocol's needs.


Signatures

After the transaction is crafted with the necessary data and with both the nonce and PDA added, we need to add the signatures so the funds can be moved appropriately.

In Urani's context, the Nonce Authority signs for the transaction behind the scenes, but we also need to ask for the user's signature with their wallet to allow for the transaction to be completed.

The user gets a popup being asked to sign for the signature. Once the signature is approved, we can submit this transaction to the protocol.


Protocol Submission

To summarize, here is what happens when the user submits an intent, selecting the tokens and the respective amounts:

  1. Crafting the transaction: Combining all necessary components, including durable nonces and PDAs, to form a valid transaction.

  2. Signing the transaction: Ensuring the transaction is properly signed by the necessary parties (especially the user).

  3. Submitting the transaction: Sending the signed transaction to the Urani for batching, matching, and fulfillment.

A high-level overview of how a limit order is processed within Urani's intent paradigm.