0x0918 / act

Smart contract specification language

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Act

This project is an effort by several groups working on formal methods for Ethereum smart contracts, aiming at creating a simple but effective language to write formal specification. It extends on the previous Act project.

Some general features it hopes to achieve are:

  • Simple structure and logic.
  • Support writing properties on a high level (closer to Solidity/Vyper) as well as on the machine level.
  • Cross-tool communication: Different tools might be able to generate different knowledge and use the specification language to exchange information.
  • No attachment to a particular logic. If a tool wishes to support certain expressions, extensions can be written.

More in depth documentation can be found in The Act Book.

Building

With nix:

nix build

Developing

Enter a nix-shell to get the dependencies of the project:

nix develop

you can then use cabal as normal:

cd src
cabal build # build
cabal repl  # enter a repl instance

to execute the unit tests:

make test # run all tests
cd src && cabal v2-test # run haskell tests

To update the project dependencies run:

nix flake update

About

Smart contract specification language

License:GNU Affero General Public License v3.0


Languages

Language:Haskell 79.0%Language:Coq 5.7%Language:Yacc 4.7%Language:Nix 3.1%Language:Logos 2.4%Language:Makefile 2.3%Language:Solidity 1.7%Language:Python 0.9%Language:SMT 0.2%Language:Shell 0.1%