- Docker
- solc-select
- mpwn
- Python 3
You'll need to update the following environment variables:
RPC_URL
to a valid Ethereum JSON-RPC endpointPYTHONPATH
to point to mpwn
You'll also need to manually install the following:
solc-select install 0.4.16 0.4.24 0.5.12 0.6.12 0.7.0 0.7.6 0.8.0
pip install ecdsa sha3
./build
Running a challenge will open a port which users will nc
to. For Ethereum related
challenges, an additional port must be supplied so that users can connect to the Ethereum
node (which forks from mainnet state)
./run babycrypto 31337
On another terminal:
nc localhost 31337
For ETH challenges:
./run bank 31337 8545
./solve
- Copy one of the existing challenge directories and rename it to your challenge's name
- Edit the
info.yaml
to add your details - Add your contracts under the
public/contracts
directory - Add any contracts which are supposed to be private, such as the source code for a rev challenge
or a challenge solution under the
contracts/private
directory - Add it to the build script with the dirname and compiler version
- (Optional) Allow it to be auto-solved:
- Do either of the following:
- Add an
private/Exploit.sol
file with aconstructor(Setup setup)
constructor that solves the challenge - Add a
private/solve.py
if it requires additional actions to be executed (e.g. babycrypto, vault)
- Add an
- Then add it to the
solve
script
- Do either of the following: