I am trying to update lets say 10k of nft metadata addresses at once. Im using update_metadata_accounts_v2 on Rust, and calling the function on the client via a loop that generates a transaction for each nft I want to update.

Everything goes fine for a couple of hundread transactions but for 1000 to 10000 my Phantom wallet kind of gets laggy and almost tilts.

Is there a good way to send thousands of transactions to the chain? Im sending all these transactiones because I need to pass every metadata account to the program in order to update it.

Any help will be appreciated. Thanks

  • 1
    Why are you using Phantom wallet, why not write a script and hardcode the wallet?
    – vicyyn
    Commented Aug 1, 2022 at 7:54

2 Answers 2


Sending this amount of transactions at once won't work.

If you are using public RPC node, it has severe rate limits.

If you are using private RPC node without limits - it will still be limited by leader node as it has limits per IP. Also, Solana network currently tops at about 3500 TPS.

To properly send them, you need a scrips that sends around 30 transactions per second. You can save to file transaction signatures with related data so later you can run the script again and resend only transactions that failed.


Do you happen to be running your client on Linux or OSX? On Unix type systems, every request is treated as an open file by the OS. By default, Linux has an open file limit of 1024, and on MacOS, it's a little over 10k.

If you're doing a normal loop, you might be hitting the open file limit. You could try increasing your max open files limit, but the more robust solution would be to execute your transaction in smaller batches, such as in groups of 500 or 1000. When one batch of transactions finish, fire off the next batch.

Also, are you just using Phantom to monitor your transactions, or are you signing/approving the transactions with Phantom? If it's the latter, it'll be much better to sign the transaction programmatically with a keypair of your wallet.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.