This repo contains the Juicebox Protocol smart contracts.
It was created at the time of the
V2 rewrite, which requires a full migration from
V1 contracts are included for migration tests and posterity, but in general the repo is geared towards
V2 and beyond.
To deploy the contracts to a local blockchain, run the following:
yarn chain --network hardhat
To run tests (all, unit, integration):
yarn test yarn test:unit yarn test:integration
You can also filter by version, test name, etc.:
yarn test:unit --grep "ProxyPaymentAddressManager"
Juicebox uses the Hardhat Deploy plugin to deploy contracts to a given network. But before using it, you must create a
./mnemonic.txt file containing the mnemonic phrase of the wallet used to deploy. You can generate a new mnemonic using this tool. Generate a mnemonic at your own risk.
Then, to execute the
./deploy/deploy.js script, run the following:
npx hardhat deploy --network $network
Contract artifacts will be outputted to
./deployments/$network/** and should be checked in to the repo.
NOTE: Since we make heavy use of the
skipIfAlreadyDeployedparameter, if new contract(s) are added, their deployment configuration(s) should be added to the
./deploy/deploy.jsscript – not a one-off.
To verify the contracts on Etherscan, make sure you have an
ETHERSCAN_API_KEY set in your
./.env file. Then run the following:
npx hardhat --network $network etherscan-verify
This will verify all of the deployed contracts in