/act

Smart contract specification language

Primary LanguageHaskellGNU Affero General Public License v3.0AGPL-3.0

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 -f default.nix exe

Developing

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

nix-shell

you can then use cabal as normal:

cd src
cabal v2-build # build
cabal v2-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-shell --command niv update