Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create a fuzzing tool for Checked<Tx> verification costing #1402

Open
xgreenx opened this issue Oct 5, 2023 · 0 comments
Open

Create a fuzzing tool for Checked<Tx> verification costing #1402

xgreenx opened this issue Oct 5, 2023 · 0 comments
Assignees

Comments

@xgreenx
Copy link
Collaborator

xgreenx commented Oct 5, 2023

Overview

After an analytic analysis of the codebase, we figured out the heaviest operation during transaction verification.

But it doesn't mean we found all potential places that should influence min_fee.

The purpose of this issue is to create a more accurate transaction costing model by identifying and addressing areas where costs are not adequately captured, thus minimizing risks such as liveness failures, unsynchronizable nodes, and unanticipated DA expenses.

Implementation details

The idea is to create a fuzzing test/util that fills random fields of the transaction and produces a valid Checked<Tx>.

The min_fee represents our expectation regarding how long it takes to validate the transaction. We can translate gas into execution time, and if the creation of Checked<Tx> takes more than expected time, then it means we undercharge for some fields.

Note

The creation of the fuzzing tool was started at #1156. So it can be used as a good base.

Creating the fuzzing tool and identifying problematic fields are two different tasks. But because the correctness of the tool can be verified only during its usage this issue describes both tasks. But if we are confident enough in the tool, we can split this issue into two and start work on the usage of the fuzzing tool as a separate step/PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants