我正在使用托管泵门户 API,每当我出售时,然后尝试查找交易,它会返回错误“未找到”。
out, err := solanaClient.GetTransaction(
context.Background(),
sig,
&solanaRPC.GetTransactionOpts{
MaxSupportedTransactionVersion: &transactionVersion,
Encoding: solana.EncodingBase64,
},
)
我收到的签名确实显示在已处理或已确认的 solscan 上,但我无法通过 rpc 访问它。我正在使用 Helius 免费 RPC。我尝试在出售和查找交易之间等待 3 分钟,但没有成功。
我也尝试检查签名状态:
out, err := solanaClient.GetSignatureStatuses(
context.Background(),
false,
solana.MustSignatureFromBase58(resp.Signature),
)
)
if err != nil {panic(err)}
fmt.Println(out.Value[0].ConfirmationStatus)
fmt.Println(out.Value[0].Err)
我可以很好地查找签名,它会返回“已确认”和“nil”错误,但我仍然无法查找交易本身。
我已经被困在这个问题上一两周了,我不知道是什么导致了这个问题,也不知道如何解决它,任何帮助将不胜感激。
我在使用专用 Solana API 时遇到了类似的问题。
就我而言,我意识到 API 在检索交易时存在一些延迟,因此我创建了一个多次调用 API 的函数。通常在第三次尝试时,如果交易确实完成,API 就会做出响应。
def get_transaction(sig, max_retries=5, retry_delay=15):
client = Client("https://api.mainnet-beta.solana.com")
retries = 0
while retries < max_retries:
try:
# Make the API request
response = client.get_transaction(sig, max_supported_transaction_version=0)
#print(response)
# Check if the response is not None
if response.value is not None:
#print(response.value)
return response
else:
print("Received empty response. Retrying...")
except Exception as e:
print(f"Error: {e}.")
raise Exception(f"Failed to fetch transaction after {max_retries} attempts.")
# Wait before retrying
retries += 1
time.sleep(retry_delay)
return response