Как я могу получить идентификаторы рынка для программы обмена токенов Solana?
Имея mint-адреса двух токенов spl в основной сети Solana, мне нужно найти открытый ключ всех возможных рынков (т.е.
marketId
в следующем фрагменте кода), доступном на Solana для получения информации об обмене токенами:
const tokenSwap = await TokenSwap.loadTokenSwap(
con,
new PublicKey(marketId),// << HERE
TOKEN_SWAP_PROGRAM_ID,
payerAaccount
);
Я не смог найти ни одного репозитория (похожего на адреса Raydium или Serum lp) на github или где-либо еще. Где я могу найти список ликвидных рынков для программы обмена токенами spl? и / или есть ли какой-либо другой способ рассчитать или получить информацию об обмене токенами на основе адресов монетного двора?
1 ответ
Чтобы получить адреса рынков для двух монетных дворов, вам нужно будет пройти несколько шагов.
- Получите все учетные записи программы для программы обмена токенами: https://docs.solana.com/developing/clients/jsonrpc-api#getprogramaccounts
- Десериализуйте каждый из них как
TokenSwap
введите путем декодирования, например https://github.com/solana-labs/solana-program-library/blob/07bf49fdb820f8e3a40550998723e4878506af0b/token-swap/js/src/index.ts#L258 - Убедитесь, что
mintA
а такжеmintB
ожидаемые: https://github.com/solana-labs/solana-program-library/blob/07bf49fdb820f8e3a40550998723e4878506af0b/token-swap/js/src/index.ts#L65
Заметим, однако, что текущий
TOKEN_SWAP_PROGRAM_ID
не рекомендуется Serum в пользу использования книги заказов Serum. Возможно, вам придется использовать их SDK для Serum или Raydium для взаимодействия с этими программами.