How do I speed up transaction filtering on solan blockchain?

17 Views Asked by At

I wrote a script that retrieves all trade transactions for nft. But there is a problem, it takes 12 minutes to go through a thousand transactions. I wrote it in c#, if you have any recommendations or other tips I will be glad to hear.

Algorithm - get all signatures for a certain nft, then check if this transaction is successful, then check if this transaction is a trade transaction.

I use custom rpc endpoint.

var nftMint = "Fw8PqtznYtg4swMk7Yjj89Tsj23u5CJLfW5Bk8ro4G1s";

var transactionsSignatures = client.GetSignaturesForAddressAsync(nftMint , 1000).Result;



if (transactionsSignatures.WasSuccessful)
{
    var filteredSignatures = FilterByShop(transactionsSignatures.Result);
    foreach (var signature in filteredSignatures)
    {
        Console.WriteLine(signature.Signature);
    }
}

List<SignatureStatusInfo> FilterByShop(List<SignatureStatusInfo> list)
{
    List<SignatureStatusInfo> goodSignatures = new();
    foreach (var statusInfo in list)
    {
        var transaction = client.GetTransactionAsync(statusInfo.Signature).Result;
        if (transaction.WasSuccessful)
        {
            var transactionMeta = transaction.Result.Meta;
        
            foreach (var msg in transactionMeta.LogMessages)
            {
                if (msg.Contains("Program traderDnaR5w6Tcoi3NFm53i48FTDNbGjBSZwWXDRrg invoke [1]"))
                {
                    goodSignatures.Add(statusInfo);
                }
            }
        }
    }

    return goodSignatures;
}
0

There are 0 best solutions below