π
THIS IS COPIED FROM POOLTOGETHER TO RUN THE APP
The PoolTogether Prize Savings Protocol Ethereum smart contracts.
For an overview of the concepts and API please see the documentation
This project is available as an NPM package:
$ yarn add @pooltogether/pooltogether-contractsThere are deployment artifacts available in the deployments/ directory. This includes:
- Builders
- Proxy Factories
- Comptroller
- ProxyAdmin
Prize Pools and Prize Strategies are not included, as they are created using the Builders.
For example, to pull in the PoolWithMultipleWinnersBuilder artifact:
const PoolWithMultipleWinnersBuilder = require("@pooltogether/pooltogether-contracts/deployments/rinkeby/PoolWithMultipleWinnersBuilder.json");
const { abi, address, receipt } = PoolWithMultipleWinnersBuilder;Application Binary Interfaces for all PoolTogether contracts and related contracts are available in the abis/ directory.
For example, to pull in the PrizePool ABI:
const PrizePool = require("@pooltogether/pooltogether-contracts/abis/PrizePool.json");First clone this repository and enter the directory.
Install dependencies:
$ yarn
We use direnv to manage environment variables. You'll likely need to install it.
We use Hardhat and hardhat-deploy
To run unit & integration tests:
$ yarn testTo run coverage:
$ yarn coverageTo run fuzz tests:
$ yarn echidnaStart a local node and deploy the top-level contracts:
$ yarn startNOTE: When you run this command it will reset the local blockchain.
Start up a Hardhat Console:
$ hardhat console --network localhostNow you can load up the deployed contracts using hardhat-deploy:
> await deployments.all()If you want to send transactions, you can get the signers like so:
> let signers = await ethers.getSigners()Let's mint some Dai for ourselves:
> let dai = await ethers.getContractAt('ERC20Mintable', (await deployments.get('Dai')).address, signers[0])
> await dai.mint(signers[0]._address, ethers.utils.parseEther('10000'))
> ethers.utils.formatEther(await dai.balanceOf(signers[0]._address))Copy over .envrc.example to .envrc
$ cp .envrc.example .envrc
Make sure to update the enviroment variables with suitable values.
Now enable the env vars using direnv
$ direnv allow
Now deploy to a network like so:
$ yarn deploy rinkeby
It will update the deployments/ dir.