Comments (1)
To give more context, I'm running a load test tool that executes the code above to send transactions. The tool spawns multiple clients using the same wallet for all of them.
The first thing I tried to fix the nonce issue was to put a lock around the code that sends the transaction. This completely fixed the problem, but the throughput was very bad.
Next, looking at the NonceManagerMiddleware code, I replaced this https://github.com/gakonst/ethers-rs/blob/master/ethers-middleware/src/nonce_manager.rs#L74-L80 (which AIUI could be problematic with concurrent access) to call instead initialize_nonce
and take advantage of mutex guard's lock.
With this in place (and without the lock around my send transaction call), errors are back, but now instead of "replacement transaction underpriced" I get "already known" errors, as I understand it now the same transaction (same tx hash) is found more than once in the mempool? I wonder if this code https://github.com/gakonst/ethers-rs/blob/master/ethers-middleware/src/nonce_manager.rs#L152-L162 could also benefit from a lock for concurrent access?
Let me know if I can give any additional info.
from ethers-rs.
Related Issues (20)
- `abigen` inline loading of ABI is failing HOT 1
- abi::encode_packed() returns incorrect value for U256s with leading zeroes HOT 1
- Sync supported Multicall chain deployments
- H256 and some of the other types truncate the string output like 0x13...141 which imo is horrible/frustrating HOT 5
- Implement encoding and signing for EIP-4844 transaction requests HOT 1
- is there a way to decode what is inside the CallFrame struct ?
- Support for other methods in subscribe (other than `eth_subscribe`)
- Container type for all of the contract's custom errors DO NOT GENERATE BY `abigen` for my contract's abi HOT 1
- Documentation is seriously outdated HOT 2
- Why this `as_aggregate_3_value` only available in `send` mode
- subscribe_full_pending_txs seems not working HOT 2
- 4844 rlp encoding not working
- AbiEncode::encode(complex_solidity_datastruct) return wrong data
- Failed to deserialize the empty key of storage proof in `EIP1186ProofResponse` (for Mainnet)
- Calling the contract method `unlock` always fail HOT 1
- Question about casting vector of addresses to ethers::core::types::Bytes type in Uniswap V3 Swap Router HOT 1
- How to detect EIP-4844 transactions types and fetch the associated blobs ?
- `TransactionReceipt` optimism fields missing rename camelCase HOT 1
- Abigen descriptor for function Call objects has incorrect function selector in comments HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ethers-rs.