drandreaskrueger / drandreaskrueger/chainhammer
Need to improve to a more realistic Web3 transaction
- Dominant language
- Python
- Stars
- 123
- Forks
- 55
- PR merge metrics
- No merged PRs in 30d
Description
Chainhammer is a gem! Thank you so much, @drandreaskrueger
I am adapting the bits and pieces of Chainhammer to do a TPS measurement of a Polkadot Moonbeam parachain node. Currently, chainhammer relies on the concept of `unlocked account` where the transaction signing happens in a validator node. In the real usage, however, the transaction signing happens in a wallet. By doing it like this, will make Chainhammer usable in other chains, in my opinion.
In Moonbeam chain, however, I am facing an issue in the call to `nonce = w3.eth.get_transaction_count(account)`. Because I have now the need to call next `tx_receipt = w3.eth.wait_for_transaction_receipt(txh)` and this resulted to a very low 8 TPS in Moonbeam. Without the wait call, I get a `nonce too low` error. Take note, this is not a [predicament](https://www.merriam-webster.com/dictionary/predicament) in Chainhammer because Chainhammer is using an unlocked node account hence it is able to avoid from the need of nonce retrieval. The concept of an `unlocked account` is absent in Moonbeam parachain, therefore, I have to sign the transaction in Web3 client, and send it via `send_raw_transaction()`.
Also, in my initial examination of Moonbeam, it does not seem to have a `transaction queue` like in openethereum. Hence, the `nonce` must be correctly sequenced for transactions to succeed. I hope to hear your comments and tips to tackle this, to improve Chainhammer and brings its use to the Polkadot ecosystem. Thanks.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.