开发者问题收集

Solana 交易尚未确认

2022-06-14
6147

大家好,我经常收到此消息,虽然不是每次都收到,但已经够频繁了:

交易未在 30.00 秒内确认。不知道交易是成功还是失败。使用 Solana Explorer 或 CLI 工具检查签名 4P9EvJXP6N9cRimKjPK76oChDR4DDnJByRofCJZs6axFVr9jTPKiq9ryNqq1NvB2NAqL2cxBAzYfp6KnRZw5WQ6Z。

知道是什么原因造成的吗?

这是我创建连接的方式:

const connection = new Connection(rpcUrl,'confirmed');

对于广播 tx,我正在使用:

const hash = await connection.sendTransaction(transaction, [this._signer]);

并且在交易广播后,我正在使用:

connection.confirmTransaction(hash, 'confirmed');

知道问题的原因是什么吗

2个回答

时间并不是衡量交易是否被确认的良好指标。

在最新版本的 @solana/web3.js 中,confirmTransaction 使用 blockHeight 以及交易有效的区块数来确定交易是否已被处理。

如果交易未得到确认,您将需要重试交易。

您可以在 SolanaCookbook 中找到更多信息。

Jacob Creech
2022-06-15

这就是我使用 Phantom 时检查 blockHeight 的方法:

 transaction.feePayer = publicKey;
 transaction.recentBlockhash = (await connection.getLatestBlockhash()).blockhash;
 const latestBlockHash = await connection.getLatestBlockhash()

         
 const { signature } = await provider.signAndSendTransaction(transaction);
         
 const confirmation = await connection.confirmTransaction(
            {
              blockhash: latestBlockHash.blockhash,
              lastValidBlockHeight: latestBlockHash.lastValidBlockHeight,
              signature,
            }
          );
Digital Dom
2022-07-26