Развертывание транзакции блокчейна в Kovan testnet через web3 требует гораздо больше средств, чем в реальности с использованием web3 - PullRequest
0 голосов
/ 12 сентября 2018

Я недавно перенес свой смарт-контракт с Ropsten (изменив только узел Infura) на Kovan, и первое, с чем я столкнулся, была ошибка:

Ошибка при развертывании транзакции Ошибка: Возвращенная ошибка:Недостаточно средств.На счете, с которого вы пытались отправить транзакцию, недостаточно средств.Требуется 5596500000000000000 и получено: 4747259100000000000.

Средства, которые у меня были, были 4,7 ETH, таким образом, больше, чем требовалась транзакция.Таким образом, я получил больше эфира от Kovan Faucet и снова протолкнул транзакцию, и оказалось, что ему нужен только 0,0160552 Ether.Я немного запутался, откуда взялось это искусственное требование, так как и gasPrice, и gasLimit намного меньше.Эта проблема в настоящее время частично решена благодаря наличию баланса выше, чем 5,5 ETH, но я хотел бы узнать причину, по которой она должна быть устранена, прежде чем переходить в основную сеть.Мой код в NodeJS для развертывания транзакции выглядит так:

  function deploying_transaction(event, callback){
    console.log("Data raw", event.dataContractCallRaw)
    web3.eth.getGasPrice(function(err,gasPriceWei){
        if (err){
            console.log("Error by getting Gas price", err)
            callback(err)
        }else {
            console.log("gasPrice", gasPriceWei)
            web3.eth.getBlock("latest", function(err,block){
                if(err){
                    console.log("Error by getting gas limit", err)
                    callback(err)
                } else {
                    console.log("Block Gas Limit", block.gasLimit)
                    web3.eth.getTransactionCount(event.addressSender,function(err,result){
                        if (!err){
                            var rawTx = {
                                nonce: web3.utils.toHex(result),
                                to: event.addressContract,
                                gasPrice: web3.utils.toHex(web3.utils.toWei('700','gwei')), // gasPriceWei in the future we can use gasPrice wei, but it is fucked up for now
                                gasLimit: web3.utils.toHex(block.gasLimit - 5000), 
                                value: 0,
                                data: event.dataContractCallRaw
                            }
                            console.log("rawTx", rawTx)
                            web3.eth.accounts.signTransaction(rawTx, event.privateKeySigner).then(signed => {
                                web3.eth.sendSignedTransaction(signed.rawTransaction, function(err, response, receipt){
                                    if(err){
                                        callback(err)
                                    } else {
                                        console.log("Response from network", response)
                                        callback(null,response)
                                    }
                                })
                            });
                        }else{
                            console.log('Error in getting transaction count ' + JSON.stringify(err));
                            callback(err)
                        }
                    });
                }

            });
        }

    })
}

1 Ответ

0 голосов
/ 12 сентября 2018

Я обнаружил, что снижение gasLimit делает потребность в средствах меньше, но возникает другой вопрос, почему тестовая сеть KOVAN ведет себя иначе, чем ROPSTEN в этом аспекте?

...