如何实时追踪Orca事件

  • Shyft_to
  • 发布于 2024-02-24 17:54
  • 阅读 11

本文介绍了如何使用 Shyft Callback API 实时监听 Solana 链上 Orca 协议的事件,包括创建池子、交换代币、增加流动性和移除流动性。通过注册回调API,并在后端设置API以接收来自Shyft的回调,可以分析链上交易数据,为Dapp提供实时更新的用户体验。

在本文中,我们将探讨使用 Shyft Callback API 实时监听 Orca 上事件的过程。

实时追踪 orca whirlpool 的封面

在今天的文章中,我们将探索利用 Shyft Callback API 追踪 Orca 上活动的最简单方法之一,包括创建池、交换代币、添加流动性和移除流动性

Orca 是在 Solana 区块链上交换加密货币的最简单方式。在这里,你可以用极低的交易费用和比以太坊上任何 DEX 更低的延迟交换代币,同时确信你获得的都是公平的价格。此外,你可以为交易池提供流动性,以赚取交易费分成。

在此处阅读 SHYFT API 文档 here .

开始之前

要开始,我们需要准备一些东西。

注册你的 Shyft 账户并获取你自己的 Shyft API 密钥。

x-api-key 是一个身份验证参数,它让你能够访问 Shyft API你可以从 Shyft 网站获取 你自己的 API 密钥。 只需在此处用你的电子邮件 ID 注册,即可免费获取。如果你已经拥有 Shyft API 密钥,请跳过此步骤。

我们的教程将分为三个步骤

  • 为 Orca 程序地址注册回调。 在此过程中,我们将利用 Shyft JS SDK 为 Orca 程序地址注册回调。
  • 建立一个 API 来监听来自 Shyft 的回调。 此 API 将负责接收来自 Shyft 的回调数据。
  • 回调数据分析:在收到来自 Shyft 的回调数据后,我们将分析该数据的结构。相信我,回调数据结构非常容易阅读和理解。

注册回调 API

Shyft 允许我们为特定地址设置回调。这意味着每当这些地址发生任何链上事件时,Shyft 会立即通知我们相关的事件数据。在我们的场景中,我们为 Orca 程序地址 设置了回调。这使得 Shyft 能够及时通知我们是否发生了诸如池创建、交换、添加流动性或移除流动性等事件。

你可以选择通过手动调用 Shyft 的回调注册 API 或通过使用 Shyft JS SDK 并提供必要的数据来注册回调。在我们的教程中,我们将选择 Shyft JS SDK 以增加便利性。有关回调 API 的更多详细信息,你可以参考此 link

// setup Shyft client
import { Network, ShyftSdk } from "@shyft-to/js"

const ORCA_SHIRLPOOLS_ADDRESS = "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc";

const registerCallback = async () => {
  const shyft = new ShyftSdk({
    apiKey: process.env.NEXT_PUBLIC_SHYFT_API_KEY!,
    network: Network.Mainnet,
  });

  await shyft.callback.register({
    network: Network.Mainnet,
    addresses: [ORCA_SHIRLPOOLS_ADDRESS],
    // The URL of your API that listens for the callback event.
    // 我们将在下一步设置。
    callbackUrl: `${window.location.href}api/callback`,
    // In our tutorial, we are only interested in four events, but you can provide as many events as you like.
    // 在我们的教程中,我们只对四个事件感兴趣,但你可以提供任意数量的事件。
    events: [TxnAction.CREATE_POOL, TxnAction.SWAP, TxnAction.ADD_LIQUIDITY, TxnAction.REMOVE_LIQUIDITY],
  });

  console.log("success");
};

设置 API 以接收回调

此 API 是一个标准的 POST API。我们在上一步中将此 API 的 URL 提供给了 Shyft。当事件发生时,Shyft 将调用此 API 并将数据发送给我们。我们的职责包括检查和分析数据。 在我们的文章中,我们只呈现数据,但你可以随意将其用于任何你想要的操作,例如在前端显示此数据或将其存储在数据库中以供以后使用。要进一步了解回调数据的结构,你可以参考此 link

import { CallbackDataType } from "@/types";
import { NextApiResponse } from "next";
import { NextRequest } from "next/server";
import { TxnAction } from "@shyft-to/js";

const ACTIONS = [\
  TxnAction.CREATE_POOL,\
  TxnAction.ADD_LIQUIDITY,\
  TxnAction.REMOVE_LIQUIDITY,\
  TxnAction.SWAP,\
];

export async function POST(req: NextRequest, res: NextApiResponse) {
  const body = (await req.json()) as CallbackDataType;
  if (
    !body.type ||
    !body.actions ||
    body.status !== "Success" ||
    !ACTIONS.includes(body.type as TxnAction)
  )
    return res.status(400).json({ message: "Invalid callback data" });

  // You can store the callback data into database for later use.
  // 你可以将回调数据存储到数据库中以供以后使用。
  console.dir(body, { depth: null });

  return Response.json({ success: true });
}

回调数据分析

我们的后端服务器现在已全面运行,每当发生重要的链上事件时,包括 Orca 上的代币交换、流动性添加或移除,都能无缝地从 Shyft 接收实时数据。这种数据流对你的去中心化应用程序 (dApp) 具有巨大的价值,使你能够协调前端的动态、实时更新,从而确保你的用户保持知情和参与

现在,让我们看看我们收到的一些事件。

交换事件

{
  "timestamp": "2024-02-22T03:24:28.000Z",
  "fee": 0.000005,
  "fee_payer": "YubozzSnKomEnH3pkmYsdatUUwUTcm7s4mHJVmefEWj",
  "signers": [\
    "YubozzSnKomEnH3pkmYsdatUUwUTcm7s4mHJVmefEWj"\
  ],
  "signatures": [\
    "39g1YwK9aHbDDc1ZMruKB5WvSQdEvfoWG8coBYLycVTs4hH7WfCRmCqXUu7ZUZsyDN4gfp3ZM1MKu8JmRzgeihTn"\
  ],
  "protocol": {
    "address": "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc",
    "name": "ORCA_WHIRLPOOLS"
  },
  "type": "SWAP",
  "status": "Success",
  "actions": [\
    {\
      "info": {\
        "swapper": "YubozzSnKomEnH3pkmYsdatUUwUTcm7s4mHJVmefEWj",\
        "tokens_swapped": {\
          "in": {\
            "token_address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",\
            "name": "USD Coin",\
            "symbol": "USDC",
            "image_uri": "https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v/logo.png",\
            "amount": 100\
          },\
          "out": {\
            "token_address": "So11111111111111111111111111111111111111112",\
            "name": "Wrapped SOL",
            "symbol": "SOL",
            "image_uri": "https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png",
            "amount": 0.971308406\
          }\
        },\
        "swaps": [\
          {\
            "liquidity_pool_address": "83v8iPyZihDEjDdY8RdZddyZNyUtXngz69Lgo9Kt5d6d",\
            "name": "USD Coin-Wrapped SOL",
            "source": "whirlpool",
            "in": {\
              "token_address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "name": "USD Coin",
              "symbol": "USDC",
              "image_uri": "https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v/logo.png",
              "amount": 100\
            },\
            "out": {\
              "token_address": "So11111111111111111111111111111111111111112",
              "name": "Wrapped SOL",
              "symbol": "SOL",
              "image_uri": "https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png",
              "amount": 0.971308406\
            }\
          }\
        ],\
        "slippage_in_percent": null,\
        "quoted_out_amount": null,\
        "slippage_paid": null\
      },\
      "source_protocol": {\
        "address": "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc",\
        "name": "ORCA_WHIRLPOOLS"\
      },\
      "parent_protocol": "8i97DHS9KPnG311fSY9yin4cyk9ZzkBjLXobyEFvtfKY",\
      "type": "SWAP"\
    },\
    {\
      "info": {\
        "amount": 100,\
        "sender": "YubozzSnKomEnH3pkmYsdatUUwUTcm7s4mHJVmefEWj",\
        "receiver_associated_account": "dwxR9YF7WwnJJu7bPC4UNcWFpcSsooH6fxbpoa3fTbJ",\
        "receiver": "83v8iPyZihDEjDdY8RdZddyZNyUtXngz69Lgo9Kt5d6d",\
        "token_address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"\
      },\
      "source_protocol": {\
        "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",\
        "name": "Token Program"\
      },\
      "type": "TOKEN_TRANSFER",\
      "parent_protocol": "8i97DHS9KPnG311fSY9yin4cyk9ZzkBjLXobyEFvtfKY"\
    },\
    {\
      "info": {\
        "amount": 0.971308406,\
        "sender": "83v8iPyZihDEjDdY8RdZddyZNyUtXngz69Lgo9Kt5d6d",\
        "receiver_associated_account": "BqjtchQuxAYHQyQhc2Yfj4oujFMSDLVd2woL2HX6tU9H",\
        "receiver": "YubozzSnKomEnH3pkmYsdatUUwUTcm7s4mHJVmefEWj",\
        "token_address": "So11111111111111111111111111111111111111112"\
      },\
      "source_protocol": {\
        "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",\
        "name": "Token Program"\
      },\
      "type": "TOKEN_TRANSFER",\
      "parent_protocol": "8i97DHS9KPnG311fSY9yin4cyk9ZzkBjLXobyEFvtfKY"\
    }\
  ],
  "accounts": []
}

我们收到了每个人类可读的链上交易数据。

  • timestamp: 交易发生的日期和时间。
  • The type 字段指示交易的行为,在本例中为“Swap”。
  • feefee_payersigners 字段是不言自明的:它们代表交易的 gas 费用、支付费用的钱包以及为交易签名的钱包。
  • The protocol 字段包含执行交易的程序的名称和地址
  • status: 交易结果。
  • The actions 字段是提供详细信息的行为列表。在本例中,你可以观察到执行此交换的 swapper 钱包。此外,你可以查看进出交换的代币的详细信息,包括其代币地址、名称、符号、图像 URL 和金额。

添加流动性事件

{
  "timestamp": "2024-02-22T23:38:30.000Z",
  "fee": 0.000019,
  "fee_payer": "882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu",
  "signers": ["882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu"],
  "signatures": [\
    "5XkQ4WUuWb4EWcfU73u7MuBdTRK1HdixSk5SHA5T9fqbTEvSrSvNgVX55a29y6phf6ahZ49i9DrD7epbZ1F4rRcX"\
  ],
  "protocol": {
    "address": "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc",
    "name": "ORCA_WHIRLPOOLS"
  },
  "type": "ADD_LIQUIDITY",
  "status": "Success",
  "actions": [\
    {\
      "info": {\
        "liquidity_provider_address": "882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu",\
        "liquidity_pool_address": "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q",\
        "nft_address": "",\
        "liquidity_added": [\
          {\
            "token_address": "So11111111111111111111111111111111111111112",\
            "amount": 60,\
            "name": "Wrapped SOL",\
            "symbol": "SOL",\
            "image_uri": "https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png"\
          },\
          {\
            "token_address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",\
            "amount": 6131.004543,\
            "name": "USD Coin",\
            "symbol": "USDC",\
            "image_uri": "https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v/logo.png"\
          }\
        ]\
      },\
      "source_protocol": {\
        "address": "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc",\
        "name": "ORCA_WHIRLPOOLS"\
      },\
      "type": "ADD_LIQUIDITY",\
      "parent_protocol": "F5mYQ3f3B6UmBv84bumcdFrRjejh9skG2cQGHNab2aZZ"\
    },\
    {\
      "info": {\
        "liquidity_provider_address": "882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu",\
        "liquidity_pool_address": "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q",\
        "nft_address": "",\
        "liquidity_removed": [\
          {\
            "token_address": "So11111111111111111111111111111111111111112",\
            "amount": 0.56272084,\
            "name": "Wrapped SOL",\
            "symbol": "SOL",\
            "image_uri": "https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png"\
          },\
          {\
            "token_address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",\
            "amount": 0,\
            "name": "USD Coin",\
            "symbol": "USDC",\
            "image_uri": "https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v/logo.png"\
          }\
        ]\
      },\
      "source_protocol": {\
        "address": "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc",\
        "name": "ORCA_WHIRLPOOLS"\
      },\
      "type": "REMOVE_LIQUIDITY",\
      "parent_protocol": "F5mYQ3f3B6UmBv84bumcdFrRjejh9skG2cQGHNab2aZZ"\
    },\
    {\
      "info": {\
        "liquidity_provider_address": "882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu",\
        "liquidity_pool_address": "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q",\
        "nft_address": "",\
        "liquidity_removed": []\
      },\
      "source_protocol": {\
        "address": "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc",\
        "name": "ORCA_WHIRLPOOLS"\
      },\
      "type": "REMOVE_LIQUIDITY",\
      "parent_protocol": "F5mYQ3f3B6UmBv84bumcdFrRjejh9skG2cQGHNab2aZZ"\
    },\
    {\
      "info": {\
        "liquidity_provider_address": "882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu",\
        "liquidity_pool_address": "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q",\
        "nft_address": "",\
        "liquidity_removed": []\
      },\
      "source_protocol": {\
        "address": "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc",\
        "name": "ORCA_WHIRLPOOLS"\
      },\
      "type": "REMOVE_LIQUIDITY",\
      "parent_protocol": "F5mYQ3f3B6UmBv84bumcdFrRjejh9skG2cQGHNab2aZZ"\
    },\
    {\
      "info": {\
        "amount": 0.56272084,\
        "sender": "882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu",\
        "receiver_associated_account": "6mQ8xEaHdTikyMvvMxUctYch6dUjnKgfoeib2msyMMi1",\
        "receiver": "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q",\
        "token_address": "So11111111111111111111111111111111111111112"\
      },\
      "source_protocol": {\
        "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",\
        "name": "Token Program"\
      },\
      "type": "TOKEN_TRANSFER",\
      "parent_protocol": "F5mYQ3f3B6UmBv84bumcdFrRjejh9skG2cQGHNab2aZZ"\
    },\
    {\
      "info": {\
        "amount": 0,\
        "sender": "882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu",\
        "receiver_associated_account": "AQ36QRk3HAe6PHqBCtKTQnYKpt2kAagq9YoeTqUPMGHx",\
        "receiver": "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q",\
        "token_address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"\
      },\
      "source_protocol": {\
        "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",\
        "name": "Token Program"\
      },\
      "type": "TOKEN_TRANSFER",\
      "parent_protocol": "F5mYQ3f3B6UmBv84bumcdFrRjejh9skG2cQGHNab2aZZ"\
    },\
    {\
      "info": {\
        "amount": 0.025155793,\
        "sender": "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q",\
        "receiver_associated_account": "2rw3gMo4AB5Y5YggfXyh3ZCwc7LerdR1nFD3x6aedPSt",\
        "receiver": "882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu",\
        "token_address": "So11111111111111111111111111111111111111112"\
      },\
      "source_protocol": {\
        "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",\
        "name": "Token Program"\
      },\
      "type": "TOKEN_TRANSFER",\
      "parent_protocol": "F5mYQ3f3B6UmBv84bumcdFrRjejh9skG2cQGHNab2aZZ"\
    },\
    {\
      "info": {\
        "amount": 16.959437,\
        "sender": "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q",\
        "receiver_associated_account": "3stBgcqaa1UWK23ybiZjTS1h9VuCH18dPkhxyiWfDaLd",\
        "receiver": "882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu",\
        "token_address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"\
      },\
      "source_protocol": {\
        "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",\
        "name": "Token Program"\
      },\
      "type": "TOKEN_TRANSFER",\
      "parent_protocol": "F5mYQ3f3B6UmBv84bumcdFrRjejh9skG2cQGHNab2aZZ"\
    },\
    {\
      "info": {\
        "amount": 0.740776027,\
        "sender": "882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu",\
        "receiver_associated_account": "6mQ8xEaHdTikyMvvMxUctYch6dUjnKgfoeib2msyMMi1",\
        "receiver": "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q",\
        "token_address": "So11111111111111111111111111111111111111112"\
      },\
      "source_protocol": {\
        "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",\
        "name": "Token Program"\
      },\
      "type": "TOKEN_TRANSFER",\
      "parent_protocol": "F5mYQ3f3B6UmBv84bumcdFrRjejh9skG2cQGHNab2aZZ"\
    },\
    {\
      "info": {\
        "amount": 0,\
        "sender": "882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu",\
        "receiver_associated_account": "AQ36QRk3HAe6PHqBCtKTQnYKpt2kAagq9YoeTqUPMGHx",\
        "receiver": "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q",\
        "token_address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"\
      },\
      "source_protocol": {\
        "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",\
        "name": "Token Program"\
      },\
      "type": "TOKEN_TRANSFER",\
      "parent_protocol": "F5mYQ3f3B6UmBv84bumcdFrRjejh9skG2cQGHNab2aZZ"\
    },\
    {\
      "info": {\
        "amount": 0,\
        "sender": "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q",\
        "receiver_associated_account": "2rw3gMo4AB5Y5YggfXyh3ZCwc7LerdR1nFD3x6aedPSt",\
        "receiver": "882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu",\
        "token_address": "So11111111111111111111111111111111111111112"\
      },\
      "source_protocol": {\
        "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",\
        "name": "Token Program"\
      },\
      "type": "TOKEN_TRANSFER",\
      "parent_protocol": "F5mYQ3f3B6UmBv84bumcdFrRjejh9skG2cQGHNab2aZZ"\
    },\
    {\
      "info": {\
        "amount": 55.421012,\
        "sender": "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q",\
        "receiver_associated_account": "3stBgcqaa1UWK23ybiZjTS1h9VuCH18dPkhxyiWfDaLd",\
        "receiver": "882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu",\
        "token_address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"\
      },\
      "source_protocol": {\
        "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",\
        "name": "Token Program"\
      },\
      "type": "TOKEN_TRANSFER",\
      "parent_protocol": "F5mYQ3f3B6UmBv84bumcdFrRjejh9skG2cQGHNab2aZZ"\
    },\
    {\
      "info": {\
        "amount": 0.737050271,\
        "sender": "882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu",\
        "receiver_associated_account": "6mQ8xEaHdTikyMvvMxUctYch6dUjnKgfoeib2msyMMi1",\
        "receiver": "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q",\
        "token_address": "So11111111111111111111111111111111111111112"\
      },\
      "source_protocol": {\
        "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",\
        "name": "Token Program"\
      },\
      "type": "TOKEN_TRANSFER",\
      "parent_protocol": "F5mYQ3f3B6UmBv84bumcdFrRjejh9skG2cQGHNab2aZZ"\
    },\
    {\
      "info": {\
        "amount": 0,\
        "sender": "882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu",\
        "receiver_associated_account": "AQ36QRk3HAe6PHqBCtKTQnYKpt2kAagq9YoeTqUPMGHx",\
        "receiver": "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q",\
        "token_address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"\
      },\
      "source_protocol": {\
        "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",\
        "name": "Token Program"\
      },\
      "type": "TOKEN_TRANSFER",\
      "parent_protocol": "F5mYQ3f3B6UmBv84bumcdFrRjejh9skG2cQGHNab2aZZ"\
    },\
    {\
      "info": {\
        "amount": 0,\
        "sender": "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q",\
        "receiver_associated_account": "2rw3gMo4AB5Y5YggfXyh3ZCwc7LerdR1nFD3x6aedPSt",\
        "receiver": "882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu",\
        "token_address": "So11111111111111111111111111111111111111112"\
      },\
      "source_protocol": {\
        "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",\
        "name": "Token Program"\
      },\
      "type": "TOKEN_TRANSFER",\
      "parent_protocol": "F5mYQ3f3B6UmBv84bumcdFrRjejh9skG2cQGHNab2aZZ"\
    },\
    {\
      "info": {\
        "amount": 75.010236,\
        "sender": "FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q",\
        "receiver_associated_account": "3stBgcqaa1UWK23ybiZjTS1h9VuCH18dPkhxyiWfDaLd",\
        "receiver": "882DFRCi5akKFyYxT4PP2vZkoQEGvm2Nsind2nPDuGqu",\
        "token_address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"\
      },\
      "source_protocol": {\
        "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",\
        "name": "Token Program"\
      },\
      "type": "TOKEN_TRANSFER",\
      "parent_protocol": "F5mYQ3f3B6UmBv84bumcdFrRjejh9skG2cQGHNab2aZZ"\
    }\
  ],
  "events": []
}
  • 上文已经解释了一些字段,因此我们只需要澄清 actions 字段。在这种上下文中,actions 字段包含有关 流动性提供者地址池地址 的信息。此外,我们可以观察到已添加到池中的 token pair

移除流动性事件

{
  "timestamp": "2024-02-22T23:50:01.000Z",
  "fee": 0.00001,
  "fee_payer": "9xuLKEdMWKSQsuysCMZRXuuT85ZDJemUo3gUhzgqhgEN",
  "signers": ["9xuLKEdMWKSQsuysCMZRXuuT85ZDJemUo3gUhzgqhgEN"],
  "signatures": [\
    "5oh38LUYYZRR1YJinoEDQWWv2NFiYZithHUQdnyYoURKn3ikGiMPEfdEVYcBNt3BCqB49KicNeipLdceDBU3HC3G"\
  ],
  "protocol": {
    "address": "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc",
    "name": "ORCA_WHIRLPOOLS"
  },
  "type": "REMOVE_LIQUIDITY",
  "status": "Success",
  "actions": [\
    {\
      "info": {\
        "liquidity_provider_address": "9xuLKEdMWKSQsuysCMZRXuuT85ZDJemUo3gUhzgqhgEN",\
        "liquidity_pool_address": "8JwS5zosnLFT84S1NebSp1HS6aeaxviXYS7jBh9PQ8vp",\
        "nft_address": "Ke32Y8stFGMTkFoHd8wZarTkmcUGtu8YKzBDJUNTJRB",\
        "liquidity_removed": [\
          {\
            "token_address": "hntyVP6YFm1Hg25TN9WGLqM12b8TQmcknKrdu1oxWux",\
            "amount": 137.28790981,\
            "name": "Helium",\
            "symbol": "HNT",\
            "image_uri": "https://assets.coingecko.com/coins/images/4284/large/Helium_HNT.png?1696504894"\
          },\
          {\
            "token_address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",\
            "amount": 0,\
            "name": "USD Coin",\
            "symbol": "USDC",\
            "image_uri": "https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v/logo.png"\
          }\
        ]\
      },\
      "source_protocol": {\
        "address": "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc",\
        "name": "ORCA_WHIRLPOOLS"\
      },\
      "type": "REMOVE_LIQUIDITY"\
    },\
    {\
      "info": {\
        "wallet": "9xuLKEdMWKSQsuysCMZRXuuT85ZDJemUo3gUhzgqhgEN",\
        "amount": 1,\
        "nft_address": "Ke32Y8stFGMTkFoHd8wZarTkmcUGtu8YKzBDJUNTJRB"\
      },\
      "source_protocol": {\
        "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",\
        "name": "Token Program"\
      },\
      "type": "NFT_BURN",\
      "parent_protocol": "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc"\
    },\
    {\
      "info": {\
        "amount": 139.34722846,\
        "sender": "8JwS5zosnLFT84S1NebSp1HS6aeaxviXYS7jBh9PQ8vp",\
        "receiver_associated_account": "E5ambN8UUydsBPrYTZpYk2hbuAV8zUA27E48bCsYapSk",\
        "receiver": "9xuLKEdMWKSQsuysCMZRXuuT85ZDJemUo3gUhzgqhgEN",\
        "token_address": "hntyVP6YFm1Hg25TN9WGLqM12b8TQmcknKrdu1oxWux"\
      },\
      "source_protocol": {\
        "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",\
        "name": "Token Program"\
      },\
      "type": "TOKEN_TRANSFER",\
      "parent_protocol": "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc"\
    },\
    {\
      "info": {\
        "amount": 0,\
        "sender": "8JwS5zosnLFT84S1NebSp1HS6aeaxviXYS7jBh9PQ8vp",\
        "receiver_associated_account": "D9VUp28BjsoYbMry7t8aZmgkhDNjgAWw8FhUwNakgsPS",\
        "receiver": "9xuLKEdMWKSQsuysCMZRXuuT85ZDJemUo3gUhzgqhgEN",\
        "token_address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"\
      },\
      "source_protocol": {\
        "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",\
        "name": "Token Program"\
      },\
      "type": "TOKEN_TRANSFER",\
      "parent_protocol": "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc"\
    }\
  ]
}
  • 添加流动性事件类似,此 JSON 包含 action 字段,其中包括有关流动性提供者地址池地址的信息。此外,我们可以观察到从池中移除的 token pair

此外,如果你是 Discord 机器人的爱好者,并希望在你的 Discord 服务器中接收回调数据,你只需修改注册回调函数。将 callbackUrl 替换为你的 Discord webhook URL,并指定 type: DISCORD。我们写了一篇关于如何使用 Shyft API 创建 Discord 机器人的文章。你可以通过此链接阅读它。

结论

因此,我们刚刚指导你如何使用 Shyft Callback API 实时监听链上 Orca 事件。通过监听链上事件,你可以轻松地为你的 dApp 提供实时体验。

我们真诚地希望你喜欢阅读这篇博文!如果你有任何疑问或想法,请随时访问我们的 Discord 社区。

非常感谢你抽出时间阅读本文!

资源

  • 原文链接: blogs.shyft.to/how-to-tr...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Shyft_to
Shyft_to
在 Solana上更快更智能地构建,使用Shyft的SuperIndexer、gRPC、RPC、API和SDK