@pooltogether/v4-timelocks

1.1.0 • Public • Published

PoolTogether V4 Timelock Contracts

Tests Coverage Status built-with openzeppelin GPLv3 license

Have questions or want the latest news?
Join the PoolTogether Discord or follow us on Twitter:

Discord Twitter

Documention
https://docs.pooltogether.com

Deployments

Overview

Timelock contracts assist with Phase 1 in the roll-out of V4. Granting authority to the operrations teams to prevent a "bad actor" oracle from incorrectly setting a draw or prize distribution params.

DrawCalculatorTimelock

The DrawCalculatorTimelock adds a timelock for PrizeDistributor to execute a claim with the most recently pushed PrizeDistribution params pushed.

L1TimelockTrigger & L2TimelockTrigger

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.

L1TimelockTrigger

The L1TimelockTrigger contract pushes DrawLib.Draw and DrawLib.PrizeDistribution params onto the DrawBuffer and PrizeDistributionBuffer contracts.

L2TimelockTrigger

The L2TimelockTrigger pushes DrawLib.PrizeDistribution params onto a PrizeDistributionBuffer contract.

Core and Timelock contracts:

Getting Started

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 .envrv

To run fork scripts, deploy or perform any operation with a mainnet/testnet node you will need an Infura API key.

Testing

We use Hardhat and hardhat-deploy

To run unit & integration tests:

$ yarn test

To run coverage:

$ yarn coverage

Fork Testing

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

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.

Readme

Keywords

none

Package Sidebar

Install

npm i @pooltogether/v4-timelocks

Weekly Downloads

76

Version

1.1.0

License

MIT

Unpacked Size

9.31 MB

Total Files

154

Last publish

Collaborators

  • asselstine