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

Compiler fuzzer to ensure Tact correctness #133

Open
1 of 9 tasks
anton-trunov opened this issue Feb 15, 2024 · 0 comments
Open
1 of 9 tasks

Compiler fuzzer to ensure Tact correctness #133

anton-trunov opened this issue Feb 15, 2024 · 0 comments
Assignees
Labels
big This is a hard task, more like a project and will take a while to implement testing tracking-issue

Comments

@anton-trunov
Copy link
Member

anton-trunov commented Feb 15, 2024

The approach described in the Random testing of a higher-order blockchain language paper proved to be efficient for ensuring the correctness of an implementation of a smart contract language.

This should be ideally integrated to CI, although it might require some self-hosted infrastructure to run randomized tests for long periods of time (hours in some cases).

This requires the following steps:

  • Choose a property-based testing framework with suitable performance (at least 10k AST nodes per second)
  • Fuzz a minimal Tact subset: pure functions, a single contract with getters
    • Generate well-typed AST expressions
    • Write properties to test that generators generate well-typed expressions
    • Generate pure functions based on the given signature
    • Generate well-formed contracts with getters and some fields
    • Write a property that checks whether the generated contract translates to valid FunC code addressing Tact produces FunC code with errors #118
    • Implement infrastructure to execute the generated contract
  • Support the stateful subset of Tact
@byakuren-hijiri byakuren-hijiri self-assigned this Mar 6, 2024
byakuren-hijiri added a commit to byakuren-hijiri/tact that referenced this issue Mar 22, 2024
anton-trunov pushed a commit that referenced this issue Mar 22, 2024
@anton-trunov anton-trunov pinned this issue Apr 13, 2024
@anton-trunov anton-trunov changed the title Build fuzzing-like infrastructure to test Tact's correctness Compiler fuzzer for Tact correctness Apr 22, 2024
@anton-trunov anton-trunov changed the title Compiler fuzzer for Tact correctness Compiler fuzzer to ensure Tact correctness Apr 22, 2024
@anton-trunov anton-trunov added big This is a hard task, more like a project and will take a while to implement tracking-issue labels Apr 24, 2024
@anton-trunov anton-trunov unpinned this issue Jun 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
big This is a hard task, more like a project and will take a while to implement testing tracking-issue
Projects
None yet
Development

No branches or pull requests

2 participants