Skip to content

Commit

Permalink
feat(init): initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
goncaloMagalhaes committed Mar 6, 2024
0 parents commit acd69e9
Show file tree
Hide file tree
Showing 695 changed files with 102,559 additions and 0 deletions.
25 changes: 25 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
MAINNET_RPC_URL=
GOERLI_RPC_URL=
ETHERSCAN_API_KEY=

MNEMONIC=

PROTOCOL_OWNER=
VAULT_DELEGATE=
SCOPE_GUARD=
IMMUNEFI_GUARD=
WITHDRAWAL_SYSTEM=
REWARD_SYSTEM=
VAULT_FREEZER=
TIMELOCK=
IMMUNEFI_MODULE=
PROXY_ADMIN=

REWARD_MAX_FEE=
REWARD_GAS_CAP=
REWARD_FEE=

ARBITRATION_FEE=
ARBITRATION_TOKEN_FEE=

CERTORAKEY=
205 changes: 205 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,205 @@
name: "CI"

env:
FOUNDRY_PROFILE: "ci"

on:
workflow_dispatch:
pull_request:
push:
branches:
- "main"

jobs:
lint:
runs-on: "ubuntu-latest"
steps:
- name: "Check out the repo"
uses: "actions/checkout@v3"

- name: "Install Node.js"
uses: "actions/setup-node@v3"
with:
cache: "yarn"
node-version: "lts/*"

- name: "Install the Node.js dependencies"
run: "yarn install --immutable"

- name: "Lint the contracts"
run: "yarn lint"

- name: "Add lint summary"
run: |
echo "## Lint result" >> $GITHUB_STEP_SUMMARY
echo "✅ Passed" >> $GITHUB_STEP_SUMMARY
build:
runs-on: "ubuntu-latest"
steps:
- name: "Check out the repo"
uses: "actions/checkout@v3"
with:
submodules: "recursive"

- name: "Install Foundry"
uses: "foundry-rs/foundry-toolchain@v1"

- name: "Install the Node.js dependencies"
run: "yarn install --immutable"

- name: "Build the contracts and print their size"
run: "forge build --sizes"

- name: "Add build summary"
run: |
echo "## Build result" >> $GITHUB_STEP_SUMMARY
echo "✅ Passed" >> $GITHUB_STEP_SUMMARY
test:
needs: ["lint", "build"]
runs-on: "ubuntu-latest"
steps:
- name: "Check out the repo"
uses: "actions/checkout@v3"
with:
submodules: "recursive"

- name: "Install Foundry"
uses: "foundry-rs/foundry-toolchain@v1"

- name: "Install the Node.js dependencies"
run: "yarn install --immutable"

- name: "Run the tests"
run: "forge test"

- name: Compile contracts
run: |
forge build --build-info --force
- name: "Run Echidna"
uses: "crytic/echidna-action@v2"
with:
files: .
contract: VaultRewardEchidnaTest
crytic-args: --ignore-compile
config: echidna.yml

- name: "Metropolis Goerli deployment preview"
run: |
yarn run metro:protocol:goerli
continue-on-error: true

- name: "Add test summary"
run: |
echo "## Tests result" >> $GITHUB_STEP_SUMMARY
echo "✅ Passed" >> $GITHUB_STEP_SUMMARY
slither:
needs: ["lint", "build", "test"]
runs-on: ubuntu-latest
steps:
- name: "Check out the repo"
uses: "actions/checkout@v3"
with:
submodules: "recursive"

- name: "Install Foundry"
uses: "foundry-rs/foundry-toolchain@v1"

- name: "Install the Node.js dependencies"
run: "yarn install --immutable"

- name: "Install Slither"
run: |
pip3 install wheel
pip3 install slither-analyzer==0.9.3
- name: "Build the contracts and print their size"
run: "forge build"

- name: Run Slither
run: slither . --no-fail-pedantic > output.log

- name: "Add Slither summary"
run: |
echo "## Slither result" >> $GITHUB_STEP_SUMMARY
cat output.log >> $GITHUB_STEP_SUMMARY
##Disable CERTORA CI
#certora-verify:
# runs-on: ubuntu-latest
# steps:
# # check out the current version
# - uses: actions/checkout@v2
#
# # install Certora dependencies and CLI
# - name: Install python
# uses: actions/setup-python@v2
# with:
# python-version: "3.10"
# # cache: 'pip'
# - name: Install certora
# run: pip3 install certora-cli-beta
#
# - name: "Install Foundry"
# uses: "foundry-rs/foundry-toolchain@v1"
#
# - name: "Install the Node.js dependencies"
# run: "yarn install --immutable"
#
# # Install the appropriate version of solc
# - name: Install solc
# run: |
# wget https://github.com/ethereum/solidity/releases/download/v0.8.18/solc-static-linux
# sudo mv solc-static-linux /usr/local/bin/solc8.18
# chmod +x /usr/local/bin/solc8.18
#
# - name: Verify rule ${{ matrix.params.name }}
# run: >
# message="$(git log -n 1 --pretty=format:'CI ${{matrix.params.name}} %h .... %s')"; certoraRun \
# certora/conf/${{ matrix.params.command }} \
# --msg "$(echo $message | sed 's/[^a-zA-Z0-9., _-]/ /g')"
# env:
# CERTORAKEY: ${{ secrets.CERTORAKEY }}
#
# - name: Download output json
# if: always()
# run: >
# outputLink=$(sed 's/zipOutput/output/g' .zip-output-url.txt | sed 's/?/\/output.json?/g'); curl -L -b
# "certoraKey=$CERTORAKEY;" ${outputLink} --output output.json || true; touch output.json;
#
# - name: Archive output json
# if: always()
# uses: actions/upload-artifact@v3
# with:
# name: output for ${{ matrix.params.name }}
# path: output.json
#
# strategy:
# fail-fast: false
# max-parallel: 4
# matrix:
# params:
# - { name: RulesForEmergencySystem, command: "emergencySystem.conf --debug" }

coverage:
needs: ["lint", "build", "test"]
runs-on: "ubuntu-latest"
steps:
- name: "Check out the repo"
uses: "actions/checkout@v3"
with:
submodules: "recursive"

- name: "Install Foundry"
uses: "foundry-rs/foundry-toolchain@v1"

- name: "Install the Node.js dependencies"
run: "yarn install --immutable"

- name: "Add coverage summary"
run: |
echo "## Coverage result" >> $GITHUB_STEP_SUMMARY
- name: "Generate the coverage report"
run: "forge coverage >> $GITHUB_STEP_SUMMARY"
28 changes: 28 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Compiler files
cache/
out/
forge-cache/
.DS_Store

# Ignores development broadcast logs
/broadcast
/broadcast/*/31337/
/broadcast/**/dry-run/

# Dotenv file
.env

# VSCode
.vscode/

lcov.info
.VSCodeCounter/

node_modules/

# Echidna
crytic-export/

# Certora
/**/.certora_internal
**/.last_confs
11 changes: 11 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[submodule "lib/forge-std"]
path = lib/forge-std
url = https://github.com/foundry-rs/forge-std
branch = v1.5.3
[submodule "lib/openzeppelin-contracts"]
path = lib/openzeppelin-contracts
url = https://github.com/openzeppelin/openzeppelin-contracts
branch = v4.8.0
[submodule "lib/openzeppelin-contracts-upgradeable"]
path = lib/openzeppelin-contracts-upgradeable
url = https://github.com/openzeppelin/openzeppelin-contracts-upgradeable
4 changes: 4 additions & 0 deletions .husky/commit-msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx --no -- commitlint --edit ${1}
2 changes: 2 additions & 0 deletions .lintstagedrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
"*.{json,md,sol,yml}":
- prettier --write
20 changes: 20 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# directories
.yarn/
**/broadcast
**/forge-cache
**/cache
**/lib
**/out
**/node_modules
crytic-export/

# files
*.env
*.log
.pnp.*
coverage.json
npm-debug.log*
yarn-debug.log*
yarn-error.log*
slither.db.json
*.md
13 changes: 13 additions & 0 deletions .prettierrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
bracketSpacing: true
printWidth: 120
proseWrap: "always"
singleQuote: false
tabWidth: 2
trailingComma: "all"
useTabs: false

overrides:
- files: "*.sol"
options:
compiler: "0.8.18"
tabWidth: 4
26 changes: 26 additions & 0 deletions .solhint.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"extends": "solhint:recommended",
"plugins": ["prettier"],
"rules": {
"code-complexity": ["error", 7],
"compiler-version": ["error", ">=0.8.4"],
"contract-name-camelcase": "off",
"const-name-snakecase": "off",
"constructor-syntax": "error",
"func-name-mixedcase": "off",
"func-visibility": ["error", { "ignoreConstructors": true }],
"max-line-length": ["error", 120],
"no-empty-blocks": "off",
"no-inline-assembly": "off",
"not-rely-on-time": "off",
"avoid-low-level-calls": "off",
"prettier/prettier": [
"error",
{
"endOfLine": "auto"
}
],
"reason-string": ["warn", { "maxLength": 64 }],
"var-name-mixedcase": "off"
}
}
Loading

0 comments on commit acd69e9

Please sign in to comment.