drandreaskrueger / drandreaskrueger/chainhammer

Need to improve to a more realistic Web3 transaction

Open
#42 0 comments 0 reactions 0 assignees View on GitHub
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.