Prevent common & tricky bugs at compile time
- Dominant language
- Rust
- Stars
- 1.7k
- Forks
- 218
- Avg merge
- 1d 4h
- Merged PRs (30d)
- 8
Description
### What is wrong?
There are many classes of bugs and unexpected behaviors that can occur in smart contracts. There are many resources cataloguing and classifying these. There is also available research on how to prevent them with proper design patterns in languages such as Solidity as well as on experimental languages that prevent them with different type systems. It is currently only partially defined what Fe's type system is. It is also unclear which classes of errors or unexpected (but non-erroneous though non-desirable) behaviors that are prevented by Fe.
### How can it be fixed
We should skim available research and compile a history of notable so-called "smart contract hacks". Then, we should identify how these problems can be reduced to statically detectable patterns and/or type errors, which we can then incorporate into Fe's compile-time analysis and type checking.
In many ways, smart contract execution is similar to a single threaded concurrent program. Therefore, some of the more sophisticated issues that appear in smart contract systems are potentially resolved by principles similar to those employed by compiled languages that are meant to provide strong protection against concurrency bugs.
Contributor guide
No contributing guide indexed for this repository
Research direction
No files, tests, or entry points are named. Start by reviewing research on smart-contract bugs, notable hacks, Solidity design patterns, and type systems; map the findings to Fe's existing compile-time analysis and type checking. Done means the relevant bug classes and actionable Fe protections are clearly defined.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust, solidity
- Domain
- blockchain, compilers, security
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100