This Dockerfile allows to quickly try solc-verify using Docker.
The Dockerfile can be built with one of the following commands:
The following Dockerfile will clone the latest solitidy version from GitHub. This is useful if you only have the solc-verify Dockerfile, but not the sourcecode itself.
docker build -t solc-verify -f Dockerfile-solcverify.src .
Building locally is useful, if you are working on a local copy of solc-verify or in a CI pipeline.
# go back to solidity root folder
cd ..
# build docker image
docker build -t solc-verify -f docker/Dockerfile-solcverify-local.src .
The included runsv.sh
script can be used run the containerized solc-verify on programs residing on the host:
./runsv.sh Contract.sol [FLAGS]
Example:
./runsv.sh ../test/solc-verify/examples/Annotations.sol
Verify that the docker image is functioning correctly by validating one of the built in contracts. The following command instantiates the SOLC-Verify image, verifies a contract and then shuts down again:
PATH_TO_SAMPLE_CONTRACT=/solidity/test/solc-verify/examples/Annotations.sol
docker run --rm solc-verify:latest $PATH_TO_SAMPLE_CONTRACT
The command should return following messages:
C::add: OK
C::[implicit_constructor]: OK
C::[receive_ether_selfdestruct]: OK
Use --show-warnings to see 1 warning.
No errors found.
To validate your own contracts place them in a directory that can be mounted into a running container of SOLC-Verify. All you need is the absolute path to the location, where the contracts are located. The following command will mount the contracts located in $PATH_TO_CONTRACTS
into a running docker container of SOLC-verify and will then validate the contract with the name $CONTRACT_NAME
.
PATH_TO_CONTRACTS= # path where the contracts are located on the machine running the docker image
CONTRACT_NAME= # name of the contract to be validated
docker run --rm -v $PATH_TO_CONTRACTS:/contracts solc-verify:latest /contracts/$CONTRACT_NAME
For more information on running solc-verify and examples, see SOLC-VERIFY-README.md.