find-replacement-tx
Advanced tools
Comparing version 1.1.0 to 1.2.0-0
@@ -1,2 +0,2 @@ | ||
import { Transaction } from 'web3-core'; | ||
import { ethers } from 'ethers'; | ||
export declare class SearchError extends Error { | ||
@@ -13,3 +13,3 @@ } | ||
*/ | ||
export declare function getTransactionByNonce(provider: any, startSearch: number, from: string, nonce: number): Promise<Transaction | null>; | ||
export declare function getTransactionByNonce(provider: ethers.providers.Provider, startSearch: number, from: string, nonce: number): Promise<ethers.providers.TransactionResponse | null>; | ||
/** | ||
@@ -42,3 +42,3 @@ * Search and validate a replaced transaction (speed up) | ||
}) => boolean; | ||
}): Promise<Transaction | null>; | ||
}): Promise<ethers.providers.TransactionResponse | null>; | ||
//# sourceMappingURL=index.d.ts.map |
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.findReplacementTx = exports.getTransactionByNonce = exports.TxValidationError = exports.SearchError = void 0; | ||
const web3_1 = __importDefault(require("web3")); | ||
const ethers_1 = require("ethers"); | ||
class SearchError extends Error { | ||
@@ -22,5 +19,3 @@ } | ||
async function getTransactionByNonce(provider, startSearch, from, nonce) { | ||
// If available connect to rpcUrl to avoid issues with WalletConnectProvider receipt.status | ||
const web3 = new web3_1.default(provider.rpcUrl ? provider.rpcUrl : provider); | ||
const currentNonce = await web3.eth.getTransactionCount(from, 'latest'); | ||
const currentNonce = await provider.getTransactionCount(from, 'latest'); | ||
// Transaction still pending | ||
@@ -31,7 +26,7 @@ if (currentNonce <= nonce) | ||
let txBlock; | ||
let maxBlock = await web3.eth.getBlockNumber(); // latest: chain head | ||
let maxBlock = await provider.getBlockNumber(); // latest: chain head | ||
let minBlock = startSearch; | ||
while (minBlock <= maxBlock) { | ||
const middleBlock = Math.floor((minBlock + maxBlock) / 2); | ||
const middleNonce = await web3.eth.getTransactionCount(from, middleBlock) - 1; | ||
const middleNonce = await provider.getTransactionCount(from, middleBlock) - 1; | ||
if (middleNonce < nonce) { | ||
@@ -44,3 +39,3 @@ // middleBlock was mined before the tx with broadcasted nonce, so take next block as lower bound | ||
// lower nonce at previous block which would mean that tx.nonce was mined in this middleBlock. | ||
if (await web3.eth.getTransactionCount(from, middleBlock - 1) - 1 < nonce) { | ||
if (await provider.getTransactionCount(from, middleBlock - 1) - 1 < nonce) { | ||
// Confirm the nonce changed by checking the previous block: | ||
@@ -60,3 +55,3 @@ // use previous block nonce `>=` broadcasted nonce in case there are multiple user tx | ||
} | ||
const block = await web3.eth.getBlock(txBlock, true); | ||
const block = await provider.getBlockWithTransactions(txBlock); | ||
const transaction = block.transactions.find(blockTx => blockTx.from.toLowerCase() === from.toLowerCase() && blockTx.nonce === nonce); | ||
@@ -88,5 +83,3 @@ if (!transaction) { | ||
return null; | ||
// If available connect to rpcUrl to avoid issues with WalletConnectProvider receipt.status | ||
const web3 = new web3_1.default(provider.rpcUrl ? provider.rpcUrl : provider); | ||
if (transaction.input === '0x' && transaction.from === transaction.to && transaction.value === '0') { | ||
if (transaction.data === '0x' && transaction.from === transaction.to && transaction.value.isZero()) { | ||
const error = 'Transaction canceled.'; | ||
@@ -102,5 +95,5 @@ throw new TxValidationError(error); | ||
if (tx.data) { | ||
if (transaction.input !== tx.data) { | ||
if (transaction.data !== tx.data) { | ||
const error = `Failed to validate transaction data. | ||
Expected ${tx.data}, got ${transaction.input}. | ||
Expected ${tx.data}, got ${transaction.data}. | ||
Transaction was dropped and replaced by '${transaction.hash}'`; | ||
@@ -111,5 +104,5 @@ throw new TxValidationError(error); | ||
if (tx.value) { | ||
if (transaction.value !== tx.value) { | ||
if (transaction.value.toString() !== tx.value) { | ||
const error = `Failed to validate transaction value. | ||
Expected ${tx.value}, got ${transaction.value}. | ||
Expected ${tx.value}, got ${transaction.value.toString()}. | ||
Transaction was dropped and replaced by '${transaction.hash}'`; | ||
@@ -120,10 +113,7 @@ throw new TxValidationError(error); | ||
if (event) { | ||
const tokenContract = new web3.eth.Contract(JSON.parse(event.abi), event.address); | ||
const eventOptions = { | ||
fromBlock: transaction.blockNumber, | ||
toBlock: transaction.blockNumber | ||
}; | ||
const events = await tokenContract.getPastEvents(event.name, eventOptions); | ||
const tokenContract = new ethers_1.ethers.Contract(event.address, event.abi, provider); | ||
const filter = tokenContract.filters[event.name](); | ||
const events = await tokenContract.queryFilter(filter, transaction.blockNumber, transaction.blockNumber); | ||
const foundEvent = events.find(e => e.transactionHash === transaction.hash); | ||
if (!foundEvent || !event.validate(foundEvent)) { | ||
if (!foundEvent || !event.validate({ returnValues: foundEvent.args })) { | ||
const error = `Failed to validate event. | ||
@@ -130,0 +120,0 @@ Transaction was dropped and replaced by '${transaction.hash}'`; |
{ | ||
"name": "find-replacement-tx", | ||
"version": "1.1.0", | ||
"version": "1.2.0-0", | ||
"license": "(MIT AND Apache-2.0)", | ||
@@ -19,8 +19,6 @@ "main": "dist/index.js", | ||
"@yarnpkg/pnpify": "^2.4.0", | ||
"typescript": "4.1.5", | ||
"web3-core": "^1.3.6", | ||
"web3-eth-contract": "^1.3.6" | ||
"typescript": "4.1.5" | ||
}, | ||
"dependencies": { | ||
"web3": "^1.3.4" | ||
"ethers": "^5.4.0" | ||
}, | ||
@@ -27,0 +25,0 @@ "browserslist": [ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
AI-detected possible typosquat
Supply chain riskAI has identified this package as a potential typosquat of a more popular package. This suggests that the package may be intentionally mimicking another package's name, description, or other metadata.
Found 1 instance in 1 package
7
0
17507
159
2
+ Addedethers@^5.4.0
+ Added@ethersproject/basex@5.7.0(transitive)
+ Added@ethersproject/contracts@5.7.0(transitive)
+ Added@ethersproject/hdnode@5.7.0(transitive)
+ Added@ethersproject/json-wallets@5.7.0(transitive)
+ Added@ethersproject/pbkdf2@5.7.0(transitive)
+ Added@ethersproject/providers@5.7.2(transitive)
+ Added@ethersproject/random@5.7.0(transitive)
+ Added@ethersproject/sha2@5.7.0(transitive)
+ Added@ethersproject/solidity@5.7.0(transitive)
+ Added@ethersproject/units@5.7.0(transitive)
+ Added@ethersproject/wallet@5.7.0(transitive)
+ Added@ethersproject/wordlists@5.7.0(transitive)
+ Addedaes-js@3.0.0(transitive)
+ Addedbech32@1.1.4(transitive)
+ Addedethers@5.7.2(transitive)
+ Addedws@7.4.6(transitive)
- Removedweb3@^1.3.4
- Removed@ethereumjs/common@2.6.5(transitive)
- Removed@ethereumjs/rlp@4.0.1(transitive)
- Removed@ethereumjs/tx@3.5.2(transitive)
- Removed@ethereumjs/util@8.1.0(transitive)
- Removed@noble/curves@1.4.2(transitive)
- Removed@noble/hashes@1.4.0(transitive)
- Removed@scure/base@1.1.9(transitive)
- Removed@scure/bip32@1.4.0(transitive)
- Removed@scure/bip39@1.3.0(transitive)
- Removed@sindresorhus/is@4.6.0(transitive)
- Removed@szmarczak/http-timer@4.0.65.0.1(transitive)
- Removed@types/bn.js@5.1.6(transitive)
- Removed@types/cacheable-request@6.0.3(transitive)
- Removed@types/http-cache-semantics@4.0.4(transitive)
- Removed@types/keyv@3.1.4(transitive)
- Removed@types/node@12.20.55(transitive)
- Removed@types/pbkdf2@3.1.2(transitive)
- Removed@types/responselike@1.0.3(transitive)
- Removed@types/secp256k1@4.0.6(transitive)
- Removedabortcontroller-polyfill@1.7.8(transitive)
- Removedaccepts@1.3.8(transitive)
- Removedajv@6.12.6(transitive)
- Removedarray-flatten@1.1.1(transitive)
- Removedasn1@0.2.6(transitive)
- Removedassert-plus@1.0.0(transitive)
- Removedasync-limiter@1.0.1(transitive)
- Removedasynckit@0.4.0(transitive)
- Removedavailable-typed-arrays@1.0.7(transitive)
- Removedaws-sign2@0.7.0(transitive)
- Removedaws4@1.13.2(transitive)
- Removedbase-x@3.0.10(transitive)
- Removedbase64-js@1.5.1(transitive)
- Removedbcrypt-pbkdf@1.0.2(transitive)
- Removedbignumber.js@9.1.2(transitive)
- Removedblakejs@1.2.1(transitive)
- Removedbluebird@3.7.2(transitive)
- Removedbn.js@4.11.6(transitive)
- Removedbody-parser@1.20.3(transitive)
- Removedbrowserify-aes@1.2.0(transitive)
- Removedbs58@4.0.1(transitive)
- Removedbs58check@2.1.2(transitive)
- Removedbuffer@5.7.1(transitive)
- Removedbuffer-to-arraybuffer@0.0.5(transitive)
- Removedbuffer-xor@1.0.3(transitive)
- Removedbufferutil@4.0.9(transitive)
- Removedbytes@3.1.2(transitive)
- Removedcacheable-lookup@5.0.46.1.0(transitive)
- Removedcacheable-request@7.0.4(transitive)
- Removedcall-bind@1.0.8(transitive)
- Removedcall-bind-apply-helpers@1.0.1(transitive)
- Removedcall-bound@1.0.3(transitive)
- Removedcaseless@0.12.0(transitive)
- Removedchownr@1.1.4(transitive)
- Removedcids@0.7.5(transitive)
- Removedcipher-base@1.0.6(transitive)
- Removedclass-is@1.1.0(transitive)
- Removedclone-response@1.0.3(transitive)
- Removedcombined-stream@1.0.8(transitive)
- Removedcontent-disposition@0.5.4(transitive)
- Removedcontent-hash@2.5.2(transitive)
- Removedcontent-type@1.0.5(transitive)
- Removedcookie@0.7.1(transitive)
- Removedcookie-signature@1.0.6(transitive)
- Removedcore-util-is@1.0.2(transitive)
- Removedcors@2.8.5(transitive)
- Removedcrc-32@1.2.2(transitive)
- Removedcreate-hash@1.2.0(transitive)
- Removedcreate-hmac@1.1.7(transitive)
- Removedcross-fetch@4.1.0(transitive)
- Removedd@1.0.2(transitive)
- Removeddashdash@1.14.1(transitive)
- Removeddebug@2.6.9(transitive)
- Removeddecode-uri-component@0.2.2(transitive)
- Removeddecompress-response@3.3.06.0.0(transitive)
- Removeddefer-to-connect@2.0.1(transitive)
- Removeddefine-data-property@1.1.4(transitive)
- Removeddelayed-stream@1.0.0(transitive)
- Removeddepd@2.0.0(transitive)
- Removeddestroy@1.2.0(transitive)
- Removeddom-walk@0.1.2(transitive)
- Removeddunder-proto@1.0.1(transitive)
- Removedecc-jsbn@0.1.2(transitive)
- Removedee-first@1.1.1(transitive)
- Removedelliptic@6.6.1(transitive)
- Removedencodeurl@1.0.22.0.0(transitive)
- Removedend-of-stream@1.4.4(transitive)
- Removedes-define-property@1.0.1(transitive)
- Removedes-errors@1.3.0(transitive)
- Removedes-object-atoms@1.1.1(transitive)
- Removedes5-ext@0.10.64(transitive)
- Removedes6-iterator@2.0.3(transitive)
- Removedes6-promise@4.2.8(transitive)
- Removedes6-symbol@3.1.4(transitive)
- Removedescape-html@1.0.3(transitive)
- Removedesniff@2.0.1(transitive)
- Removedetag@1.8.1(transitive)
- Removedeth-ens-namehash@2.0.8(transitive)
- Removedeth-lib@0.1.290.2.8(transitive)
- Removedethereum-bloom-filters@1.2.0(transitive)
- Removedethereum-cryptography@0.1.32.2.1(transitive)
- Removedethereumjs-util@7.1.5(transitive)
- Removedethjs-unit@0.1.6(transitive)
- Removedevent-emitter@0.3.5(transitive)
- Removedeventemitter3@4.0.4(transitive)
- Removedevp_bytestokey@1.0.3(transitive)
- Removedexpress@4.21.2(transitive)
- Removedext@1.7.0(transitive)
- Removedextend@3.0.2(transitive)
- Removedextsprintf@1.3.0(transitive)
- Removedfast-deep-equal@3.1.3(transitive)
- Removedfast-json-stable-stringify@2.1.0(transitive)
- Removedfinalhandler@1.3.1(transitive)
- Removedfor-each@0.3.4(transitive)
- Removedforever-agent@0.6.1(transitive)
- Removedform-data@2.3.3(transitive)
- Removedform-data-encoder@1.7.1(transitive)
- Removedforwarded@0.2.0(transitive)
- Removedfresh@0.5.2(transitive)
- Removedfs-extra@4.0.3(transitive)
- Removedfs-minipass@1.2.7(transitive)
- Removedfunction-bind@1.1.2(transitive)
- Removedget-intrinsic@1.2.7(transitive)
- Removedget-proto@1.0.1(transitive)
- Removedget-stream@5.2.06.0.1(transitive)
- Removedgetpass@0.1.7(transitive)
- Removedglobal@4.4.0(transitive)
- Removedgopd@1.2.0(transitive)
- Removedgot@11.8.612.1.0(transitive)
- Removedgraceful-fs@4.2.11(transitive)
- Removedhar-schema@2.0.0(transitive)
- Removedhar-validator@5.1.5(transitive)
- Removedhas-property-descriptors@1.0.2(transitive)
- Removedhas-symbols@1.1.0(transitive)
- Removedhas-tostringtag@1.0.2(transitive)
- Removedhash-base@3.1.0(transitive)
- Removedhasown@2.0.2(transitive)
- Removedhttp-cache-semantics@4.1.1(transitive)
- Removedhttp-errors@2.0.0(transitive)
- Removedhttp-https@1.0.0(transitive)
- Removedhttp-signature@1.2.0(transitive)
- Removedhttp2-wrapper@1.0.32.2.1(transitive)
- Removediconv-lite@0.4.24(transitive)
- Removedidna-uts46-hx@2.3.1(transitive)
- Removedieee754@1.2.1(transitive)
- Removedipaddr.js@1.9.1(transitive)
- Removedis-arguments@1.2.0(transitive)
- Removedis-callable@1.2.7(transitive)
- Removedis-function@1.0.2(transitive)
- Removedis-generator-function@1.1.0(transitive)
- Removedis-hex-prefixed@1.0.0(transitive)
- Removedis-regex@1.2.1(transitive)
- Removedis-typed-array@1.1.15(transitive)
- Removedis-typedarray@1.0.0(transitive)
- Removedisstream@0.1.2(transitive)
- Removedjs-sha3@0.5.7(transitive)
- Removedjsbn@0.1.1(transitive)
- Removedjson-buffer@3.0.1(transitive)
- Removedjson-schema@0.4.0(transitive)
- Removedjson-schema-traverse@0.4.1(transitive)
- Removedjson-stringify-safe@5.0.1(transitive)
- Removedjsonfile@4.0.0(transitive)
- Removedjsprim@1.4.2(transitive)
- Removedkeccak@3.0.4(transitive)
- Removedkeyv@4.5.4(transitive)
- Removedlowercase-keys@2.0.03.0.0(transitive)
- Removedmath-intrinsics@1.1.0(transitive)
- Removedmd5.js@1.3.5(transitive)
- Removedmedia-typer@0.3.0(transitive)
- Removedmerge-descriptors@1.0.3(transitive)
- Removedmethods@1.1.2(transitive)
- Removedmicro-ftch@0.3.1(transitive)
- Removedmime@1.6.0(transitive)
- Removedmime-db@1.52.0(transitive)
- Removedmime-types@2.1.35(transitive)
- Removedmimic-response@1.0.13.1.0(transitive)
- Removedmin-document@2.19.0(transitive)
- Removedminimist@1.2.8(transitive)
- Removedminipass@2.9.0(transitive)
- Removedminizlib@1.3.3(transitive)
- Removedmkdirp@0.5.63.0.1(transitive)
- Removedmkdirp-promise@5.0.1(transitive)
- Removedmock-fs@4.14.0(transitive)
- Removedms@2.0.02.1.3(transitive)
- Removedmultibase@0.6.10.7.0(transitive)
- Removedmulticodec@0.5.71.0.4(transitive)
- Removedmultihashes@0.4.21(transitive)
- Removednano-json-stream-parser@0.1.2(transitive)
- Removednegotiator@0.6.3(transitive)
- Removednext-tick@1.1.0(transitive)
- Removednode-addon-api@2.0.25.1.0(transitive)
- Removednode-fetch@2.7.0(transitive)
- Removednode-gyp-build@4.8.4(transitive)
- Removednormalize-url@6.1.0(transitive)
- Removednumber-to-bn@1.7.0(transitive)
- Removedoauth-sign@0.9.0(transitive)
- Removedobject-assign@4.1.1(transitive)
- Removedobject-inspect@1.13.4(transitive)
- Removedoboe@2.1.5(transitive)
- Removedon-finished@2.4.1(transitive)
- Removedonce@1.4.0(transitive)
- Removedp-cancelable@2.1.13.0.0(transitive)
- Removedparse-headers@2.0.5(transitive)
- Removedparseurl@1.3.3(transitive)
- Removedpath-to-regexp@0.1.12(transitive)
- Removedpbkdf2@3.1.2(transitive)
- Removedperformance-now@2.1.0(transitive)
- Removedpossible-typed-array-names@1.1.0(transitive)
- Removedprocess@0.11.10(transitive)
- Removedproxy-addr@2.0.7(transitive)
- Removedpsl@1.15.0(transitive)
- Removedpump@3.0.2(transitive)
- Removedpunycode@2.1.02.3.1(transitive)
- Removedqs@6.13.06.5.3(transitive)
- Removedquery-string@5.1.1(transitive)
- Removedquick-lru@5.1.1(transitive)
- Removedrandombytes@2.1.0(transitive)
- Removedrange-parser@1.2.1(transitive)
- Removedraw-body@2.5.2(transitive)
- Removedreadable-stream@3.6.2(transitive)
- Removedrequest@2.88.2(transitive)
- Removedresolve-alpn@1.2.1(transitive)
- Removedresponselike@2.0.1(transitive)
- Removedripemd160@2.0.2(transitive)
- Removedrlp@2.2.7(transitive)
- Removedsafe-buffer@5.1.25.2.1(transitive)
- Removedsafe-regex-test@1.1.0(transitive)
- Removedsafer-buffer@2.1.2(transitive)
- Removedsecp256k1@4.0.4(transitive)
- Removedsend@0.19.0(transitive)
- Removedserve-static@1.16.2(transitive)
- Removedservify@0.1.12(transitive)
- Removedset-function-length@1.2.2(transitive)
- Removedsetimmediate@1.0.5(transitive)
- Removedsetprototypeof@1.2.0(transitive)
- Removedsha.js@2.4.11(transitive)
- Removedside-channel@1.1.0(transitive)
- Removedside-channel-list@1.0.0(transitive)
- Removedside-channel-map@1.0.1(transitive)
- Removedside-channel-weakmap@1.0.2(transitive)
- Removedsimple-concat@1.0.1(transitive)
- Removedsimple-get@2.8.2(transitive)
- Removedsshpk@1.18.0(transitive)
- Removedstatuses@2.0.1(transitive)
- Removedstrict-uri-encode@1.1.0(transitive)
- Removedstring_decoder@1.3.0(transitive)
- Removedstrip-hex-prefix@1.0.0(transitive)
- Removedswarm-js@0.1.42(transitive)
- Removedtar@4.4.19(transitive)
- Removedtimed-out@4.0.1(transitive)
- Removedtoidentifier@1.0.1(transitive)
- Removedtough-cookie@2.5.0(transitive)
- Removedtr46@0.0.3(transitive)
- Removedtunnel-agent@0.6.0(transitive)
- Removedtweetnacl@0.14.5(transitive)
- Removedtype@2.7.3(transitive)
- Removedtype-is@1.6.18(transitive)
- Removedtypedarray-to-buffer@3.1.5(transitive)
- Removedultron@1.1.1(transitive)
- Removeduniversalify@0.1.2(transitive)
- Removedunpipe@1.0.0(transitive)
- Removeduri-js@4.4.1(transitive)
- Removedurl-set-query@1.0.0(transitive)
- Removedutf-8-validate@5.0.10(transitive)
- Removedutf8@3.0.0(transitive)
- Removedutil@0.12.5(transitive)
- Removedutil-deprecate@1.0.2(transitive)
- Removedutils-merge@1.0.1(transitive)
- Removeduuid@3.4.09.0.1(transitive)
- Removedvarint@5.0.2(transitive)
- Removedvary@1.1.2(transitive)
- Removedverror@1.10.0(transitive)
- Removedweb3@1.10.4(transitive)
- Removedweb3-bzz@1.10.4(transitive)
- Removedweb3-core@1.10.4(transitive)
- Removedweb3-core-helpers@1.10.4(transitive)
- Removedweb3-core-method@1.10.4(transitive)
- Removedweb3-core-promievent@1.10.4(transitive)
- Removedweb3-core-requestmanager@1.10.4(transitive)
- Removedweb3-core-subscriptions@1.10.4(transitive)
- Removedweb3-eth@1.10.4(transitive)
- Removedweb3-eth-abi@1.10.4(transitive)
- Removedweb3-eth-accounts@1.10.4(transitive)
- Removedweb3-eth-contract@1.10.4(transitive)
- Removedweb3-eth-ens@1.10.4(transitive)
- Removedweb3-eth-iban@1.10.4(transitive)
- Removedweb3-eth-personal@1.10.4(transitive)
- Removedweb3-net@1.10.4(transitive)
- Removedweb3-providers-http@1.10.4(transitive)
- Removedweb3-providers-ipc@1.10.4(transitive)
- Removedweb3-providers-ws@1.10.4(transitive)
- Removedweb3-shh@1.10.4(transitive)
- Removedweb3-utils@1.10.4(transitive)
- Removedwebidl-conversions@3.0.1(transitive)
- Removedwebsocket@1.0.35(transitive)
- Removedwhatwg-url@5.0.0(transitive)
- Removedwhich-typed-array@1.1.18(transitive)
- Removedwrappy@1.0.2(transitive)
- Removedws@3.3.3(transitive)
- Removedxhr@2.6.0(transitive)
- Removedxhr-request@1.1.0(transitive)
- Removedxhr-request-promise@0.1.3(transitive)
- Removedxtend@4.0.2(transitive)
- Removedyaeti@0.0.6(transitive)
- Removedyallist@3.1.1(transitive)