๐
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-contracts
There 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 test
To run coverage:
$ yarn coverage
To run fuzz tests:
$ yarn echidna
Start a local node and deploy the top-level contracts:
$ yarn start
NOTE: When you run this command it will reset the local blockchain.
Start up a Hardhat Console:
$ hardhat console --network localhost
Now 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.