Go to file
fiveminutes 613169c1d6 Add attribution header as a hint 2024-04-19 18:32:49 -04:00
challenges Add attribution header as a hint 2024-04-19 18:32:49 -04:00
static Make clipboard.js dependency local 2024-04-17 19:02:32 -04:00
templates Tutorial -> information for Holesky repo 2024-04-19 13:51:27 -04:00
tests Make dependencies all work together 2024-04-19 01:13:32 -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 Make dependencies all work together 2024-04-19 01:13:32 -04:00
easyweb3.py Fix default account var name 2024-04-19 01:20:18 -04:00
icontract.py Add constructor args function to IContract and update 01_naive_programmer 2024-04-18 17:57:12 -04:00
requirements.txt Make dependencies all work together 2024-04-19 01:13:32 -04:00
run.py Add 404 page 2024-04-17 17:24:14 -04:00
util.py Add constructor args function to IContract and update 01_naive_programmer 2024-04-18 17:57:12 -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