Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Frax middleman example #41

Merged
merged 8 commits into from
Jan 31, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions .github/actions/setup-repo/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Setup repo
description: Runs all steps to setup the repo (install node_modules, build, etc...)
inputs:
registry-token:
description: 'PAT to access registries'
runs:
using: 'composite'
steps:
- name: Get yarn cache directory path
id: yarn-cache-dir-path
shell: bash
run: |
echo "::set-output name=dir::$(yarn cache dir)"
echo "::set-output name=version::$(yarn -v)"

- uses: actions/setup-node@v3
with:
node-version: '20'

- uses: actions/cache@v2
id: yarn-cache
with:
path: |
**/node_modules
${{ steps.yarn-cache-dir-path.outputs.dir }}

key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-

- name: Install dependencies
shell: bash
run: echo "//npm.pkg.github.com/:_authToken=$GH_REGISTRY_ACCESS_TOKEN" >> .npmrc && yarn install --frozen-lockfile --verbose && rm -f .npmrc
env:
GH_REGISTRY_ACCESS_TOKEN: ${{ inputs.registry-token }}
60 changes: 35 additions & 25 deletions .github/workflows/ci-deep.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
name: "CI Deep"
name: 'CI Deep'

on:
schedule:
- cron: "0 3 * * 0" # at 3:00am UTC every Sunday
- cron: '0 3 * * 0' # at 3:00am UTC every Sunday
workflow_dispatch:
inputs:
fuzzRuns:
default: "10000"
description: "Unit: number of fuzz runs."
default: '10000'
description: 'Unit: number of fuzz runs.'
required: false

jobs:
@@ -19,15 +19,20 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 18
cache: "yarn"
cache: 'yarn'

- name: Setup repo
uses: ./.github/actions/setup-repo
with:
registry-token: ${{ secrets.GH_REGISTRY_ACCESS_TOKEN }}

- name: Install dependencies
run: yarn install

- name: Run solhint
run: yarn lint:check

- name: "Add lint summary"
- name: 'Add lint summary'
run: |
echo "## Lint result" >> $GITHUB_STEP_SUMMARY
echo "✅ Passed" >> $GITHUB_STEP_SUMMARY
@@ -37,12 +42,17 @@ jobs:
steps:
- uses: actions/checkout@v3
with:
submodules: "recursive"
submodules: 'recursive'

- uses: actions/setup-node@v3
with:
node-version: 18
cache: "yarn"
cache: 'yarn'

- name: Setup repo
uses: ./.github/actions/setup-repo
with:
registry-token: ${{ secrets.GH_REGISTRY_ACCESS_TOKEN }}

- name: Install dependencies
run: yarn install --frozen-lockfile
@@ -58,10 +68,10 @@ jobs:
- name: Compile foundry
run: yarn foundry:compile --sizes

- name: "Cache the build so that it can be re-used by the other jobs"
uses: "actions/cache/save@v3"
- name: 'Cache the build so that it can be re-used by the other jobs'
uses: 'actions/cache/save@v3'
with:
key: "build-${{ github.sha }}"
key: 'build-${{ github.sha }}'
path: |
cache-forge
out
@@ -70,27 +80,27 @@ jobs:
typechain
node_modules

- name: "Add build summary"
- name: 'Add build summary'
run: |
echo "## Build result" >> $GITHUB_STEP_SUMMARY
echo "✅ Passed" >> $GITHUB_STEP_SUMMARY

hardhat-tests:
needs: ["build", "lint"]
needs: ['build', 'lint']
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- uses: actions/setup-node@v3
with:
node-version: 18
cache: "yarn"
cache: 'yarn'

- name: "Restore the cached build"
uses: "actions/cache/restore@v3"
- name: 'Restore the cached build'
uses: 'actions/cache/restore@v3'
with:
fail-on-cache-miss: true
key: "build-${{ github.sha }}"
key: 'build-${{ github.sha }}'
path: |
cache-forge
out
@@ -108,29 +118,29 @@ jobs:
CI: true
ETH_NODE_URI_ARBITRUM: ${{ secrets.ETH_NODE_URI_ARBITRUM }}

- name: "Add test summary"
- name: 'Add test summary'
run: |
echo "## Hardhat Unit tests result" >> $GITHUB_STEP_SUMMARY
echo "✅ Passed" >> $GITHUB_STEP_SUMMARY

foundry-tests:
needs: ["build", "lint"]
needs: ['build', 'lint']
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: "recursive"
submodules: 'recursive'

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly

- name: "Restore the cached build"
uses: "actions/cache/restore@v3"
- name: 'Restore the cached build'
uses: 'actions/cache/restore@v3'
with:
fail-on-cache-miss: true
key: "build-${{ github.sha }}"
key: 'build-${{ github.sha }}'
path: |
cache-forge
out
@@ -145,7 +155,7 @@ jobs:
ETH_NODE_URI_OPTIMISM: ${{ secrets.ETH_NODE_URI_OPTIMISM }}
FOUNDRY_FUZZ_RUNS: ${{ github.event.inputs.fuzzRuns || '10000' }}

- name: "Add test summary"
- name: 'Add test summary'
run: |
echo "## Foundry Unit tests result" >> $GITHUB_STEP_SUMMARY
echo "✅ Passed" >> $GITHUB_STEP_SUMMARY
echo "✅ Passed" >> $GITHUB_STEP_SUMMARY
84 changes: 32 additions & 52 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@ on:
pull_request:
push:
branches:
- "main"
- 'main'

jobs:
lint:
@@ -16,15 +16,20 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 18
cache: "yarn"
cache: 'yarn'

- name: Setup repo
uses: ./.github/actions/setup-repo
with:
registry-token: ${{ secrets.GH_REGISTRY_ACCESS_TOKEN }}

- name: Install dependencies
run: yarn install

- name: Run solhint
run: yarn lint:check

- name: "Add lint summary"
- name: 'Add lint summary'
run: |
echo "## Lint result" >> $GITHUB_STEP_SUMMARY
echo "✅ Passed" >> $GITHUB_STEP_SUMMARY
@@ -33,12 +38,17 @@ jobs:
steps:
- uses: actions/checkout@v3
with:
submodules: "recursive"
submodules: 'recursive'

- uses: actions/setup-node@v3
with:
node-version: 18
cache: "yarn"
cache: 'yarn'

- name: Setup repo
uses: ./.github/actions/setup-repo
with:
registry-token: ${{ secrets.GH_REGISTRY_ACCESS_TOKEN }}

- name: Install dependencies
run: yarn install --frozen-lockfile
@@ -54,10 +64,10 @@ jobs:
- name: Compile foundry
run: yarn foundry:compile --sizes

- name: "Cache the build so that it can be re-used by the other jobs"
uses: "actions/cache/save@v3"
- name: 'Cache the build so that it can be re-used by the other jobs'
uses: 'actions/cache/save@v3'
with:
key: "build-${{ github.sha }}"
key: 'build-${{ github.sha }}'
path: |
cache-forge
out
@@ -66,27 +76,27 @@ jobs:
typechain
node_modules

- name: "Add build summary"
- name: 'Add build summary'
run: |
echo "## Build result" >> $GITHUB_STEP_SUMMARY
echo "✅ Passed" >> $GITHUB_STEP_SUMMARY

hardhat-tests:
needs: ["build", "lint"]
needs: ['build', 'lint']
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- uses: actions/setup-node@v3
with:
node-version: 18
cache: "yarn"
cache: 'yarn'

- name: "Restore the cached build"
uses: "actions/cache/restore@v3"
- name: 'Restore the cached build'
uses: 'actions/cache/restore@v3'
with:
fail-on-cache-miss: true
key: "build-${{ github.sha }}"
key: 'build-${{ github.sha }}'
path: |
cache-forge
out
@@ -95,37 +105,36 @@ jobs:
typechain
node_modules
- run: export NODE_OPTIONS=--max_old_space_size=11264

- name: Run unit tests
run: yarn hardhat:test
env:
ENABLE_GAS_REPORT: true
CI: true
ETH_NODE_URI_ARBITRUM: ${{ secrets.ETH_NODE_URI_ARBITRUM }}

- name: "Add test summary"
- name: 'Add test summary'
run: |
echo "## Hardhat Unit tests result" >> $GITHUB_STEP_SUMMARY
echo "✅ Passed" >> $GITHUB_STEP_SUMMARY

foundry-tests:
needs: ["build", "lint"]
needs: ['build', 'lint']
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
submodules: "recursive"
submodules: 'recursive'

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly

- name: "Restore the cached build"
uses: "actions/cache/restore@v3"
- name: 'Restore the cached build'
uses: 'actions/cache/restore@v3'
with:
fail-on-cache-miss: true
key: "build-${{ github.sha }}"
key: 'build-${{ github.sha }}'
path: |
cache-forge
out
@@ -137,39 +146,10 @@ jobs:
- name: Run Foundry tests
run: yarn foundry:test
env:
FOUNDRY_FUZZ_RUNS: "5000"
FOUNDRY_FUZZ_RUNS: '5000'
ETH_NODE_URI_OPTIMISM: ${{ secrets.ETH_NODE_URI_OPTIMISM }}

- name: "Add test summary"
- name: 'Add test summary'
run: |
echo "## Foundry Unit tests result" >> $GITHUB_STEP_SUMMARY
echo "✅ Passed" >> $GITHUB_STEP_SUMMARY

slither-analyze:
needs: ["build", "lint"]
permissions:
actions: "read"
contents: "read"
security-events: "write"
runs-on: "ubuntu-latest"
steps:
- name: "Check out the repo"
uses: "actions/checkout@v3"

- name: "Run Slither analysis"
uses: "crytic/slither-action@v0.3.0"
id: "slither"
with:
fail-on: "none"
sarif: "results.sarif"
node-version: 18

- name: "Upload SARIF file to GitHub code scanning"
uses: "github/codeql-action/upload-sarif@v2"
with:
sarif_file: ${{ steps.slither.outputs.sarif }}

- name: "Add Slither summary"
run: |
echo "## Slither result" >> $GITHUB_STEP_SUMMARY
echo "✅ Uploaded to GitHub code scanning" >> $GITHUB_STEP_SUMMARY
1 change: 1 addition & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@angleprotocol:registry=https://npm.pkg.github.com
Loading

Unchanged files with check annotations Beta

▓▓▓ ▓▓ ▓▓▓ ▓▓▓ ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓
*/
pragma solidity ^0.8.17;

Check warning on line 36 in contracts/DistributionCreator.sol

GitHub Actions / lint

Found more than One contract per file. 2 contracts found!
import { ReentrancyGuardUpgradeable } from "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol";
import { IERC20, IERC20Metadata } from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
import { IUniswapV3Pool } from "./interfaces/external/uniswap/IUniswapV3Pool.sol";
import "./utils/UUPSHelper.sol";

Check warning on line 45 in contracts/DistributionCreator.sol

GitHub Actions / lint

global import of path ./utils/UUPSHelper.sol is not allowed. Specify names to import individually or bind all exports of the module into a name (import "path" as Name)
import { DistributionParameters } from "./struct/DistributionParameters.sol";
import { UniswapTokenData, ExtensiveDistributionParameters } from "./struct/ExtensiveDistributionParameters.sol";
import { RewardTokenAmounts } from "./struct/RewardTokenAmounts.sol";
import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol";
import "./utils/UUPSHelper.sol";

Check warning on line 42 in contracts/Distributor.sol

GitHub Actions / lint

global import of path ./utils/UUPSHelper.sol is not allowed. Specify names to import individually or bind all exports of the module into a name (import "path" as Name)
struct MerkleTree {
// Root of a Merkle tree which leaves are `(address user, address token, uint amount)`
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.7;

Check warning on line 3 in contracts/interfaces/CoreModuleInterfaces.sol

GitHub Actions / lint

Found more than One contract per file. 4 contracts found!
/// @title IAngleMiddlemanGauge
/// @author Angle Core Team
pragma solidity ^0.8.17;
import { IAgToken } from "./IAgToken.sol";
import { ICore } from "./ICore.sol";

Check warning on line 6 in contracts/interfaces/ITreasury.sol

GitHub Actions / lint

imported name ICore is not used
/// @title ITreasury
/// @author Angle Core Team
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import "../DistributionCreator.sol";

Check warning on line 41 in contracts/middleman/MerklGaugeMiddleman.sol

GitHub Actions / lint

global import of path ../DistributionCreator.sol is not allowed. Specify names to import individually or bind all exports of the module into a name (import "path" as Name)
/// @title MerklGaugeMiddleman
/// @author Angle Labs, Inc.
pragma solidity ^0.8.17;
import "./MerklGaugeMiddleman.sol";

Check warning on line 5 in contracts/middleman/MerklGaugeMiddlemanPolygon.sol

GitHub Actions / lint

global import of path ./MerklGaugeMiddleman.sol is not allowed. Specify names to import individually or bind all exports of the module into a name (import "path" as Name)
/// @title MerklGaugeMiddlemanPolygon
/// @author Angle Labs, Inc.