LogoLogo
ston.fi/docs
ston.fi/docs
  • User section
    • About
    • STON.fi Protocol
    • Fees
    • Glossary
    • Procedure for Adding Tokens to the Default List
    • Whitepaper
  • Developer section
    • Architecture
    • SDK
      • DEX v1 guide
        • reference
        • swap
        • provide liquidity
        • refund liquidity
        • burn liquidity tokens
      • DEX v2 guide
        • swap
        • provide liquidity
        • refund liquidity
        • burn liquidity tokens
        • withdraw fee from vault
      • Farm guide
        • stake in farm
        • claim farm rewards
        • unstake from farm
        • destroy farm NFT
      • Transaction sending guide
        • via ton
        • via tonweb
        • via tonconnect
      • v0.5 > v1.0.0 migration guide
      • v0.5 (deprecated)
        • DEX guide
          • swap
          • provide liquidity
          • refund liquidity
          • burn liquidity tokens
        • Farm guide
          • stake in farm
          • claim farm rewards
          • unstake from farm
          • destroy farm NFT
        • Transaction sending guide
          • via ton
          • via tonweb
          • via tonconnect
      • v0.4 > v0.5 migration guide
      • v0.4 (deprecated)
        • perform a swap operation
        • provide liquidity
        • refund liquidity
        • burn liquidity tokens
        • using get methods
        • create a custom router revision
    • API reference v1
      • Router
      • Pool
      • LpAccount
      • LpWallet
    • API reference v2
      • Router
      • Pool
      • LpAccount
      • LpWallet
      • Vault
      • Swap examples
      • LpProvide examples
      • Vault examples
      • Op Codes
    • DEX API
    • OMNISTON
      • Resolvers (How to become a resolver)
      • Swap overview
      • Swap extra
      • Swap grpc
      • React
      • Nodejs
      • Referral fees
    • Quickstart Guides
      • Swap Guide
      • Omniston Guide
  • Help
    • Contact Us
Powered by GitBook
On this page
  • Key Differences from WebSocket API
  • Typical Flow (Traders)
  • Important Data Types
  • Rejected Quotes
  • Next Steps
Export as PDF
  1. Developer section
  2. OMNISTON

Swap grpc

PreviousSwap extraNextReact

Last updated 1 month ago

This guide describes how to use the Omniston swap functionality over the gRPC API from a trader's perspective. It parallels but shows the gRPC specifics.

Key Differences from WebSocket API

  1. Protocol Field For the gRPC API, the protocol field in each swap chunk must be a string:

    • "StonFiV1", "StonFiV2", or "DeDust". In contrast, the WebSocket API uses numeric codes 1, 2, or 3.

  2. Extra Version Currently, only extraVersion = 1 is supported.

  3. Steps vs. Chunks

    • Each SwapStep moves from one asset to another (e.g., TON → USDC).

    • Each step can have multiple SwapChunk objects, but on TON you typically see exactly one chunk per step.

  4. Method Names In the gRPC API, traders use similar calls to requestForQuote, buildTransfer, trackTrade, etc., but these are exposed via protobuf messages, not JSON-RPC. The underlying fields are the same.

Typical Flow (Traders)

A typical gRPC-based swap flow from a trader's viewpoint is:

  1. Send a Quote Request Using Omniston.requestForQuote (or the corresponding gRPC call), providing:

    • offerAssetAddress, askAssetAddress

    • The desired amount (either offerUnits or askUnits)

    • Optional referrerAddress and referrerFeeBps

    • settlementMethods = [SETTLEMENT_METHOD_SWAP] if you want a swap

    • settlementParams such as maxPriceSlippageBps or maxOutgoingMessages (for TON)

    You receive an Observable (RxJS style in the SDK) or a stream of QuoteResponseEvent messages over gRPC. The server may update your quote repeatedly if a more favorable price arrives.

  2. Build the Transfer When you have a valid Quote, call Omniston.buildTransfer with:

    • The quote you accepted

    • Your sourceAddress (on offerBlockchain)

    • Your destinationAddress (on askBlockchain) The API returns an object with blockchain-specific transaction data (for TON, a list of messages).

  3. Sign/Send the Transaction

    • On TON, you typically pass these messages to your wallet (e.g., TonConnect, Tonkeeper, etc.).

    • Wait for the transaction to be mined.

  4. Track the Trade You can then call Omniston.trackTrade to receive streaming updates about the trade status. This includes whether the trade was filled, partially filled, or aborted.

Important Data Types

  • Blockchain A numeric code following SLIP-044. For TON, this is 607.

  • Address An object:

    {
      "blockchain": 607,
      "address": "EQDA3..."
    }
  • Protocol Must be one of:

    • "StonFiV1"

    • "StonFiV2"

    • "DeDust"

  • SettlementMethod For now, typically [0] for swap in numerical form, or (in your SDK) SettlementMethod.SETTLEMENT_METHOD_SWAP.

  • SwapStep and SwapChunk

    • Each step is a transition from offerAssetAddress to askAssetAddress.

    • For TON: typically exactly one chunk per step.

    • A chunk includes:

      string protocol = 1;       // e.g. "StonFiV2"
      string offer_amount = 2;
      string ask_amount = 3;
      uint64 extra_version = 4;  // must be 1
      bytes extra = 5;           // base64-encoded data for your DEX
  • Quote The server provides a quoteId, offerUnits, askUnits, quoteTimestamp, tradeStartDeadline, etc. Includes params with settlement info for the chosen method (SwapSettlementParams).

Rejected Quotes

If you pass extraVersion != 1 (e.g., 3), the quote or the route gets rejected with a message like:

Invalid extra version for step 0: 3

Make sure to use extraVersion = 1.

Next Steps

If you have any questions or issues, please reach out in our STON.fi Discord.

For a complete, low-level definition of the gRPC service (resolver side, plus the underlying messages), see . For Node.js or TypeScript usage, see or the for React apps. Both rely on the same underlying gRPC/WS backend.

Swap overview (WebSocket)
Resolver Integration Guide
omniston-nodejs.md
omniston-react.md