rewrite of sei-load generator and sender. - #56
Conversation
| if err != nil { | ||
| return fmt.Errorf("tx.EthTx.MarshalBinary(): %w", err) | ||
| } | ||
| txData.TxPayloads = append(txData.TxPayloads, payload) |
There was a problem hiding this comment.
TxsWriter emits unsigned payloads
High Severity
Transaction signing moved into ShardedSender, so generators now hand off unsigned txs. The TxsDir path uses TxsWriter, which marshals EthTx directly without signing. Written tx_payloads are therefore not valid raw transactions for later submission.
Additional Locations (2)
Reviewed by Cursor Bugbot for commit 10fe1d9. Configure here.
| if err := funder.FundAccounts(ctx, cfg, addrs); err != nil { | ||
| return fmt.Errorf("failed to fund accounts: %w", err) | ||
| } | ||
| } |
There was a problem hiding this comment.
Funding skipped for txs-dir path
Medium Severity
Account funding now runs only in the ShardedSender branch. When TxsDir is set, FundAccounts is never called even if cfg.Funding is configured, so written txs can target unfunded accounts when replayed.
Reviewed by Cursor Bugbot for commit 59dd2f4. Configure here.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
There are 4 total unresolved issues (including 3 from previous reviews).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 2eb974a. Configure here.
| err, recvErr := utils.Recv(ctx, done) | ||
| if recvErr != nil { | ||
| return recvErr | ||
| } |
There was a problem hiding this comment.
Dry-run nonce lookup panics
Medium Severity
Dry-run with no endpoints is allowed, but a failed send on a tracked account still calls getNonce → clients[clientID]. With an empty client list that indexes clients[0] and panics instead of shutting down cleanly.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 2eb974a. Configure here.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
There are 4 total unresolved issues (including 3 from previous reviews).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 2eb974a. Configure here.
| err, recvErr := utils.Recv(ctx, done) | ||
| if recvErr != nil { | ||
| return recvErr | ||
| } |
There was a problem hiding this comment.
Dry-run nonce lookup panics
Medium Severity
Dry-run with no endpoints is allowed, but a failed send on a tracked account still calls getNonce → clients[clientID]. With an empty client list that indexes clients[0] and panics instead of shutting down cleanly.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 2eb974a. Configure here.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
There are 4 total unresolved issues (including 3 from previous reviews).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 2eb974a. Configure here.
| err, recvErr := utils.Recv(ctx, done) | ||
| if recvErr != nil { | ||
| return recvErr | ||
| } |
There was a problem hiding this comment.
Dry-run nonce lookup panics
Medium Severity
Dry-run with no endpoints is allowed, but a failed send on a tracked account still calls getNonce → clients[clientID]. With an empty client list that indexes clients[0] and panics instead of shutting down cleanly.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 2eb974a. Configure here.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
There are 4 total unresolved issues (including 3 from previous reviews).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 2eb974a. Configure here.
| err, recvErr := utils.Recv(ctx, done) | ||
| if recvErr != nil { | ||
| return recvErr | ||
| } |
There was a problem hiding this comment.
Dry-run nonce lookup panics
Medium Severity
Dry-run with no endpoints is allowed, but a failed send on a tracked account still calls getNonce → clients[clientID]. With an empty client list that indexes clients[0] and panics instead of shutting down cleanly.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 2eb974a. Configure here.


Primary reason for the rewrite is support for non-happy paths for autobahn loadtesting - rejected transactions/not successfully executed/etc. The idea is that if sending a tx fails, we need to check the account nonce before sending the next transaction. Note that this affects only accounts from the long-lived pools - accounts generated for the sake of sending just 1 transaction (aka "new accounts") do not benefit from this extra logic.
The nonces, as well as the txs waiting to be sent are managed by TxsQueue, which ensures that:
TxsQueue is managed by ShardedSender.
Additionally