Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Duplicate Signature Being Returned When Using getSignaturesForAddress method on web3 #24417

Closed
thekeviv opened this issue Apr 16, 2022 · 20 comments

Comments

@thekeviv
Copy link

Problem

I've an internal project which makes requests to a private Solana RPC to get transaction signatures every few seconds. Every poll, I get new signatures with getSignaturesForAddress, sort them in descending order by blocktime (or by slot if blocktime is null). In the next poll, I make the query for getSignaturesForAddress again with until parameter set as the signature with highest block time from the previous poll. This should return me new signatures which have happened until that signature.

Now, multiple signatures can have the same blocktime. Does web3 guarantee that those signatures with the same blocktime are not returned?

We've been seeing duplicate signatures in next polls with this approach. Here's the last sample run where duplicates happened:

  1. Made a request to get new signatures until signature 54nQjreuwRmawqo5xzuneGvfCYEDatgnGdQ288wK65VGvcnEM5RZfjRiSomRkP7oSgDZeKp6PnChezTaTtZZCKXu (block time - 1650132790). Signatures were returned.
  2. Then made another request to get signatures until 5oexSPS6EXp2HJpu9jw51Uj6fvNcsyag4jPByFveL1qCe9aapv4cpN78wAkTnrjhtqWkmfzcK3r99eH4KqRGY2ch (block time - 1650132809). Notice that the blocktime is after the signature from above.
  3. The signature 54nQjreuwRmawqo5xzuneGvfCYEDatgnGdQ288wK65VGvcnEM5RZfjRiSomRkP7oSgDZeKp6PnChezTaTtZZCKXu was in the returned results of the second query again which I didn't expect.

Is this a bug or is this the intended behaviour? Any explanation would be very appreciated!

@jstarry
Copy link
Member

jstarry commented Apr 17, 2022

That isn't the intended behavior but I'm not sure how this could be happening. Is your private RPC connected to bigtable for historical transaction queries? cc @CriesofCarrots

@thekeviv
Copy link
Author

As far as I know, it isn't.

@jstarry
Copy link
Member

jstarry commented Apr 17, 2022

The signature 54nQjreuwRmawqo5xzuneGvfCYEDatgnGdQ288wK65VGvcnEM5RZfjRiSomRkP7oSgDZeKp6PnChezTaTtZZCKXu was in the returned results of the second query again which I didn't expect.

Do you happen to know if the block time for this result was still 1650132790 or was it something different?

@jstarry
Copy link
Member

jstarry commented Apr 17, 2022

Sharing the full query and the unexpected response for that signature would be helpful for debugging

@thekeviv
Copy link
Author

Hi, so here's the entire details I have. Unfortunately, I don't have the exact times when these queries were made. Hopefully what I have is still of some value.

Made a query to the RPC to get sigs with until value as 629baC3dLgcH1KNxCkUHUygqH4fTwh6orK8VMWQJ2NnWoemLg5domdHxpjN6GhuM3qUE3f5MaFUZjNMSx24hAHw3. Received:

[{"blockTime":1650132790,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"54nQjreuwRmawqo5xzuneGvfCYEDatgnGdQ288wK65VGvcnEM5RZfjRiSomRkP7oSgDZeKp6PnChezTaTtZZCKXu","slot":130031999},
{"blockTime":1650132790,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"4b9t73JRdkQFeY4VZ7H8wAv64M88asWnBSZAzP6Dmf4aK3UWdF1GuoaK2EUL87NN8TrbcHH6ogqRjWRPWxCGGwcV","slot":130031999},
{"blockTime":1650132790,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"45dfxrq94JH8uzDoXyR8kLE3eB7jU5NFuRzfFxedmGZWsYa9TnoCFoDwFv6UA8XhdcFdr7gemgitW6QNMR7PcSTD","slot":130031999},
{"blockTime":1650132790,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3rjEB1kXGcCWVEb2mb7u2QB5Hvc4rGYh4AjC6dGaFjY6ssP3j9EFhzzqocUSkBvGjZxvo5TfrkJdnvHAnT9HbhvJ","slot":130031999},
{"blockTime":1650132790,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3TdQkFixBeUXGFf7czUkJcaGzuLyHp2W9mJ6BVMFtdRT4VV1BLqtstNXWji5QbNvEnZpBpFys4ACyau4TbPnM248","slot":130031999},
{"blockTime":1650132790,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"2u1FmY4RcXBM64nxYqmzdMK4M5H6MfhrfT1aChewLSDPVCd3xx2HnZf5DdMDLHN1jxVZUcnZxZNs8RYuXQQWXsnr","slot":130031999},
{"blockTime":1650132790,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"228Ljen1tg7rhj49bU2Lmu1XMmZNhUAky7hLLmLaMszrgdtNVHDhCAWp6WyTsaEXwLH74CQrfiqMqTnjzswCrEcg","slot":130031999},
{"blockTime":1650132790,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"V4ZQy6efoA8DEnnjmLsrgfQyTu3PvodUWRRQdhHnQmcNP19TBguQFRgrsfypqkEC2bvMTeYTyRFFbvyHaY8AtZb","slot":130031999},
{"blockTime":1650132790,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"Nt78D8zTCNN1koTue2Euii92quWi7gh7ksTR4e8sBNmTtdGTwnfPcAr8CcgUMdbHXpr1y6poDwMKTczi63S4QHd","slot":130031999},
{"blockTime":1650132790,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"FjYwprxGw7ZPQB3f2wWJzgZrTY4oBLrFGuADa3bP1UctYhEF9Vpi3cyZTnss4MTfcCCsWQxuKjbuqKN2BFxrRuD","slot":130031999},
{"blockTime":1650132788,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4hD7oxDxvNKyjXvnZUhmZKSrC3ZkNhCHYQGDYTvUMfkBj47zEqiybt5NyaJFVkDKURKxE3XYWJf8vHnXa4G2qRVX","slot":130031998},
{"blockTime":1650132788,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"47FHGZ41UtGhAXTVFkpcYuzAmtGJth8sCbtwqBmfUR3RiCrPZdCKeb267meMV6B24SxQxQhtTNo3k35Jt5AjNdTG","slot":130031998},
{"blockTime":1650132788,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"44rAz2wM8e4LDe8FSRbBqWZEmraRroUTeUKYPprAu8cJDpbaJDf47vzGDqNi8UfS4otJHfmRS8YC6GHzUj5m6NTg","slot":130031998},
{"blockTime":1650132788,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3tEY2TpjoZ5Z6zxBXz9o3KKdXGz7CYUGfFJnBWWN3zLQ3GVG4xJ2hQzRorm6DQSYriPYFFYqgVtFCJFGt8fwrhno","slot":130031998},
{"blockTime":1650132788,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3qTND3ZdaFHciXeQTLM1GdYZ6H57SZpjnx9JoZjwtDgkJxfREVccQYtwNGgzFKkAFNVDpjUYUXvQ3QrWhuSok3RT","slot":130031998},
{"blockTime":1650132788,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"2xdmbsFg7QPGJcPYi2rgAWkKSK35PDnWtGEbPxZf4ok7NzbYhFcgVrjjMdfDtFkWkituTNfVrNHsYYBTeJmfes3e","slot":130031998},
{"blockTime":1650132788,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"2g2jwYFkW9bLXwjMB4rbuCbiDsG2UDu1xuJ2BUTdCHoEpM4f9iV25heewAfvXC8eRv2c1QDBdKN2a35oVP5ok7Gm","slot":130031998},
{"blockTime":1650132788,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"rFig9qYT14z2xvrNhcTHtGLxG3qyhVLhnVRTUhZvkqe3YdWKtjLBzZ3Cytke4UWFXxLySdruziM3Nsf36wFNqhD","slot":130031998},
{"blockTime":1650132788,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"abGNAhk5bsCn2QJ51BPgaS2RgygZex3niGa5xNc69JRGTy9LXr9mVAFj1qMadz649SPV9Rn5sRtRgmsA8T9yS8n","slot":130031998},
{"blockTime":1650132788,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"51bJguTNqwXyvnQgigfx7qr9ceN7M5sZkNfqYAWRDWjazVNMsJkVrwE71EKwWDaVB9HQuHwbR4AEc4SUqsLaHar","slot":130031998}]

Made the next query with until sig as 54nQjreuwRmawqo5xzuneGvfCYEDatgnGdQ288wK65VGvcnEM5RZfjRiSomRkP7oSgDZeKp6PnChezTaTtZZCKXu. Received:

[{"blockTime":1650132809,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"5oexSPS6EXp2HJpu9jw51Uj6fvNcsyag4jPByFveL1qCe9aapv4cpN78wAkTnrjhtqWkmfzcK3r99eH4KqRGY2ch","slot":130032025},
{"blockTime":1650132809,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4vyZmJaGjf8wdXMGLMQ46kGYnBqipyfe7m2JLYGmU68zPDs7pWGCvvLiRn92dBgz9aXz264TAwJQBKitM1PhJrht","slot":130032025},
{"blockTime":1650132809,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4rWZ9JuEvJqwqchcNK1e6CE1gGG49yY2yKpWbUvC1gjdPaK1KcDtMJHVw3Lja2FVTDjrhnZn2eCGK5C584WjzZCY","slot":130032025},
{"blockTime":1650132809,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"4TnN5xqy2tbPY1pZVmWMpPyGEkfU4ovSaxthfCH1nycRyP3P2F284inxVTwgoRwTzn3Vwr969RoqmvPcJjFjrycn","slot":130032025},
{"blockTime":1650132809,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3jc5UE1CWK2LJXzML63RNXynpMRcmpELkr3FgEMqjpNikt16dfSij9WG2p5sckKkG6b6G18csmVFJhVfRE6Mpe9J","slot":130032025},
{"blockTime":1650132809,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3ePuUT5o8t1BQVnqttncnoTLe9K7uo3Ab6tpFcZUJtaYvWitiiytLqvfZSYDYMSvV6zawsUsGFo578TmUcTYHWXs","slot":130032025},
{"blockTime":1650132809,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"2cGAAr5xJJTZh8mPgkhpztPn2Fes4j8SwdaWkDSJys1MUE4oCQP4MTBkCrtBi2d7j5p2xLg9ndvCYy1Pf8Vk6Rbw","slot":130032025},
{"blockTime":1650132809,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"2YrrGk5jC7nh78G11dLKxpFrd2KAB9gjFD7MFJkY8cZzevzz1FxkooKTe2J7P49Tc1QS23cGcwo2VKGcD6iTt3nJ","slot":130032025},
{"blockTime":1650132809,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"2CxZtjNyh1sxaAyv1Tc7EEkZjbRhhkEwivZxNxDTaveyQuCRuAhhMsqXpZWmSYhnGacZXaY84CMqVLjRtGJ7TTcX","slot":130032025},
{"blockTime":1650132809,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"yCWC2VNgjh28ub3HrSHbe9n5Zxma4dAGXY6YnMZJz9hHGLY2dLHtN5kHfm6Vd45KMYS4Qh7J7L78tejU1cBGVbK","slot":130032025},
{"blockTime":1650132809,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"WuhRaXBwT7duYMA96yyoqYfwNhqmAVBg8KxpJ3xq17bsaFZTYgeyKfHkidC2FGy7xCUVmYQN4P7TEvkAuyYXAjV","slot":130032025},
{"blockTime":1650132809,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"RdHRLibakEHETPAN65Ah7P48Pf5pNZxocBZrrtFm6b86zVnzwxaxQMJQq8RKw4yRDdhB2c6WvxLznK8TKoMEqbA","slot":130032025},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"67YxvHw55AXe2FHHqxdXTtpHztjqbJPhmZgj8t7w1NTYC44Lj6JK9hb918nMWmeLPVaCSC3nFnD9tokcef15pxxw","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"62vYgLf2TdMxqtKZi9kDRquLc2W6PFUXHPnNWbJcAEERDe6nmia2s9FWmCSpCXBdfCToa9SfPW59q92HJtRFkpsz","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"5xWEpvbHrgLEmTePyps8foVn6vJUfc6H5EedeUg2FHwQNw5pGNng8FiGUiK2YLJeV7pv87TiZJiVwKFCWdHgfVUQ","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"5pZMG5gR4Rp2S1dzZ6kbauApC3Rwip7cJ851kdG93tD2yCs2Ezizg8erDX9zeaY5L2Qbb3nBRHurVyvYmZ9zGiQX","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"5RxiSMHb8oogbjpsaGwj9LmRsKjzduTdbGSxMi1JzY93jcUcXc2TEvdc7V3zhcMVZgsjdLdazFfAnbESAahngeKS","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4V8rwnnRdKX2NBYgAT3cTiP5VMisH3gbPiXxp1ZWcuJ7iVkyKsuAUciGPsnUjEov3GzJmRbJ6EEBFEpg1qdq2NsX","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4Uv5RdvnxbpGXATspxyRCb7JX9Xat7tQ1sWvHxxTzuGMRwj64aWydmgd8wigceZ8hnPiWa35GZJQcq4EiLcyXCEv","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4GByDT3A9siE21bvfFes2MVPA8mhfPVNtqR4hgEYYaQDX8CJTANQ226hVKg1KR8MRaDWxCR1RhgC3nrNePrRnuoh","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"492JHsF9cRjxgQrtAQcip6rWwumXDMMNVae8WnkFgvBxaXo5zCbvQnAvxmid8ZjbAyrpBHXFZDKG1hn9ZjxufTFc","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3fm764s9toCaVGvxhHn244xDJ4txzBHzpDixFtPwHNAY9dYYCVyPtCdKRTtRedcpXNJRLEhnSk7GThPrn1ziY1Vb","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3PfqoboeP5GU9hNA6VEEqVF8aSxfCBuaVS4zdrvBphgNFwTtozZAGHa7jVay4qsiJkW42c8DpEWyuoHry4WsuWba","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3E2YvLfeZCH3uejKWLu9umgDry7FddoyxdPooAT5RFGiWvf8FCwC9nU8tf8n42gVcSDuFYR2E3QRQ4Cm7epGrU17","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3B8Gq68MjoXDmV7X6cdrHS5EsAmHmmzgNdmPtpEVpqukbPSH73PJoe4sMTuYUoVELafij921GdwRP4jZ64Soqrbm","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"2qTv81fuqqPpT1HqWhAF2rzUXZDu36tJMrmSA6okppTsyTLM7S3pzD7FZDXqPZwjtxEDFs8UP6vywqfQC3xfWrba","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"2NZ9CrdwprRRANTxi3W9UFUuGLbSqXms4xa6WmTcVpFcm39czaHucgkYGuEeorZV7hoCZBwCk22SCpfLjbon2pPs","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"2JBZykauPDHEvdcQLeEptoVUUkrZKHWbZmh4XQsc6xjPeS6e6NF7dRx2GoEzbgQfV8CgcDEGzqc9K8qgfxEYY8LP","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"2EjZW2SVVxXg77bjyT4NU525396waq47XKhFxGkcuvfWHmfjRKDYdJehkFEZqzRsHJiVp1NRUcRu8shxf9gLJvdm","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"23H9QVs3A3gnbGPpVuJQoMqtvP5Qy1pkjdvyoAhKvdyJsMnDXzYBmif5gWogBmD3mZ2YDZ9z7axFpC9rHUihce3F","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"zvxLKN7gdqWRE5FNzVYNZizR165XePZ4Ni4ENA6eh8uW6hnjxHee8YjUWYk2W94MDHTqstPf1jFxpFfdzgFXeow","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"md9PKiUcf8mmmEYC9wUBhE3bTXaDKUe5vPwCLnTHCSfei8DARoY7LrtdJN66w65dzQbQTpJmJPt9tggLo8zF6hb","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"cYGjJroNunT7kLN72om21rNvZTxbB19n6REZKrd7EpGV1bZ9jARkCMZGubXJ6kRtC5eY3WALi12m6qAJgUv6Qt5","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"ZGiwb7t3hcNvD7ptcRNbC2wEVEekyncDKcN6dY2A6BYx1atQENn4P4dLBDKmHMqcFBi9T94w287JExrjD6AyNxn","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"Fu4HdEVff2W6mQemJTQb2tqhaobQXQ5ZCuf6Y91GTkYTu9k8t9usoPZ5TePqZs4qU3gTmqksgT6UT15ZhkaVxga","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"AM491a9keLTUDdzuJkBo72TbBRvZQUPd3z9PZwtz1dx73GztSNq4CnFVphHQcaJqNjVhTWSWqTP2km6niMofkuZ","slot":130032024},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4QFmZ8H9YQS1nFGsPD2dZheA5hdaoPPbzzydqeVLr6Gnuvz8yaaLhP9EbYR38ATazruqhVYa3zzGhRseNrq2dEfk","slot":130032023},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"3dL5Z7veqCsL9ywkeeHSEMjr5SasHAoBtwHpV196T7Ru1GdHGWHv6BTEWEjyiWSZG6fqwJpMUxqPC118WzNTghpq","slot":130032023},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3S4j3Ex1j4bSzgin1A553pMTWQnpp19PUxHXzApNN6TxYbdycb7YQY46jXxvu45himbFsdQiPJ6k9XZUGWr4kENg","slot":130032023},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"34ygKPipub3m6uqojoymmNwjdEHTLoLotvAS76hDFqnSCik7mZjJ8yJj6SjopHezFuN7SHjgMQpaFnCY4wKPMdho","slot":130032023},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"34wtaKviTKyhvV2YVVHuXSeJ8MqxM9UNUjvHfcQsmkrSZKASxaz7ZBCG3XY81AT26mBP1GGgAiFRL6D8Yy6EAjnL","slot":130032023},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"26XtySQf17xxXmw7c8TQFH91o9A6yLyFiy3WSmwRFTMnKqdRofieMF8jEFpdNbdxR7Vr3kbXeXLYb67YfYiZzYiN","slot":130032023},
{"blockTime":1650132807,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"UtP96q8E2ULrajZ6PSP3KSGQ6ScscpCmzyZGYBF8C38VjSWshtkxnh7Hpj6yqsM1iPXzrTzrCYqSBFPTTXUqKTm","slot":130032023},
{"blockTime":1650132806,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"5kymxTkNn3deWvUzbS5YFGJJFmgpbEL6ukx2LDWxkqYKue8TSXoXZLPz6ew6n674HH97ESaLeuzNFB3yQAU9Ntsa","slot":130032022},{"blockTime":1650132806,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"5Kq4ySmxQ3KJG4p5SEyYJ2GgAYRiZGcPg3KL3Nczf9RDmudhQGiXBXgH9gASQnnxqJdgHoVnXtA9tYB266aekBYz","slot":130032022},
{"blockTime":1650132806,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3LLSHaioac2pu3qNnUEf9xHsXjfLJvCgUKCkVuHaL7ERfaGAQTyMKhtSDxW1rsNvAEgJqDisMWuVcsGV4HsJ8RpX","slot":130032022},
{"blockTime":1650132805,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"5megvtTdmMq2cwCLJPZy7xXfkShva1zRiMDxKyeEpcHwBogfaRDabE5RWhjYmZU9ZhLJonaxxJzawqge7myw8FCa","slot":130032020},
{"blockTime":1650132805,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"5gvGHuis6owp8XZDrxMmrAY8arY2y8wFiEbg1kxw4dN2okfJYT7yjZQByeSBHjVny72NaEezT1gqRfnJCttgfhke","slot":130032020},{"blockTime":1650132805,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"4eayvtUtwgQFj6bjoj9jZKDW9bj3dJ2spCDzgMgtg1yJ7LnQVarUTUdU1EVAoZ17hNsYuL63VEkPbGZVaCrPBvpd","slot":130032020},
{"blockTime":1650132805,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4bsvYLZVM4Vcq4YiMyWaq5W4uQc8CDfHMkUQvyvj6mT9cTsbxkgyjGwxh2DoBZV3tvuShB1Xxc9TkSfwLraZYBLY","slot":130032020},
{"blockTime":1650132805,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"4ZTJckKYHEbUu9hmjE2JF4YZAcbiQP4bCXUXeyNzCcZbkqPkDj8qNi9HWu7KQUTHQLKouU1m9uQiZ3f9QeAHFk2y","slot":130032020},
{"blockTime":1650132805,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3JcvzuLb9Bsd2PhpGxcMHcCrxaLDhYLHD8RariQScjAc2sEU5pV9xavFKgR4V2K2jy3EMFrbVgFgYRfmfGsD2ofE","slot":130032020},
{"blockTime":1650132805,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"37XQLNXAJfK4acteKiFWY7iWmK7do2PhUiEaUnWjoe7c1kb5BckUDr2F1uKhNiYhuv9FgZzXAzLsmjfCGf81mtxm","slot":130032020},
{"blockTime":1650132805,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"2WQ1QcTZkXXuNDH9rDmMriq141Td3qnnQWaPgyaDWo3pxp7DeZrZFptaNY99cvP1XrukVEfc4LCMyZ5SHQGgyyuG","slot":130032020},
{"blockTime":1650132805,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"2KpsjDSDJvxi1JWy8pQPs6Z7uzYUD5fs93KTWu6dRXFoidivVdFejw1K2B1SuJ6JjUmiLSHHJoBsnj3vUDnZcLnM","slot":130032020},{"blockTime":1650132805,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"JT83KKKCMkAfo26z9wUwka8k57pxAG7LXBEjdEiX2WwmHAnZBzMCQ7P3fXcp8BuCRTB6NX5tXZ1hqxqkb8twEPt","slot":130032020},
{"blockTime":1650132804,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4NoRW6CbfBAj53xZ8qAGVf6KJiD8o1grPtMQhHWeAYobuDbst6G4fZ6Z3suX5Zv6BPUAz9EqP2i1Yxiuzd63oVmo","slot":130032019},
{"blockTime":1650132804,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"2GNzSBrc813LxXkRVmBUyQ9WVoCFXxtf8maveA2ckEejPe95WevRaLpfkHwcD9qKBU6wNoinuvnPNKsx7qh3y3Dd","slot":130032019},
{"blockTime":1650132804,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"29nBbPg1M42gQSCUg2BmNRcwfuvL4VjR9tWYSiTPtvyki2MHfyejt7thhww94YrfaggZ9mbNyXhReXETPnTrdJir","slot":130032019},
{"blockTime":1650132804,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"gPLVNMfUWX66rfXf3SymbabLGTD5ztm6GnaF5DxaQjPGAsZbNwKMWcjqeb14x5Ypc4C9Cp1oMvM15wxCURTLyKx","slot":130032019},
{"blockTime":1650132804,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"VCxvcfY5tSUUjE9s7PgpzpWU43EqTAZ7U2BDiRXGenM28LTU15JjvUiAAFwzWnhV7nyoN4tXafScwQdEmcJwekt","slot":130032019},
{"blockTime":1650132803,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"5rQD3L41k8TPRXyZ3HuHihMy4xsWvwfNjh7Mg3f1hNNNsmDkrm5a2upSj5qBgeUek99PCCWYQa6vMWKHfjqdnTxT","slot":130032018},
{"blockTime":1650132803,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3otU3odod4TPLire1t3rEezgE99SmCtnkpTGd1mhBKMczhhv2eV1rpNcuUcZWrAN6AHhxu96CeJsfrzsM6ktBXgY","slot":130032018},
{"blockTime":1650132803,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3Uy2WSTGbT8mDPETciD9pqUcxU82gGzEtLwhdmmDHAXpCrbqEyV6u1DGooMSAVWxZNz5jL2JSpS1vFyQrJJnS71M","slot":130032018},
{"blockTime":1650132803,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"31MHkK8rqDBk8ZxuYyNdKYP8qyt8ku1KquKmuDFQgQthZ9rMWx9gryhASGUCRy6Ce6jbRdwVWhtGvY28UeUnVNUn","slot":130032018},
{"blockTime":1650132803,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"2vMnaYTHCGJRq57iQzoQmiTthXeV6gT7NTKvD3pmPnHY1UNLErKT9Za8DeaJST8eCM82wmQEM8VsVLpn3jTfFrbe","slot":130032018},
{"blockTime":1650132803,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"23PBrvrFbHY5ptskMKABAZErWpXBSS6ocrWuD3aKyVY2BbvitBF4Yfx7yNk4WaffXYn9wwsSbqDddvkaeGihZ2aE","slot":130032018},
{"blockTime":1650132801,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"5zFgtG5C41qeKKRV9XSJQ43uPU2vGEC6MF424A3hzhPdvYu2WEPosciKqdfnxNo8v7eHX3HYKj4vJhjreon7fr4E","slot":130032015},
{"blockTime":1650132801,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"5mCTtPwLDWfakdYmLc8YvbAU5po8A6cscABP7APMxAb6hAQuXJz3HMy3GqZS5g47iZByQoYxn9y9UBWDGbJM5jjX","slot":130032015},
{"blockTime":1650132801,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"4zYe4BNeD4o9r2EVgJK6i2vHGsAxCY9YkfH4TmgNxBLP4q5Vw8J1jLuuYKuwEoUaFnnf4m9h229PAn2jDbePTH8W","slot":130032015},{"blockTime":1650132801,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"4uu8ea4QTmU4hhmw8jeDhgzgx9hHwU3Z6TogEzQJ9yQj9VichQrtyc8WHY5yrKzqDYtpPRHVEvmDqDALXTZJjnCF","slot":130032015},
{"blockTime":1650132801,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4h91Sp2sgkEwQc6mWPboxgNNAj8aBMhzViMUPSG7UUu6JvqKmZp9uiTpoiyhxWFSqmQ3KxWjH4AykZSH9yXn4MPw","slot":130032015},
{"blockTime":1650132801,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"2y95UKZ7Dpae54LaAuJnv9kJsabPt7yLzPC71ePinwVBgai1yrVsfkB6xfV2YGmvGidULo7SgEnGP8fKg4fuh6uC","slot":130032015},{"blockTime":1650132801,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"2LwYitT4dJzay5mCekQ8Uvy9WVn8jYX6nicuRhyqtrkS2GAzBjgqg5ni22mbpUTKGwfSFsVWtmLdpFzF3PWUuhNx","slot":130032015},{"blockTime":1650132801,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"28d1iNFV6rpwPhn4n6HDnCzAtDVnsnDGoZeiMDohdG3pCEEHy4QWb7x5yC9DT2AC6X5cr6ZQiVZQpNfw3ay3BMFb","slot":130032015},
{"blockTime":1650132801,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"PFrdg4YWhc3uBrTEtsW58oZaCw2YCQMHpsMeSGaYgSWCPgb87fSYLFvxrjz99VwttFGtXsDDWB7abVtfxEsyFQL","slot":130032015},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"5nXutobkAXDqpS1diXvZ1NXshR5Qjw481YMsDMJybLkU5jhUNkzUH2E2ZbcnSAjWwvSPP8ZB2jx8FvuV3WVEpSaU","slot":130032014},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"5bvNxSd9YfnsV4Qtv2SLVxFTg7LaL6jChgQdhxZPpqXF4aKYiRSB3GL2PjKZsStYYfZAP9CPfd65Z3tmmzwCFTGX","slot":130032014},{"blockTime":1650132800,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"5Rnkt4MGZk86ha21ZUp1ampaE1axr9PJxGKfejrgrBDYqvPBwikd3W7Hp9n24pMiQSrnvTk79UvodNLcJsusYq4V","slot":130032014},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"5Bpr93BiegRm5wAtt3y5HLRFvxwwhmeAUZ58yqvY8thExyc3k35fMCMvehEfxGkqruWY16tyCPeML9YxfkWQbncb","slot":130032014},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"3tCwV9AVnPyA6KTbjh41wFZYG8payRGeuhM9usPQadyy2R45BuaizAH4uxt895JFb4TEZW1sVNMjMncMJjWYWknq","slot":130032014},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3jxB5MfGUgoYDoYrdpAymEXuG3bzu5HyWmTgEiS46LVaCGTruRgeptsUS4QuRf5QXWzmYFHLtaQPrz5bEwLEXzou","slot":130032014},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"3e2VELJx1SsmKaTFydhM4FSXAbPPCYkMvgE3JNwyWgo36RVhdy8tpPff9UdaRMLPhnRikvHyww9TJ5jYUE9RdRu8","slot":130032014},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3MfzQepV1bX6DYEhms6uybHktrDbrSHqzEsnwKJ2JzEcqqcL94YNdJBzXaWRSWojg4xUSydgD4KccynzzAYzFbwf","slot":130032014},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"2kadAatN2R2vUf7aZBP19Rg4aDWgbkc1KNPab65KQUQ1hsD8D2PJen1EhWtnPvDQ3AVicjxqUcnDsTmr53vpMhWa","slot":130032014},{"blockTime":1650132800,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"2KhMkXm7HTFLfHCw6uqFRSJfbuAHBzjUvR1Lyc895tqgJxmuDrkd9YvKnXTmLs2P58EHYWnXEmD9dH77k62cf5Xp","slot":130032014},{"blockTime":1650132800,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"29yHpu4XQUyKdDVs3CryWutwWEpjs2yyGg8DRaNHFTU6z3rRBnJM7KC8YbfCCZhUP3zZ7jNWA8kNkc72qcY5EfnL","slot":130032014},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"29twVAroQiThn8XpiJiFJgnCcZCQKWFpwLs9efo2wC2DHp39y1XoW1sfiNoZQPHVY5KdGQ1PqriTJCeJjwfUwCci","slot":130032014},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"iMJm3wB2D6jWvp8KdcP45qsGEpX2hdFx9sgKja724wR4nRAY8dTvrmkQq5WduxHQyDcCSVQpBBGMCuuV4beXL78","slot":130032014},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"PrvrhrhpkcDLUyR1AYBfNobHPcxgeRGsEN7ntPA9PYiLwSJAuTRV9be9s3hxNtyTmbPGRF8rhJMhYDm6z2bYacc","slot":130032014},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"5VDKUoGL9fqLcL5dkPa4MxLbHbj1U7YVPiXErPoa1KPJvoKdBmG2vccEFCxFtEAZ8bsdQ8fyViiQthxGiEqoofgA","slot":130032013},{"blockTime":1650132800,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"56vY3fKmkKymURdfduytHqSAoPqqo9RDEaik9ff2hnFYRp6T6E2LhpqyTwkS7H1XHzRqxMwjM6RTy2koiwoFtvus","slot":130032013},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"53mvs52gUwTv18LtntAZ9mUKgyNvQCPNgZhQpgd3dnWzpW1th2WRS46jfEgciuJQbW5hP7g2X4Vx4LEaxoQd82Ya","slot":130032013},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4bRRVWeQp6U53M8Y1jaMfXPaZr19dFgSEBoqHx82nxQxPXKCTh3ZbMHRPnTRhUfNgnwYQ8c7dsQKjgtNUjQzTEAf","slot":130032013},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"4ZNzdB5cv8VfEMHRtwbGbhycgP3conRtutsmnikFm3SFgRXj4PpfTwm7wz1dKv48gHR2MvkGaZNBg8CiJ7jKeVNg","slot":130032013},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4E8S71yNfVrBgaCkLPH2Jfkrgran1PKYMAsCqSksHUNHMaysGDGnEqaLVk4da2apHHWdejuN7bJtu7Esq6FXUJC8","slot":130032013},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4CKehCiya2UvVFN9m4oSNF7TtoBs7QtM3wNtMqSBhQaZmZNg1vD8bbnq9YUgQ1onFg6FyCcijekZjZ2FMsPpMcSg","slot":130032013},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3WqwZnH2HQm84bMs22yYfKZ1sthKZtYcbUDV3CGV1oyc16ZF32qDiH8H2qTcciugZfDGh6kqfN9s6frJX9NQqDnL","slot":130032013},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"2D9UbZJKWLeXKtsPUq1qAUq5XsgWkXAJM4atzpYhbgK4SLb8JSnFk23NNZP7HBNnDVFSqAa3W8qWQLG7Ybr6RnTd","slot":130032013},
{"blockTime":1650132800,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"FEDJkKHbJsUfpJbpXsYuzmrkytq6V3kJ9YysRvoASvH1UPWGinU83uG5MBmB2i7BxrHFYUiJ79XLVKKddRmkuZ3","slot":130032013},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"5HDyP9R9bBUdHy3V7AW2xsYypfD3ovsZttTj3kXaPJmi94Akbj9RPyinFzEZojMYvZ7jC9KG4cQoFWi52dn97iKV","slot":130032012},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"58Vsig8StHpejuvCrjdmYxP9RsWAEz1sJs6Yx9xHAjx7y59wHQJcLnBTPgzjjcTY4SCcjSrQAZeBvE4xmEcFDait","slot":130032012},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"55ApXnAG8vaAJGojh8p7A9R2T1HTwovdXfDL1pboTLER6zJjUUMszk6ZeBbjpqrJBdKYXX7Zmi55vtqfQS1P3pTL","slot":130032012},{"blockTime":1650132798,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"3saoPAAuKHxfDNBP54AmC3B2QjsxqMKPT848CTxmVnNGxEukaQiZfTQ7vvgmCsckE4SG4yvY4AovokiN8jDfw2oh","slot":130032012},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"3GsQKEttraE5W8DpRoPdXrBBz3S8ZyRm1343d1V3SWBUy76j4virzam8E4PL5eERtNVAoAyqaN8sNXzYFXo5kDhG","slot":130032012},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"2x4Vs3XVZQr2RtnLHxERKhPwNNgt8i15yYK5FSLkxWXnyjWcg81aniufY6oBW1qJJhCFzKMJSpv7BNdzDMNquktu","slot":130032012},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"2tkZYSjYYdNqLZqE8XpHvqs1KNwZGD9jcDrCLyUrD37Th4yhKRc8jn3HCvpaj8p1hDAo9D8Sd4UxhRaSeoG3tV3k","slot":130032012},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"2dDZLLUTqidzoT2Y8xrR6dTad8auH6qGkSfSmx9d1T25XbcYKvtFv8vEfCLtq5pGQ5dsXGqPJkBXbZMTDMb53kAg","slot":130032012},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"2CHQQ7tyF26Z5kgqUKr5W1KDuhqsfEpTmsPSYhX71u7YsUqBAvji9B7EbGvKznXgU3rxxT6dp53bgErWKeA8B1U8","slot":130032012},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"22cY9QsK9nmX5nXn5fTmy7yfn4YDumnyAy9yHu15T8odxdEpCLZsUS75KzYfbLt8WXaL2Lk9DvhKTFPBzYh3TudW","slot":130032012},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"5j43k2mmXytS3B8RJrGdF5Pq3717oEtB4zfNteBrzkMmv1NBoc6LE1cd5jqNHJyHMD4AaAAYZvyioTgwUTMaSz3Y","slot":130032011},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"5KnqNKNqDYWgk7twFrJpnLLW1phnGvMBkhjSPx7NbfBt8Q3BqvLbA8m8cprhZGfXe7k7AQSLNjW8PdPtSfVpYizM","slot":130032011},{"blockTime":1650132798,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"59sRQ2zCHZEhhYyjK7kfHMQTtVC2LYWMduqNM8qQ8JPRqFhbgqgL16uDErBbtix4znf8DxuGLZSFWiy2eqfAKLHM","slot":130032011},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4WGTpb6Q3LgKv3mYjo6HY332FKXCB4kd2hMSEoanyCDp2YrLQyoSQbjQyFgkgTYhAn5NZGXix5Lwmc9pcWTXUPpt","slot":130032011},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4U4tpWd5KF2DqjYrvFJPeWN8jNoT17MeTezxtqdHGySDomTSyKpnUVYNPgNJwMKGT2xAPvftzGwunwiqVvD1PTKa","slot":130032011},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"4RYzNGjNXmToL5d7VzNSdyJxwtE9p7PcyyKj2ywYihGN56F8Jo4PGEptLn7s4hBy3pQrtpwdCm3wVuQEchfS3E1M","slot":130032011},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4PfgWpWhBWwSXJ2vBzqRWZrDjP45pMnJUyLTCd6QAphi7HEzAX2zFQU3fX4SLvSJmamiVDvq9Hwcd83MJjEgwDwa","slot":130032011},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3vkoBA54mDToxCVLz6kMZ4YqUhyQ9umWEci1W4qDTpQoB7kHM4yjySd271DkzWLQWRkPgfz27qkGDbKYJ9AFUGHG","slot":130032011},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3s2JJHBGYrQhdMoRrGUBxDz2N5sjnEufrCv1UbAcYWXeExZgEabsebmEoyYkRcHvNDxEs1sAAruhWCqRTfotqdY3","slot":130032011},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"3X9xQVZsCFU2vJnoJqBvxmc3YBpjRUKbCGS7p2VpUDNLpXsXCGsePNkgh5ap4FmfmBDcvCDXUcCxiSNbMjw9u9v6","slot":130032011},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3J1TXaVF1antsuA5KUCWjhUk6nKLRvfSs6yrDsbCGwSjxQQ1MWhbjo4i62en44ZQ1jRCZafXHtPvvcbNMV23g2Y9","slot":130032011},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"2vxwW6CpVnWugiRYcmd7hqzymuyfLD9UTtBeHj2pU7EEL1N9JdTXqhrRUqXcnFdvnzR2ryFMoRqF5NTfoPALPUit","slot":130032011},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"2to5sTm9sk8mRxYY8TdoYCSwhPEdsCAdWzzs5i9rZwxAcnd5pTyhPHwsfh73WKTJGdWoudidWU2hffGNyLZiaj3s","slot":130032011},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"iWVxMtrVouhpteCNe57auBZrmnogwvmJaRf6x2KSLpszLSdh6mxf5pxoX2RxcoPF6dEdYXJgCkY23dKxZhAr9Pz","slot":130032011},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"61hYa1z9ujKBAxvG4bzNYobCND5nvmrnE4zdBjrfSPzHeq8ymNvdKSzjCmVaREubPiULLW897B1bu9NXi5txB8fC","slot":130032010},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"5sZi1cBHEWjwaHsmmdy2DiJ7JdsCfNDN8tWcgeyi9XMXhu5QUAWohpKgaBTtYFwHA4zPJyP5nxVdmfvS3MNiLHYY","slot":130032010},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"5amhrQLLzi96F3AtmZhPQzEo1iAVmiUogLSPJ3xn7eu7k9BUsmJQkpNRSfkjEjs2V98XiQy3vDLtSqWE4h33Zzd4","slot":130032010},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"5DpNDfzR9N32Rc2xGDKtG6eBCpnci3bGYHFwwfBmgo37hJJN42syk8NDqrdfxfTQLWRcRGycc4pndWt9NUMsC1in","slot":130032010},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"5Csyx1TMcH6EMGjqm1yKCSwSVB2RA9f8G3ojVaY2CVBdsSup69ubcDJgsYjevdrPChJuDKFjbpLBsJH99ys43zrm","slot":130032010},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4xzT3FB4fmZMHuWqYzBfTEZWpP9NYYNuYzes6PTdEw4RZo11cUhQw9WJy9Hk1Y1BdzumYkNA2RpwKrrqvAbsVkiq","slot":130032010},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"4DwbsGWy6QL5ohyyztfLJCKrr2KgMstVZD8cANJcz78r5wTDtRxHQ7NJPMcVnWDv8mB7pnEQeZa1ta76U4du71YM","slot":130032010},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4DTuCidSU2xCmdTzRGGfZK3a7cgcZA3AgptZj6SkF1L9vhWrY2XLVBJJK6SBvyFeRii6oojwJFbXxaeqkaRY1mKQ","slot":130032010},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"42ZJjeJ1NJqtj27Hh8rrR2TPfaJMATBJrdL8pfSUtqdkp6towJL1Ug9jo8JQKn6SDXdBEN3FwJLcwcEj3C3nytZB","slot":130032010},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"3hd4rR3TWWPNGcHi9nJ5UvmGTQbg1DAgMYBqkG9GhzVAvzErcYdt4o6SZFF3dMVLznKXjqAcazgH8ZTp3c5g3PXc","slot":130032010},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"64raoWoGdisXxAhe5YEfzeN3ajeqd3Wn4addu7VukEBnC8nhtjKTiQi2BtdARPSzP5wY5RG7uvLoSchdHCcFTEq","slot":130032010},
{"blockTime":1650132798,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"48htNYjPCpntzRBNmZTQBmR7QE8zvPyYdc2fu1nFTSP54KKrA1SZcTTsHKNyzXDHHJvhTKb3M3xGoFkKmEQ8vuV","slot":130032010},
{"blockTime":1650132794,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"5o9An5JFyZtJd9xqX59WYUGKMEjpztxMnUCQbKtrZYknP7YV3Rigtwb8biPLEe9Mypq18VHzadp4avks87LqZgat","slot":130032009},
{"blockTime":1650132794,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"5iAdGVQTKDH3tevqYVtnjnp4VrBpdhRosqCKLyhMouAFMcMR4zhsPKdb5WpY9ZxH2B1mWuqZQyst7SaPEe98TeCH","slot":130032009},
{"blockTime":1650132794,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"5X4o5mgw747ytF9PJYFGFahPPA9uFJ2GPg97MZgh5fzKbaZ5No9mn3jXYwTeVSooJuQTyoWQriJgEyT5ntbYfqgG","slot":130032009},
{"blockTime":1650132794,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"5QhcmvX7dF2KufkJG7gTxiLeNDvzXaFUMVJjVMyowuvpWsjTkKPwiZRYceFfjrFSnwKKKEG2xkHiDuDHSTUsgTKq","slot":130032009},
{"blockTime":1650132794,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"4vnQXjkKCVJp5yh9XJZbQf3j3bkmamjMts2a2bv1x2SP9b7uqjk89hgBXVD8n2rSHctPRfvnNXdiQgUkcRrpFbTW","slot":130032009},
{"blockTime":1650132794,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"3D75LVNFfibeiX5pqB5tLsiK86Xj9HzpLZsBiEFiFJBpn9RZTp1o9HVza7VkKbeUf5BCxwhfW29XtXEjpEhEbjhu","slot":130032009},
{"blockTime":1650132794,"confirmationStatus":"confirmed","err":null,"memo":null,"signature":"2dr2r2AgLHvnrX47micVSYP8V3xh1oaR1VcvRJvVVKSpe41DR6D9ryCYLaRgoGvpTPkibegPo6bzevQHycaSqW7p","slot":130032009},
{"blockTime":1650132794,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6021}]},"memo":null,"signature":"Ut2xM2xD4o3JshK4or38W3VVRehspuq13sh2bi3ZraiSLY7hq2od9wgfc49Z9J3ewucfDbiEiQJ6X82jGjf9Lk5","slot":130032009},
{"blockTime":1650132794,"confirmationStatus":"confirmed","err":{"InstructionError":[0,{"Custom":6017}]},"memo":null,"signature":"H9XNevC2UXUEkziB58mNouUA4WMx3qRk3uTWe9KEao1GhJJUE3gcBreMAsjrjZhRp8rvtFnhAaF7YQpqw9pmoQG","slot":130032009}]

Made the next query again with until value as 5oexSPS6EXp2HJpu9jw51Uj6fvNcsyag4jPByFveL1qCe9aapv4cpN78wAkTnrjhtqWkmfzcK3r99eH4KqRGY2ch. Sig 54nQjreuwRmawqo5xzuneGvfCYEDatgnGdQ288wK65VGvcnEM5RZfjRiSomRkP7oSgDZeKp6PnChezTaTtZZCKXu was in the returned results. Don't have the full results though.

@thekeviv
Copy link
Author

For #24417 (comment), I don't unfortunately. All I know is that it happened again. Will run the tests again and record these to let you know.

@jstarry
Copy link
Member

jstarry commented Apr 17, 2022

Ok, if you are able to reproduce again, please sure the results and we can take a look

@acorscadden
Copy link

I think that I'm running into something similar to this. Sometimes, getSignaturesForAddress will return signatures that are actually before my until parameter. This makes pagination pretty difficult.

Anecdotally, this happens when I'm fetching transactions that are "near the tip" eg...polling for new transactions. I haven't seen this happen when I'm backfilling older transactions.

I'm using the "confirmed" finality parameter. Maybe I should be using the "finalized" parameter to avoid this? Also, I'm using a GenesysGo endpoint.

@acorscadden
Copy link

Real time follow up: I still experience the same thing using "finalized".

@thekeviv
Copy link
Author

To add to the comment on duplicates in backfilling, I think I've seen some duplicates in backfilling as well. They are rarer for sure but I do recall seeing some

@acorscadden
Copy link

I've been able to reduce repro this in a small snippet. Here is a little bit of code that polls Raydium's address for new transactions.

  const address = new PublicKey("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8");
  const mostRecentSignature = await connection.getSignaturesForAddress(address, { limit: 1 }, "finalized");
  const fetchOptions: SignaturesForAddressOptions = { until: mostRecentSignature[0].signature };

  while(true) {
    let signatures = await connection.getSignaturesForAddress(address, fetchOptions, "finalized");

    if (signatures.length > 0) {
      const firstTime = (new Date(signatures[0].blockTime!*1000.0)).toLocaleTimeString();
      const lastTime = (new Date(signatures[signatures.length-1].blockTime!*1000.0)).toLocaleTimeString();
      const firstSlot = signatures[0].slot;
      const lastSlot = signatures[signatures.length-1].slot;
      console.log(`${signatures.length} new sigs from ${firstTime}:${firstSlot} to ${lastTime}:${lastSlot}`);

      fetchOptions.until = signatures[0].signature;
    }

    await new Promise(r => setTimeout(r, 1000));
  }

This loop will happily plug away and find new transactions as they come in and log the following output as expected:

55 new sigs from 8:15:30 p.m.:130359880 to 8:15:28 p.m.:130359877
31 new sigs from 8:15:31 p.m.:130359882 to 8:15:31 p.m.:130359881
64 new sigs from 8:15:35 p.m.:130359885 to 8:15:32 p.m.:130359883
64 new sigs from 8:15:36 p.m.:130359887 to 8:15:35 p.m.:130359886
14 new sigs from 8:15:37 p.m.:130359888 to 8:15:37 p.m.:130359888
32 new sigs from 8:15:37 p.m.:130359889 to 8:15:37 p.m.:130359889
20 new sigs from 8:15:38 p.m.:130359890 to 8:15:38 p.m.:130359890
77 new sigs from 8:15:43 p.m.:130359895 to 8:15:40 p.m.:130359891

However, about once every 30 minutes, there's an anomaly, where a bunch of older transactions will get returned as follows. Notice the 1000 transaction results that all appear to be the same.

46 new sigs from 8:21:47 p.m.:130360521 to 8:21:42 p.m.:130360513
8 new sigs from 8:21:48 p.m.:130360522 to 8:21:48 p.m.:130360522
1000 new sigs from 8:21:40 p.m.:130360512 to 8:20:16 p.m.:130360362
90 new sigs from 8:21:51 p.m.:130360529 to 8:21:42 p.m.:130360513
1000 new sigs from 8:21:40 p.m.:130360512 to 8:20:16 p.m.:130360362
263 new sigs from 8:22:18 p.m.:130360576 to 8:21:42 p.m.:130360513
1000 new sigs from 8:21:40 p.m.:130360512 to 8:20:16 p.m.:130360362
276 new sigs from 8:22:20 p.m.:130360581 to 8:21:42 p.m.:130360513

@jstarry
Copy link
Member

jstarry commented Apr 19, 2022

For "until" requests, the RPC node will collect signatures until it hits the "until" signature. When your script gets the following response...

1000 new sigs from 8:21:40 p.m.:130360512 to 8:20:16 p.m.:130360362

The issue seems to be that the "until" signature is not found at all so the RPC node will just return the 1000 most recent signatures for an address. Note that the most recent block time for that response was "8:21:40 p.m.:130360512" which is actually not as recent as the block time from the previous response. So this leads me to believe that the your requests are being handled by two different RPC nodes and sometimes your request is handled by a node which hasn't finalized as recent of a block as the other node.

I think the best recommendation I have for you is to ignore responses for data older than what you have already retrieved and retry later. Otherwise using a single RPC node should work ok

@thekeviv
Copy link
Author

Thank you!

@acorscadden
Copy link

Thanks jstarry! that makes a lot of sense now. I'm pretty sure I'm just hitting a clustered endpoint.

@jstarry
Copy link
Member

jstarry commented Apr 23, 2022

Happy to help diagnose the issue, I've created this issue to come up with a solution to avoid this problem: #24620

@jstarry jstarry closed this as completed Apr 23, 2022
@arturferreira
Copy link

arturferreira commented Sep 28, 2022

I'm also facing this issue, when hiting the same RPC (tried quicknode, Genesys Go, Ankr, etc). Also they're the most recent transactions, but hours old, so everything should be confirmed. What I've noticed, is that when this happens, the transactions belong to the same block.

E.g.
Tx 1 - block 2
Tx 2 - block 2
Tx 3 - block 2
Tx 4 - block 1

If I do a getSignaturesForAddress until Tx3, it returns Tx 1 and Tx 2 (correct).
Then if I do a getSignaturesForAddress until Tx1, it will return 2 and 3 (incorrect).

In my example, both Tx1, 2 and 3 are 5h old and I can reproduce this consistently.

E.g. Transactions
5zCk4r61KrxS6wrVevGfM9Si4E4mStcNWp5fdYVKH1dR2Qia59sLy5Rf5WHXrZ9kYhjHiVcEVnqFzeoK1AiUN72P
3UjqKvrNDaDexj41c4fQmmfFMkDeEZox2XNWr1bkuhcsbBiKSgsCoQicf8SaQq2Vk9wwPha4PiGuWvsKhQpZuzbF
2YJ2Eb192NZbSivMyZsu75ACzLqgFBRoLHAVcp1MRndMTXDZdwgqGuVeyU4cRYh68qVpWpHMty11f5CwLWuy4c4p
on wallet https://solscan.io/account/Cngze9zz4nRuzDcCahEprRdtTvH7mFG3fb1Ys8bU4H5v

@jstarry
Copy link
Member

jstarry commented Sep 29, 2022

@arturferreira I looked up those transactions and your stated tx ordering is incorrect. I found that they were processed in the following order in block 152750258:

  • Tx 76: 5zCk4r61KrxS6wrVevGfM9Si4E4mStcNWp5fdYVKH1dR2Qia59sLy5Rf5WHXrZ9kYhjHiVcEVnqFzeoK1AiUN72P
  • Tx 330: 2YJ2Eb192NZbSivMyZsu75ACzLqgFBRoLHAVcp1MRndMTXDZdwgqGuVeyU4cRYh68qVpWpHMty11f5CwLWuy4c4p
  • Tx 757: 3UjqKvrNDaDexj41c4fQmmfFMkDeEZox2XNWr1bkuhcsbBiKSgsCoQicf8SaQq2Vk9wwPha4PiGuWvsKhQpZuzbF

I ran the following query for each signature:

curl https://api.mainnet-beta.solana.com -X POST -H "Content-Type: application/json" -d '
  {
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getSignaturesForAddress",
    "params": [
      "Cngze9zz4nRuzDcCahEprRdtTvH7mFG3fb1Ys8bU4H5v",
      {"until":"<signature>"}
    ]
  }
'

When searching until 5zCk4, 3UjqK and 2YJ2E are returned
When searching until 2YJ2E, 3UjqK is returned
When searching until 3UjqK, no other txs in block 152750258 are returned

Lower slots and lower transaction indexes correspond to less recent transactions. The until parameter is applied to a reverse search so the behavior looks correct to me.

@arturferreira
Copy link

arturferreira commented Sep 29, 2022

Hey @jstarry ,

Thanks for your response. I forgot to mention I'm using @solana/web3.js (am I on the wrong forum?) and I'm getting different results. I wrote a small snippet to prove it. I'm now using a 'before' parameter too so we can excluse newest transactions that were not there at the time of writing my first post, but the same (in my view) incorrect behaviour is happening. Maybe I'm missing something?

`
const web3 = require("@solana/web3.js");

const RPC_URL = 'https://ssc-dao.genesysgo.net/';
const walletPK = new web3.PublicKey('Cngze9zz4nRuzDcCahEprRdtTvH7mFG3fb1Ys8bU4H5v');
const solana = new web3.Connection(RPC_URL);

//Transaction in execution order
//First: 5zCk4r61KrxS6wrVevGfM9Si4E4mStcNWp5fdYVKH1dR2Qia59sLy5Rf5WHXrZ9kYhjHiVcEVnqFzeoK1AiUN72P
//2nd: 2YJ2Eb192NZbSivMyZsu75ACzLqgFBRoLHAVcp1MRndMTXDZdwgqGuVeyU4cRYh68qVpWpHMty11f5CwLWuy4c4p
//Last: 3UjqKvrNDaDexj41c4fQmmfFMkDeEZox2XNWr1bkuhcsbBiKSgsCoQicf8SaQq2Vk9wwPha4PiGuWvsKhQpZuzbF
//Next transaction that we don't care about, so using it on 'before': 7dAUj7oMd8pfepdZ4DXUUJfhYpWAjK1oZwdVrJknTp9AWYSUfgpPf2PLJad37AYrBAm8vgT5dJChjztGV1YeH3S

let optsArr = {until: '5zCk4r61KrxS6wrVevGfM9Si4E4mStcNWp5fdYVKH1dR2Qia59sLy5Rf5WHXrZ9kYhjHiVcEVnqFzeoK1AiUN72P', before: '7dAUj7oMd8pfepdZ4DXUUJfhYpWAjK1oZwdVrJknTp9AWYSUfgpPf2PLJad37AYrBAm8vgT5dJChjztGV1YeH3S'}
solana.getSignaturesForAddress(walletPK, optsArr)
.then(sigs => {
console.log('First query');
//This should return 3UjqK and 2YJ2E only - correct
sigs.forEach(s => console.log('1- ' + s.signature));
})

optsArr = {until: '3UjqKvrNDaDexj41c4fQmmfFMkDeEZox2XNWr1bkuhcsbBiKSgsCoQicf8SaQq2Vk9wwPha4PiGuWvsKhQpZuzbF', before: '7dAUj7oMd8pfepdZ4DXUUJfhYpWAjK1oZwdVrJknTp9AWYSUfgpPf2PLJad37AYrBAm8vgT5dJChjztGV1YeH3S'}
solana.getSignaturesForAddress(walletPK, optsArr)
.then(sigs => {
console.log('Second query');
//This should not return any result - incorrect, as it returns 5zCk4r61KrxS6wrVevGfM9Si4E4mStcNWp5fdYVKH1dR2Qia59sLy5Rf5WHXrZ9kYhjHiVcEVnqFzeoK1AiUN72P
sigs.forEach(s => console.log('2- ' + s.signature));
})
`

The code above outputs the following:

First query
1- 3UjqKvrNDaDexj41c4fQmmfFMkDeEZox2XNWr1bkuhcsbBiKSgsCoQicf8SaQq2Vk9wwPha4PiGuWvsKhQpZuzbF
1- 2YJ2Eb192NZbSivMyZsu75ACzLqgFBRoLHAVcp1MRndMTXDZdwgqGuVeyU4cRYh68qVpWpHMty11f5CwLWuy4c4p
Second query
2- 5zCk4r61KrxS6wrVevGfM9Si4E4mStcNWp5fdYVKH1dR2Qia59sLy5Rf5WHXrZ9kYhjHiVcEVnqFzeoK1AiUN72P

Can you please confirm I'm not missing anything?

Thanks,
Artur

Edit: I get the correct results when using https://api.mainnet-beta.solana.com, so this seems to be an RPC problem, though I get it with Quicknode, Ankr and Genesys Go, just not with https://api.mainnet-beta.solana.com

@jstarry
Copy link
Member

jstarry commented Sep 29, 2022

Hmm yeah it must be an RPC problem, can you bring it up with them to debug?

@tracy-codes
Copy link

@jstarry GenesysGo here. The only thing we can think of is there's an edge case with how transactions are filtered from local storage only when Google Bigtable is configured on the node AND when the transaction is still available in the node's local storage.

After letting our entire network sit for a day completely untouched, the example curls referenced above now return the same result as what's returned from api.mainnet-beta.solana.com.

Feels like a ghost in the system with some very specific conditions and obviously it's a shared issue as it's happening with other RPC providers that I'd assume also have Google Bigtable configured. That's the only difference I can think of between these networks and api.mainnet-beta.solana.com.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants