I'm currently working on a project that sends mass ethereum token transfers using web3.js and GETH.

On the 1st of December we've sent around 3000 payments but only 80 have been confirmed until now and the rest are pending for 3 days.

We've sent thousands of transfers before without any problem but this time we've set a lower Gas Limit and some transfers got halted. This, by itself, is a problem, but can be managed because at least we know the transfer has failed, the problem is that we've around 2900 pending transfers without any type of progress over the last 72 hours. We're facing a dilemma now because we cannot cancel the transfers already sent and also cannot issue new ones due to the risk of double payments. The transactions appear and disappear on etherscan.io website and we've no idea why.

  1. Is there a maximum amount of time for a transfer to be verified? If so, how much?
  2. Why did some transfers went trough and others didn't despite the fact they had the same settings (gas limit/price)?
  3. What would you do in a situation like this?

I'm aware this question may be a little vague but please understand we've a real problem in hands and all help is welcome, thank you.

  • My guess is that you didn't limit the concurrency of your transfers. The code used for the mass transferings could reveal the problem and help finding out how to solve this issue. – Nikita Fuchs Dec 4 '17 at 22:00
  • "My guess is that you didn't limit the concurrency of your transfers", we did limit the concurrency to 1TX / sec, which is more than enough to process a transfer based on our previous experience. Which concurrency settings would you advise? – Pedro Lobito Dec 5 '17 at 4:45
  • 2
    @PedroLobito Network has been quite busy this last days, if your transaction has a low fee likely it will take some time to get mined. Right now etherscan.io/txsPending is above 15K. You can try replacing your pending transactions with new ones with higher gas price, reusing used nonces. – Ismael Dec 5 '17 at 15:04
  • Seconds is, generally speaking, a bad measure in ethereum. You have to limit concurrency by blocks and actually wait for them to get mined before sending out new transactions to avoid the unclear state of nonces you have right now. As ismael said, you can reuse the previous nonces, that's the only way to avoid double spending your tokens. – Nikita Fuchs Dec 5 '17 at 23:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.