Q&A 02 QUESTION 3/

  1. Làm thế nào để chờ giao dịch xác nhận hoàn tất bằng TonWeb? Tôi đang viết một DApp (Decentralized Application - Ứng dụng phi tập trung) trên chuỗi khối TON và sử dụng thư viện JavaScript tonweb để tương tác với nó. Tôi muốn gửi một giao dịch trước, và sau khi nó xác nhận trên chuỗi, tôi sẽ thực hiện một số mã hiệu (code) JavaScript khác. Ví dụ:

    await ton.send('ton_sendTransaction', [{
            to: 'some address',
            value: '1000'
        }]
    )
    // chờ giao dịch xác nhận trên chuỗi
    console.log('Done!')

    Tôi không biết làm thế nào để đợi sự xác nhận của giao dịch.

Trả lời: Bạn có thể lưu lại hàm băm (hash) của giao dịch trước khi gửi nó đi và sau đó truy vấn phương thức API Toncenter getTransactionByInMessageHash để kiểm tra nếu giao dịch có hàm băm như trên đã được xác nhận hay chưa. Ví dụ:

// Hàm sleep:
const sleep = ms => new Promise(r => setTimeout(r, ms))

// `msg` là một Cell chứa lời nhắn bên ngoài của bạn
// Chuyển đổi lời nhắn Cell qua chuỗi BOC
const boc = await msg.toBoc(false)

// Tính toán hàm băm của nó
const hash = tonweb.utils.bytesToBase64(await msg.hash())

// Gửi lời nhắn và chạy vòng lặp cho tới khi giao dịch có hàm băm trên được xác nhận
await tonweb.sendBoc(boc)
var txs = []
while (txs.length == 0) {
    await sleep(1200) // xử lý delay trong một số hàm gọi API 
    const resp = await fetch(' + encodeURIComponent(hash))
    txs = await resp.json()
}

console.log('Xong!')

Last updated