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