Updated fork of https://github.com/pdaian/hackthiscontract
fiveminutes 613169c1d6 | ||
---|---|---|
challenges | ||
static | ||
templates | ||
tests | ||
updating | ||
.gitignore | ||
ADDING_NEW_CHALLENGES.md | ||
README.md | ||
config.py | ||
easyweb3.py | ||
icontract.py | ||
requirements.txt | ||
run.py | ||
util.py |
README.md
Hack this Contract Website
What is this
This is the code that runs the hackthiscontract.io website.
Running it
geth --holesky (starts ethereum node on the Holesky test network)
source hackthiscontractenv/bin/activate (starts virtualenv)
- In dev:
python3 run.py
- In prod:waitress-serve run:app
geth --holesky --rpc --rpccorsdomain "https://remix.ethereum.org"
(start JS console and enable remix debugging)
Dependencies
- python3 + pip
- virtualenv
Installation
pip3 install -r requirements.txt
- Change the paths in
config.py
to match your system.
Directory Structure
challenges
- Contains the solidity files, abis, and graders for each challenge.static
- Website assets. CSS, images, etc.templates
- Flask Jinja2 templates for some of the pages on hackthiscontract.tests
- Unit tests.
Run unit tests
Download the latest version of https://github.com/foundry-rs/foundry and run ./anvil
. Then run
python3 ./tests/test_easyweb3.py
Nginx Config
Proxy Pass notes:
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Port $server_port;
proxy_pass http://127.0.0.1:8080;
}
Updating
If this repository and its dependencies need to be updated, we recommend running https://github.com/simion/pip-upgrader:
pip install pip-upgrader
pip-upgrade