4 Commits

Author SHA1 Message Date
Alexey
780df01b43 _handleSendError fix 2020-11-25 22:36:51 +01:00
Alexey
c5e4d76dc5 new 'nonce to low' error; remove console.log 2020-11-25 21:33:34 +01:00
Alexey
8cb2bb0fbe THROW_ON_REVERT feature 2020-11-19 20:33:58 +03:00
Alexey
6bb265d3b9 fix: throw error if transaction execution was failed 2020-11-19 14:37:18 +03:00
3 changed files with 9 additions and 9 deletions

View File

@@ -1,6 +1,6 @@
{ {
"name": "tx-manager", "name": "tx-manager",
"version": "0.2.4", "version": "0.2.8",
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {

View File

@@ -4,10 +4,10 @@ const BigNumber = ethers.BigNumber
const PromiEvent = require('web3-core-promievent') const PromiEvent = require('web3-core-promievent')
const { sleep, min, max } = require('./utils') const { sleep, min, max } = require('./utils')
// prettier-ignore
const nonceErrors = [ const nonceErrors = [
'Transaction nonce is too low. Try incrementing the nonce.', 'Transaction nonce is too low. Try incrementing the nonce.',
'nonce too low' 'nonce too low',
'nonce has already been used',
] ]
const gasPriceErrors = [ const gasPriceErrors = [
@@ -182,6 +182,9 @@ class Transaction {
this._emitter.emit('confirmations', confirmations) this._emitter.emit('confirmations', confirmations)
if (confirmations >= this.config.CONFIRMATIONS) { if (confirmations >= this.config.CONFIRMATIONS) {
// Tx is mined and has enough confirmations // Tx is mined and has enough confirmations
if (this.config.THROW_ON_REVERT && Number(receipt.status) === 0) {
throw new Error('EVM execution failed, so the transaction was reverted.')
}
return receipt return receipt
} }
@@ -234,7 +237,6 @@ class Transaction {
} }
} }
console.log('Mined. Start waiting for confirmations...')
this._emitter.emit('mined', receipt) this._emitter.emit('mined', receipt)
this.currentTxHash = receipt.transactionHash this.currentTxHash = receipt.transactionHash
} }
@@ -266,11 +268,8 @@ class Transaction {
} }
_handleSendError(e) { _handleSendError(e) {
console.log('Got error', e) if (e.error && e.error.code === 'SERVER_ERROR') {
const message = e.error.error.message
if (e.code === 'SERVER_ERROR' && e.error) {
const message = e.error.message
console.log('Error', e.error.code, e.error.message)
// nonce is too low, trying to increase and resubmit // nonce is too low, trying to increase and resubmit
if (this._hasError(message, nonceErrors)) { if (this._hasError(message, nonceErrors)) {

View File

@@ -13,6 +13,7 @@ const defaultConfig = {
POLL_INTERVAL: 5000, POLL_INTERVAL: 5000,
CONFIRMATIONS: 8, CONFIRMATIONS: 8,
ESTIMATE_GAS: true, ESTIMATE_GAS: true,
THROW_ON_REVERT: true,
} }
class TxManager { class TxManager {