@dtribe/dtribe-contracts v3.4.7
dTribe.gg Prize Savings Protocol
The dTribe.gg Prize Savings Protocol BNB Chain 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 @dtribe/dtribe-contractsUsage
Artifacts
There are deployment artifacts available in the deployments/ directory. For example, to pull in the PoolWithMultipleWinnersBuilder artifact:
const PoolWithMultipleWinnersBuilder = require('@dtribe/dtribe-contracts/deployments/rinkeby/PoolWithMultipleWinnersBuilder.json')
const {
abi,
address,
receipt
} = PoolWithMultipleWinnersBuilderABIs
Application Binary Interfaces for all dTribe.gg contracts and related contracts are available in the abis/ directory.
For example, to pull in the PrizePool ABI:
const PrizePool = require('@dtribe/dtribe-contracts/abis/PrizePool.json')Development
First clone this repository and enter the directory.
Install dependencies:
$ yarnWe use direnv to manage environment variables. You'll likely need to install it.
Testing
We use Hardhat and hardhat-deploy
To run unit & integration tests:
$ yarn testTo run coverage:
$ yarn coverageTo run fuzz tests:
$ yarn echidnaFork Testing
Ensure your environment variables are set up. Make sure your Alchemy URL is set. Now start a local fork:
$ yarn start-forkSetup account impersonation and transfer eth:
$ ./scripts/setup.shDeployment
Deploy Locally
Start a local node and deploy the top-level contracts:
$ yarn startNOTE: When you run this command it will reset the local blockchain.
Connect Locally
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))Deploy to Live Networks
Copy over .envrc.example to .envrc
$ cp .envrc.example .envrcMake sure to update the enviroment variables with suitable values.
Now enable the env vars using direnv
$ direnv allowNow deploy to a network like so:
$ yarn deploy rinkebyIt will update the deployments/ dir.