簡體   English   中英

如何在 elrond.network 上跟蹤交易狀態

[英]How to track transaction status on elrond network

有人可以幫助跟蹤 elrond.network 上價值轉移的交易狀態嗎?

   const testTransaction = new Transaction({
      value: Balance.egld(1),
      data: new TransactionPayload('Test Transfer'),
      receiver: new Address(ownerWallet),
      nonce: sender.nonce,
      gasPrice: new GasPrice(10000000000,
      gasLimit: new GasLimit(1000000)
    });

    await refreshAccount();

    const { sessionId  } = await sendTransactions({
      transactions: testTransaction,
      transactionsDisplayInfo: {
        processingMessage: 'Processing transaction',
        errorMessage: 'An error has occured during Transaction',
        successMessage: 'Transaction successful'
      }
    });

我目前正在使用sendTransactions發送我的交易。

根據 erdjs 文檔的文檔,您可以使用TransactionWatcher

以下是文檔中的簡化示例:

await tx1.send(provider);

let watcher = new TransactionWatcher(tx1.hash, provider);
await watcher.awaitStatus(status => status.isExecuted());

erdjs 文檔: https ://elrondnetwork.github.io/elrond-sdk-docs/erdjs/latest/

我沒有設法使用觀察者,所以我每 0.5 秒從 sessionStorage 讀取一次數據,直到狀態為“成功”

let transactions = JSON.parse(sessionStorage.getItem('persist:dapp-core-transactions'));
    const txData = JSON.parse(sessionStorage.getItem('txData'));
    let txSessionId = sessionStorage.getItem('txSessionId');
    let signedTransactions = JSON.parse(transactions.signedTransactions);
    let currentTransaction = signedTransactions[txSessionId];
    // if (currentTransaction != null) {
    //     let transactionOnNetwork = await watcher.awaitCompleted();
    //     console.log(transactionOnNetwork);
    // }

    // console.log(signedTransactions);
    if (currentTransaction && txSessionId) {
        console.log(currentTransaction);
        if (currentTransaction.status === 'sent') {
            const checkTransaction = setInterval(async () => {
                console.log("Checking transaction status");
                let transactions = JSON.parse(sessionStorage.getItem('persist:dapp-core-transactions'));
                let signedTransactions = JSON.parse(transactions.signedTransactions);
                let currentTransaction = signedTransactions[txSessionId];
                if (currentTransaction.status === 'success' && txData) {
                    clearInterval(checkTransaction);                        
                    await doSomething(currentTransaction);
                    sessionStorage.removeItem('txSessionId');
                }
            }, 500);
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM