Have questions or want the latest news?
Join the PoolTogether Discord or follow us on Twitter:
Documentation
https://v4.docs.pooltogether.com
Deployments
- BeaconTimelockTrigger
- DrawCalculatorTimelock
- L1TimelockTrigger
- L2TimelockTrigger
- ReceiverTimelockTrigger
Timelock contracts assist with Phase 1 in the roll-out of V4. Granting authority to the operations teams to prevent a "bad actor" oracle from incorrectly setting a draw or prize distribution params.
The DrawCalculatorTimelock adds a timelock for PrizeDistributor to execute a claim with the most recently pushed PrizeDistribution params pushed.
Both L1TimelockTrigger/L2TimelockTrigger contracts set a timelock or a "cooldown" period in the linked DrawCalculatorTimelock
contract. The DrawCalculatorTimelock
routes calculate
execution through a DrawCalculator
contract for the linked PrizeDistributor
contract.
The L1TimelockTrigger
contract pushes DrawLib.Draw
and DrawLib.PrizeDistribution
params onto the DrawBuffer
and PrizeDistributionBuffer
contracts.
The L2TimelockTrigger
pushes DrawLib.PrizeDistribution
params onto a PrizeDistributionBuffer
contract.
Core and Periphery contracts:
- https://github.com/pooltogether/v4-core
- https://github.com/pooltogether/v4-periphery
The project is made available as a NPM package.
$ yarn add @pooltogether/pooltogether-contracts
The repo can be cloned from Github for contributions.
$ git clone https://github.com/pooltogether/v4-timelock
$ yarn
We use direnv to manage environment variables. You'll likely need to install it.
cp .envrc.example .envrc
To run fork scripts, deploy or perform any operation with a mainnet/testnet node you will need an Infura API key.
We use Hardhat and hardhat-deploy
To run unit & integration tests:
$ yarn test
To run coverage:
$ yarn coverage
Ensure your environment variables are set up. Make sure your Alchemy URL is set. Now start a local fork:
$ yarn start-fork
Setup account impersonation and transfer eth:
$ ./scripts/setup.sh
Start a local node and deploy the top-level contracts:
$ yarn start
NOTE: When you run this command it will reset the local blockchain.
Deployment is maintained in a different repo.
Deployment is maintained in a different repo.