Ethereum is a platform for writing decentralized, trustless applications. For a complete, rigorous description of Ethereum, you can visit the yellow paper which is also mirrored under the doc/ subdirectory of this repository. Ethereum clients, of which there are many, implement the Ethereum Virtual Machine (EVM). They run code hosted on the blockchain (called "contracts"), at the request of users on the network, and then publish a block which reflects the state change induced by the code.
This project provides only a symbolic implementation of the Ethereum Virtual Machine. All elements of the environment are represented purely symbolically, for now. The user can provide EVM bytecode instructions which will be symbolically executed, and possible errors will be reported with models for the environment and input which would yield those errors.
Once you have it compiled and running, you can use -h or --help to print the usage instructions for the tool.
I develop on a Mac, these are all available as packages via Homebrew. I imagine your system also has packages for these.
% stack setup
% stack build
The stack setup
stage is only necessary the first time. This will sandbox a GHC install.
Every time after you need only run stack build
.
% stack exec symevm
% ./example.sh