argotorg / argotorg/fe

Prevent common & tricky bugs at compile time

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.