Skip to content

mike-fr13/pooltogether-pool-contracts

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

754 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PoolTogether Brand


PoolTogether Prize Savings Protocol

Coverage Status

built-with openzeppelin

The PoolTogether Prize Savings Protocol Ethereum smart contracts.

For an overview of the concepts and API please see the documentation

Setup

This project is available as an NPM package:

$ yarn add @pooltogether/pooltogether-contracts

Usage

Artifacts

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
ABIs

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')

Development

First clone this repository and enter the directory.

Switch to the version-3 branch:

$ git checkout version-3

Install dependencies:

$ yarn

We make use of Hardhat and hardhat-deploy

Testing

To run unit & integration tests:

$ yarn test

To run coverage:

$ yarn coverage

To run fuzz tests:

$ yarn echidna

Deployment

Deploy Locally

Start a local node and deploy the top-level contracts:

$ yarn start

NOTE: When you run this command it will reset the local blockchain.

Connect Locally

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))
Deploy to Live Networks

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.

About

PoolTogether prize-linked savings game Solidity smart contracts.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • JavaScript 57.0%
  • Solidity 42.8%
  • Shell 0.2%