Skip to content

Commit

Permalink
Merge pull request #264 from eonian-core/move-upgradable-logic-to-sep…
Browse files Browse the repository at this point in the history
…arate-folder

Move upgradeable logic to separate package
  • Loading branch information
LeoVS09 authored Jul 5, 2024
2 parents f3d846c + e797eac commit 738452f
Show file tree
Hide file tree
Showing 69 changed files with 4,236 additions and 290 deletions.
95 changes: 87 additions & 8 deletions .github/workflows/verify-smart-contracts.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ jobs:
cd packages/contracts
yarn lint:license
test:
name: Test contracts
check-vulnerabilities:
name: Check vulnerabilities
runs-on: ubuntu-latest

steps:
Expand Down Expand Up @@ -79,24 +79,103 @@ jobs:
cat slither-result.json
echo "Static analyzer check finished"
unit-test:
name: Unti Test Contracts
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
with:
submodules: recursive

- name: Setup NodeJS
uses: actions/setup-node@v3
with:
node-version: "20"
cache: "yarn"

- name: Install dependencies
run: yarn --ignore-scripts

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly-e15e33a07c0920189fc336391f538c3dad53da73 # https://github.com/foundry-rs/foundry/releases/tag/nightly-e15e33a07c0920189fc336391f538c3dad53da73

# Need for hardhat scripts
- name: Link packages
run: yarn

- name: Run tests (tools)
- name: Run tests (foundry)
run: |-
cd packages/contracts
yarn test:tools
FOUNDRY_FUZZ_RUNS=1000 forge test -vvv --gas-report
- name: Run tests (foundry)
integration-test:
name: Integration Test Contracts
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
with:
submodules: recursive

- name: Setup NodeJS
uses: actions/setup-node@v3
with:
node-version: "20"
cache: "yarn"

- name: Install dependencies
run: yarn --ignore-scripts

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly-e15e33a07c0920189fc336391f538c3dad53da73 # https://github.com/foundry-rs/foundry/releases/tag/nightly-e15e33a07c0920189fc336391f538c3dad53da73

# Need for hardhat scripts
- name: Link packages
run: yarn

- name: Run tests
env:
SEPOLIA_RPC_URL: ${{ secrets.SEPOLIA_RPC_URL }}
run: |-
cd packages/contracts
FOUNDRY_FUZZ_RUNS=1000 forge test -vvv --gas-report
USE_BSC_FORK=true yarn test:hardhat:bsc
deploy-test:
name: Integration Test Deploy Logic
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
with:
submodules: recursive

- name: Setup NodeJS
uses: actions/setup-node@v3
with:
node-version: "20"
cache: "yarn"

- name: Install dependencies
run: yarn --ignore-scripts

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly-e15e33a07c0920189fc336391f538c3dad53da73 # https://github.com/foundry-rs/foundry/releases/tag/nightly-e15e33a07c0920189fc336391f538c3dad53da73

# Need for hardhat scripts
- name: Link packages
run: yarn

- name: Run tests (hardhat)
- name: Run tests
env:
SEPOLIA_RPC_URL: ${{ secrets.SEPOLIA_RPC_URL }}
run: |-
cd packages/contracts
USE_BSC_FORK=true yarn test:hardhat
yarn test:hardhat:deploy
64 changes: 64 additions & 0 deletions .github/workflows/verify-upgradeable.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: Verify Upgradeable

on:
push:
branches:
- main
- staging
- development

pull_request:
branches:
- main
- staging
- development
types:
- opened
- synchronize

jobs:
build:
name: Build Upgradeable
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
with:
submodules: recursive

- name: Setup NodeJS
uses: actions/setup-node@v2
with:
node-version: "20"
cache: "yarn"

- name: Install dependencies
run: yarn --ignore-scripts

- name: Build
run: |-
cd packages/upgradeable
yarn build
test:
name: Test Upgradeable
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
with:
submodules: recursive

- name: Setup NodeJS
uses: actions/setup-node@v2
with:
node-version: "20"
cache: "yarn"

- name: Install dependencies
run: yarn --ignore-scripts

- name: Run tests
run: |-
cd packages/upgradeable
yarn test
1 change: 1 addition & 0 deletions CONTRIBUTE.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Examples:

* `yarn lerna add [package-name] --scope=@eonian/contracts` - add to contracts package
* `yarn lerna add [package-name] --scope=@eonian/subgraph` - add to subgraph package
* `yarn lerna add [package-name] --scope=@eonian/upgradeable` - add to upgradable package

## Graphql types code generation

Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
"build:contracts": "lerna run build --scope='@eonian/contracts'",
"test:contracts": "lerna run test --scope='@eonian/contracts'",
"dev:contracts": "lerna run dev --scope='@eonian/contracts'",
"serve:contracts": "lerna run serve --scope='@eonian/contracts'"
"serve:contracts": "lerna run serve --scope='@eonian/contracts'",
"prepublish": "lerna exec --scope='@eonian/upgradeable' -- yarn prepublish"
},
"engines": {
"node": ">=20.0.0"
Expand Down
6 changes: 3 additions & 3 deletions packages/contracts/hardhat.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ import 'hardhat-docgen'
import '@nomicfoundation/hardhat-chai-matchers'
import '@nomicfoundation/hardhat-foundry'

import { Chain, getChainForFork } from './hardhat/types'
import '@eonian/upgradeable'

import { Chain, getChainForFork, resolveHardhatForkConfig } from '@eonian/upgradeable'
import './hardhat/deployment'
import './hardhat/tasks'
import './hardhat/overrides'

import { resolveHardhatForkConfig } from './hardhat/forks'

const bscMainnet: NetworkUserConfig = {
url: 'https://bsc-dataseed.binance.org/',
chainId: 56,
Expand Down
5 changes: 2 additions & 3 deletions packages/contracts/hardhat/deployment/addresses/ApeSwap.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Chain, TokenSymbol } from '../../types'
import type { LookupMap } from './BaseAddresses'
import { BaseAddresses } from './BaseAddresses'
import { Chain, TokenSymbol, BaseAddresses } from '@eonian/upgradeable'
import type { LookupMap } from '@eonian/upgradeable'

export class ApeSwap extends BaseAddresses {
protected getLookupMap(): LookupMap {
Expand Down
5 changes: 2 additions & 3 deletions packages/contracts/hardhat/deployment/addresses/Chainlink.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Chain, TokenSymbol } from '../../types'
import type { LookupMap } from './BaseAddresses'
import { BaseAddresses } from './BaseAddresses'
import { Chain, TokenSymbol, BaseAddresses } from '@eonian/upgradeable'
import type { LookupMap } from '@eonian/upgradeable'

export class Chainlink extends BaseAddresses {
protected getLookupMap(): LookupMap {
Expand Down
5 changes: 2 additions & 3 deletions packages/contracts/hardhat/deployment/addresses/ERC20.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Chain, TokenSymbol, getTokenAddress } from '../../types'
import type { LookupMap } from './BaseAddresses'
import { BaseAddresses } from './BaseAddresses'
import { Chain, TokenSymbol, getTokenAddress, BaseAddresses } from '@eonian/upgradeable'
import type { LookupMap } from '@eonian/upgradeable'

export class ERC20 extends BaseAddresses {
protected getLookupMap(): LookupMap {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { resolveChain, resolveNetworkEnvironment } from '../../types'
import type { LookupMap } from './BaseAddresses'
import { BaseAddresses } from './BaseAddresses'
import { resolveChain, resolveNetworkEnvironment, BaseAddresses} from '@eonian/upgradeable'
import type { LookupMap } from '@eonian/upgradeable'

export class EonianHealthCheck extends BaseAddresses {
protected async getLookupMap(): Promise<LookupMap> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { resolveChain, resolveNetworkEnvironment } from '../../types'
import type { LookupMap } from './BaseAddresses'
import { BaseAddresses } from './BaseAddresses'
import { resolveChain, resolveNetworkEnvironment, BaseAddresses} from '@eonian/upgradeable'
import type { LookupMap } from '@eonian/upgradeable'

export class EonianTreasury extends BaseAddresses {
protected async getLookupMap(): Promise<LookupMap> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { TokenSymbol, resolveChain, resolveNetworkEnvironment } from '../../types'
import type { LookupMap } from './BaseAddresses'
import { BaseAddresses } from './BaseAddresses'
import { TokenSymbol, resolveChain, resolveNetworkEnvironment, BaseAddresses } from '@eonian/upgradeable'
import type { LookupMap } from '@eonian/upgradeable'

export class EonianVault extends BaseAddresses {
protected async getLookupMap(): Promise<LookupMap> {
Expand Down
5 changes: 2 additions & 3 deletions packages/contracts/hardhat/deployment/addresses/GelatoOps.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Chain } from '../../types'
import type { LookupMap } from './BaseAddresses'
import { BaseAddresses } from './BaseAddresses'
import { Chain, BaseAddresses } from '@eonian/upgradeable'
import type { LookupMap } from '@eonian/upgradeable'

// More contract addresses at https://docs.gelato.network/developer-products/gelato-ops-smart-contract-automation-hub/contract-addresses
export class GelatoOps extends BaseAddresses {
Expand Down
3 changes: 1 addition & 2 deletions packages/contracts/hardhat/deployment/addresses/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import type { HardhatRuntimeEnvironment } from 'hardhat/types'
import { extendEnvironment } from 'hardhat/config'
import type { TokenSymbol } from '../../types'
import type { BaseAddresses } from './BaseAddresses'
import type { TokenSymbol, BaseAddresses } from '@eonian/upgradeable'
import { ApeSwap } from './ApeSwap'
import { GelatoOps } from './GelatoOps'
import { ERC20 } from './ERC20'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { HardhatRuntimeEnvironment } from 'hardhat/types'
import { TokenSymbol } from '../types'
import { TokenSymbol } from '@eonian/upgradeable'
import { type ApeLendingStrategy } from '../../typechain-types'
import { type DeployResult, DeployStatus } from './plugins/Deployer'
import { type DeployResult, DeployStatus } from '@eonian/upgradeable'
import { Addresses } from './addresses'

export default async function deployApeLendingStrategy(token: TokenSymbol, hre: HardhatRuntimeEnvironment): Promise<DeployResult> {
Expand Down
2 changes: 1 addition & 1 deletion packages/contracts/hardhat/deployment/deployHealthCheck.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { HardhatRuntimeEnvironment } from 'hardhat/types'
import type { LossRatioHealthCheck } from '../../typechain-types'
import { type DeployResult } from './plugins/Deployer'
import { type DeployResult } from '@eonian/upgradeable'

export default async function deployHealthCheck(hre: HardhatRuntimeEnvironment): Promise<DeployResult> {
const initializeArguments: Parameters<LossRatioHealthCheck['initialize']> = [
Expand Down
4 changes: 2 additions & 2 deletions packages/contracts/hardhat/deployment/deployVFT.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import type { HardhatRuntimeEnvironment } from 'hardhat/types'
import { type DeployResult, type TokenSymbol, DeployStatus } from '@eonian/upgradeable'
import type { VaultFounderToken } from '../../typechain-types'
import type { TokenSymbol } from '../types'
import { Addresses } from './addresses'
import { type DeployResult, DeployStatus } from './plugins/Deployer'


export default async function deployVFT(token: TokenSymbol, hre: HardhatRuntimeEnvironment): Promise<DeployResult> {
const addresses = await getAddreses(token, hre)
Expand Down
7 changes: 3 additions & 4 deletions packages/contracts/hardhat/deployment/deployVault.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import type { HardhatRuntimeEnvironment } from 'hardhat/types'
import type { Vault } from '../../typechain-types'
import type { TokenSymbol } from '../types'
import { NetworkEnvironment, resolveNetworkEnvironment } from '../types'
import { type DeployResult } from './plugins/Deployer'
import { Addresses } from '.'
import type { TokenSymbol, DeployResult } from '@eonian/upgradeable'
import { NetworkEnvironment, resolveNetworkEnvironment } from '@eonian/upgradeable'
import { Addresses } from './addresses'

export default async function deployVault(token: TokenSymbol, hre: HardhatRuntimeEnvironment): Promise<DeployResult> {
const addresses = await getAddreses(token, hre)
Expand Down
2 changes: 1 addition & 1 deletion packages/contracts/hardhat/deployment/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
export * from './plugins'
export * from './addresses'

29 changes: 0 additions & 29 deletions packages/contracts/hardhat/deployment/plugins/index.ts

This file was deleted.

2 changes: 1 addition & 1 deletion packages/contracts/hardhat/overrides.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as hardhatTypechain from '@typechain/ethers-v6/dist/codegen/hardhat'
import { extendEnvironment } from 'hardhat/config'
import type { HardhatRuntimeEnvironment } from 'hardhat/types'
import { type AvailableHardhatNetwork, Chain, getChainForFork } from './types'
import { type AvailableHardhatNetwork, Chain, getChainForFork } from '@eonian/upgradeable'

const generateHardhatHelper = hardhatTypechain.generateHardhatHelper

Expand Down
Loading

0 comments on commit 738452f

Please sign in to comment.