Tool for the synthesis and verification of Move smart contracts
For more information on the background and development of the following project please see here
Install the following:
- NodeJS, 10.x
- MongoDB
- Git
- Java
- GCC
- https://nuxmv.fbk.eu/index.php?n=Download.Download
- Note: If you are using the docker image to test locally, you MUST download the linux version
- Extract the downloaded file and place the contents of the "bin" folder (nuXmv file) into the verificationTools folder in the project
- Clone the repository:
git clone https://github.com/ekeilty17/move-smart-contracts
- Install the necessary packages:
cd move-smart-contracts
npm install
- Build React Scripts
npm run-script build
- Start the local MongoDB server:
mkdir sc_data
mongod --dbpath ./sc_data
- Start the application:
npm start
- Visit the application on:
http://127.0.0.1:8888/
For any changes to take affect, you will need to repeat Step 3 and Step 5 from above.
We write our tests using Mocha. You can run the tests using npm test
.
To utilize the docker image to test locally:
- Create a directory structure at the root/home directory of your computer (different from the project folder) like the following:
dockershare
--> blob-local-storage
--> db
- Within the project folder run the following command to build the doker image:
docker-compose build
# To run a clean re-build
docker-compose build --no-cache
- To run the docker image run the following command:
# Output of the server is displayed within the current terminal/command prompt directly
docker-compose up
# Run it as a background process
docker-compose up -d
This repository was built ontop of the VeriSolid smart-contracts repository to create a similar interface and configuration set-up. We also made use of the webgme-react-viz repository as a wrapper to set-up a visualizer as a react component. In terms of the verification process, VeriSolid's implementation is adapted for the Move language.
This project runs under the MIT License.
All Copyright information of used dependencies and transistive dependencies can be found in license.json.