National Patience Month


    0.0.6 • Public • Published


    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. 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 skipIfAlreadyDeployed parameter, if new contract(s) are added, their deployment configuration(s) should be added to the ./deploy/deploy.js script – 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 ./deployments.


    npm i @jbx-protocol/contracts

    DownloadsWeekly Downloads






    Unpacked Size

    3.18 MB

    Total Files


    Last publish


    • me.jango
    • odd-amphora