未找到 Solana 最终交易

问题描述 投票:0回答:1

我正在使用托管泵门户 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”错误,但我仍然无法查找交易本身。

我已经被困在这个问题上一两周了,我不知道是什么导致了这个问题,也不知道如何解决它,任何帮助将不胜感激。

rpc solana
1个回答
0
投票

我在使用专用 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
© www.soinside.com 2019 - 2024. All rights reserved.