eth-erc20

ERC20 interface and example giftable token contract
Log | Files | Refs | LICENSE

commit e811575c336f51a415f00596f2ca4b75ae7dc5b4
parent c7b8ccfa622076789602a37bb6f29841c7cfc4d3
Author: Blair Vanderlugt <blair.vanderlugt@gmail.com>
Date:   Tue, 25 Jan 2022 15:36:22 +0000

feat: seperate solc container for resuse, add caching, run tests

Diffstat:
M.gitlab-ci.yml | 48++++++++++++++++++++++++++++++++----------------
DDockerfile | 33---------------------------------
AREADME.md | 25+++++++++++++++++++++++++
Mpython/run_tests.sh | 0
4 files changed, 57 insertions(+), 49 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml @@ -2,25 +2,41 @@ stages: - test - slither-analyzer +variables: + PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" + +cache: + paths: + - .cache/pip + - venv/ + +before_script: + - python -V # Print out python version for debugging + - pip install virtualenv + - virtualenv venv + - source venv/bin/activate + test: - image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-py-alpine:latest - cache: - - key: - files: - - requirements.txt - - test_requirements.txt - paths: - - /root/.cache/pip + image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-python:latest script: - - cd python - - pip install --extra-index-url https://pip.grassrootseconomics.net:8433 -r test_requirements.txt - - pip install --extra-index-url https://pip.grassrootseconomics.net:8433 -r test_requirements.txt - - bash run_tests.sh - + # build abi + - 'echo "Running Solc Version: $(solc --version)"' + - cd solidity + - solc --evm-version=byzantium GiftableToken.sol --abi | awk 'NR>3' > GiftableToken.abi.json + # build bin + - solc GiftableToken.sol --bin | awk 'NR>3' > GiftableToken.bin && + truncate -s "$((`stat -t -c "%s" GiftableToken.bin`-1))" GiftableToken.bin + # install test dependencies + - cd ../python + - export PYTHONPATH=. + - pip install --extra-index-url https://pip.grassrootseconomics.net + --extra-index-url https://gitlab.com/api/v4/projects/27624814/packages/pypi/simple + -r requirements.txt -r test_requirements.txt + # run tests + - bash run_tests.sh slither-analize: - image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-py-alpine:latest + image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-python:latest + allow_failure: true script: - - pip install slither-analyzer - slither solidity/ - diff --git a/Dockerfile b/Dockerfile @@ -1,33 +0,0 @@ -FROM ethereum/solc:0.6.12 - -FROM python:3.8.6-alpine - -COPY --from=0 /usr/bin/solc /usr/bin/solc - -RUN apk update &&\ - apk add gcc bash musl-dev libffi-dev openssl-dev autoconf automake build-base \ - libtool pkgconfig python3-dev cargo - -WORKDIR /usr/src - -# Try to keep everything above here re-usable! - -COPY ./solidity/ /usr/src/giftable_erc20_token/solidity/ -COPY ./python/ /usr/src/giftable_erc20_token/python/ - -RUN chmod +x ./python/run_tests.sh - -RUN cd giftable_erc20_token/solidity && \ - solc GiftableToken.sol --abi | awk 'NR>3' > GiftableToken.abi.json - -RUN cd giftable_erc20_token/solidity && \ - solc GiftableToken.sol --bin | awk 'NR>3' > GiftableToken.bin && \ - truncate -s "$((`stat -t -c "%s" GiftableToken.bin`-1))" GiftableToken.bin - -RUN cd giftable_erc20_token/python && \ - pip install --extra-index-url https://pip.grassrootseconomics.net:8433 . - -RUN pip install slither-analyzer - -# To deploy: -# giftable-token-deploy --contracts-dir giftable_erc20_token/solidity/ <amount> diff --git a/README.md b/README.md @@ -0,0 +1,25 @@ +# ETH-ERC20 Solidity Contract + + +### solidity + +To generate bytecode and tests install solc 8.x.x and run the solc bits below or execute the following: + +``` +docker run -v `pwd`:/src registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-python:latest solc --evm-version=byzantium solidity/GiftableToken.sol --abi +``` + +``` +docker run -v `pwd`:/src registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-python:latest solc GiftableToken.sol --bin | awk 'NR>3' > GiftableToken.bin +``` + +### python unit tests + +``` +pip install --extra-index-url https://gitlab.com/api/v4/projects/27624814/packages/pypi/simple \ +--extra-index-url https://pip.grassrootseconomics.net \ +-r requirements.txt -r test_requirements.txt + +bash python/run_tests.sh + +``` diff --git a/python/run_tests.sh b/python/run_tests.sh