简体   繁体   中英

Ethereum Error: Transaction was not mined within 50 blocks

info:  Error: Transaction was not mined within 50 blocks, please make sure your transaction was properly send. Be aware that it might still be mined!
    at /opt/bkzcoin_project/bkzcoin-backend/node_modules/web3-core-method/src/index.js:375:45
    at tryCatcher (/opt/bkzcoin_project/bkzcoin-backend/node_modules/web3-core-promievent/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/opt/bkzcoin_project/bkzcoin-backend/node_modules/web3-core-promievent/node_modules/bluebird/js/release/promise.js:497:31)
    at Promise._settlePromise (/opt/bkzcoin_project/bkzcoin-backend/node_modules/web3-core-promievent/node_modules/bluebird/js/release/promise.js:555:18)
    at Promise._settlePromise0 (/opt/bkzcoin_project/bkzcoin-backend/node_modules/web3-core-promievent/node_modules/bluebird/js/release/promise.js:600:10)
    at Promise._settlePromises (/opt/bkzcoin_project/bkzcoin-backend/node_modules/web3-core-promievent/node_modules/bluebird/js/release/promise.js:679:18)
    at Async._drainQueue (/opt/bkzcoin_project/bkzcoin-backend/node_modules/web3-core-promievent/node_modules/bluebird/js/release/async.js:125:16)
    at Async._drainQueues (/opt/bkzcoin_project/bkzcoin-backend/node_modules/web3-core-promievent/node_modules/bluebird/js/release/async.js:135:10)
    at Immediate.Async.drainQueues (/opt/bkzcoin_project/bkzcoin-backend/node_modules/web3-core-promievent/node_modules/bluebird/js/release/async.js:16:14)
    at runCallback (timers.js:800:20)
    at tryOnImmediate (timers.js:762:5)
    at processImmediate [as _immediateCallback] (timers.js:733:5)

This error keeps repeating during development both in public testnet and in private net with 1 miner. It makes sense with former, as there are race conditions b/w miners and increasing gas price may help, but why it happens on my private net where transactions are rare and mining difficulty is low?

I use web3js send method to send 2 types of transactions:

 /** executes contract method by creating transaction
 * @param {string} from - payer address
 * @param {string} to - payee address
 * @param {int} amount - number of tokens
 * @param {string} type - transaction type
 */
transferTokens(from, to, amount, type) {
    if (type === 'transfer_to_admin' || type === 'transfer_from_user') {
        return this.contract.methods.transferFrom(from, to, amount).send({ from })
            .catch((err) => {
                logger.info(err);
                return Promise.reject(err);
            });
    }
    if (type === 'transfer_from_admin') {
        return this.contract.methods.transfer(to, amount).send({ 'from': this.coinbase })
            .catch((error) => {
                logger.info(error);
                return Promise.reject(error);
            });
    }
}

where transfer and transferFrom are Solidity functions implemented by ERC20 standard.

Anyone knows how to avoid/handle this error?

this is a constant problem of the ethereum network and its forks. increasing the gas will not help, just the bad architecture of the ethereum blockchains

this error will not be fixed, just wait one hour if the transaction is not processed, repeat, otherwise you risk sending the transaction 2 or more times in this shit chain

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM