Go to file
fiveminutes 9f54e626cb Update testnet from Rinkeby to Holesky 2024-04-17 18:40:14 -04:00
challenges Update some tests and add ETH_RPC_URL option 2024-04-17 18:26:07 -04:00
static Remove old 404 page 2024-04-17 18:28:34 -04:00
templates Update testnet from Rinkeby to Holesky 2024-04-17 18:40:14 -04:00
tests Update some tests and add ETH_RPC_URL option 2024-04-17 18:26:07 -04:00
updating Add site down placeholder 2019-05-20 14:51:30 -04:00
.gitignore Update to current Ethereum Python APIs, site now runs 2019-01-24 19:01:56 +00:00
ADDING_NEW_CHALLENGES.md update documentation 2019-04-03 17:03:21 -04:00
README.md Update testnet from Rinkeby to Holesky 2024-04-17 18:40:14 -04:00
config.py Update some tests and add ETH_RPC_URL option 2024-04-17 18:26:07 -04:00
easyweb3.py Update some tests and add ETH_RPC_URL option 2024-04-17 18:26:07 -04:00
icontract.py BROKEN SOURCES DO NOT USE 2019-03-06 16:19:21 -05:00
requirements.txt Fix correct pip-upgrader package 2024-04-17 18:01:41 -04:00
run.py Add 404 page 2024-04-17 17:24:14 -04:00
util.py Update is_address function calls 2024-04-17 17:24:14 -04:00

README.md

Hack this Contract Website

What is this

This is the code that runs the hackthiscontract.io website.

Running it

  1. geth --holesky (starts ethereum node on the Holesky test network)
  2. source hackthiscontractenv/bin/activate (starts virtualenv)
  3. In dev: python3 run.py - In prod: waitress-serve run:app
  4. geth --holesky --rpc --rpccorsdomain "https://remix.ethereum.org" (start JS console and enable remix debugging)

Dependencies

  • python3 + pip
  • virtualenv

Installation

  1. pip3 install -r requirements.txt
  2. 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