Блокчейн TON: как проверить, успешна транзакция или нет?

Я использую библиотеку tonweb для отправки транзакции. Но в ответ я получаю что-то вроде { '@type': 'ok', '@extra': '1723716788.6499352:4:0.3484654105500832' }. Это совершенно бесполезная информация, я не знаю, успешна моя транзакция или нет.

Я попытался вызвать метод getTransaction(), чтобы получить мою последнюю транзакцию, но я не вижу информации об успешности моей транзакции или ее отсутствии.

1
0
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение: использование API tonapi.ioдокументации здесь для отслеживания всего кода выхода в транзакции и дочернем сообщении.

Плюсы: можно отслеживать все сообщения в транзакции только по хешу транзакции или хешу сообщения. Вы можете получить хеш сообщения перед отправкой транзакции в блокчейн.

Минусы: Имеет ограничение скорости API (1 запрос/с для бесплатного пользователя).

import { HttpClient, Api, Trace } from 'tonapi-sdk-js';

const API_KEY = "API_KEY";
// Configure the HTTP client with your host and token
const httpClient = new HttpClient({
    baseUrl: 'https://testnet.tonapi.io',
    baseApiParams: {
        headers: {
            Authorization: `Bearer ${API_KEY}`,
            'Content-type': 'application/json'
        }
    }
});

// Initialize the API client
const client = new Api(httpClient);

(async () => {
    const trace = await client.traces.getTrace("messsage hash")
    console.info(trace)
    console.info(isTraceSuccess(trace))
})()

function isTraceSuccess(trace: Trace) {
    if (!trace.transaction.success) {
        // You can see error in compute phase or action phase in transaction
        // console.info(trace.transaction)
        return false;
    }
    if (trace.children) {
        for (let i = 0; i < trace.children?.length; i++) {
            if (!isTraceSuccess(trace.children[i])) {
                return false;
            }
        }
    }

    return true;
}

PS: tonapi имеет конечную точку API для эмуляции транзакции перед фактической отправкой в ​​блокчейн.

Другие вопросы по теме