本文介绍了如何使用 Shyft Callback API 实时监听 Solana 链上 Orca 协议的事件,包括创建池子、交换代币、增加流动性和移除流动性。通过注册回调API,并在后端设置API以接收来自Shyft的回调,可以分析链上交易数据,为Dapp提供实时更新的用户体验。
在今天的文章中,我们将探索利用 Shyft Callback API 追踪 Orca 上活动的最简单方法之一,包括创建池、交换代币、添加流动性和移除流动性。
Orca 是在 Solana 区块链上交换加密货币的最简单方式。在这里,你可以用极低的交易费用和比以太坊上任何 DEX 更低的延迟交换代币,同时确信你获得的都是公平的价格。此外,你可以为交易池提供流动性,以赚取交易费分成。
在此处阅读 SHYFT API 文档 here .
要开始,我们需要准备一些东西。
x-api-key
是一个身份验证参数,它让你能够访问 Shyft API。你可以从 Shyft 网站获取 你自己的 API 密钥。 只需在此处用你的电子邮件 ID 注册,即可免费获取。如果你已经拥有 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 是一个标准的 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": []
}
我们收到了每个人类可读的链上交易数据。
type
字段指示交易的行为,在本例中为“Swap”。fee
、fee_payer
和 signers
字段是不言自明的:它们代表交易的 gas 费用、支付费用的钱包以及为交易签名的钱包。protocol
字段包含执行交易的程序的名称和地址。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": []
}
移除流动性事件
{
"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"\
}\
]
}
此外,如果你是 Discord 机器人的爱好者,并希望在你的 Discord 服务器中接收回调数据,你只需修改注册回调函数。将 callbackUrl
替换为你的 Discord webhook URL,并指定 type: DISCORD
。我们写了一篇关于如何使用 Shyft API 创建 Discord 机器人的文章。你可以通过此链接阅读它。
因此,我们刚刚指导你如何使用 Shyft Callback API 实时监听链上 Orca 事件。通过监听链上事件,你可以轻松地为你的 dApp 提供实时体验。
我们真诚地希望你喜欢阅读这篇博文!如果你有任何疑问或想法,请随时访问我们的 Discord 社区。
非常感谢你抽出时间阅读本文!
- 原文链接: blogs.shyft.to/how-to-tr...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!