mirror of
https://github.com/vacp2p/linea-monorepo.git
synced 2026-01-09 04:08:01 -05:00
[Feat] - Foundry config, supports London EVM_VERSION for L2 Linea contracts (#361)
* forge build working * poc done * commit * did lint command * remove caret from hardhat-foundry * add foundry installation to run-smc-tests.yml * update run-smc-tests.yml
This commit is contained in:
4
.github/workflows/run-smc-tests.yml
vendored
4
.github/workflows/run-smc-tests.yml
vendored
@@ -48,6 +48,10 @@ jobs:
|
|||||||
- name: Check JS formatting
|
- name: Check JS formatting
|
||||||
run: pnpm -F contracts run lint:ts
|
run: pnpm -F contracts run lint:ts
|
||||||
|
|
||||||
|
# Required for hardhat commands due to @nomicfoundation/hardhat-foundry package
|
||||||
|
- name: Install Foundry
|
||||||
|
uses: foundry-rs/foundry-toolchain@v1
|
||||||
|
|
||||||
- name: Compile kzg.node
|
- name: Compile kzg.node
|
||||||
run: npx node-gyp --directory=contracts/node_modules/c-kzg rebuild # explicitly running rebuild to get the .node file
|
run: npx node-gyp --directory=contracts/node_modules/c-kzg rebuild # explicitly running rebuild to get the .node file
|
||||||
|
|
||||||
|
|||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -53,4 +53,5 @@ coverage
|
|||||||
tsconfig.build.tsbuildinfo
|
tsconfig.build.tsbuildinfo
|
||||||
ts-libs/**/lib/**/*.so
|
ts-libs/**/lib/**/*.so
|
||||||
ts-libs/**/lib/**/*.dylib
|
ts-libs/**/lib/**/*.dylib
|
||||||
contracts/lib/forge-std/
|
contracts/lib/forge-std/
|
||||||
|
cache_forge
|
||||||
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -4,3 +4,6 @@
|
|||||||
[submodule "corset"]
|
[submodule "corset"]
|
||||||
path = corset
|
path = corset
|
||||||
url = git@github.com:consensys/corset.git
|
url = git@github.com:consensys/corset.git
|
||||||
|
[submodule "contracts/lib/forge-std"]
|
||||||
|
path = contracts/lib/forge-std
|
||||||
|
url = https://github.com/foundry-rs/forge-std
|
||||||
|
|||||||
@@ -4,3 +4,4 @@ cache
|
|||||||
coverage*
|
coverage*
|
||||||
gasReporterOutput.json
|
gasReporterOutput.json
|
||||||
typechain-types
|
typechain-types
|
||||||
|
lib
|
||||||
@@ -1,2 +1,4 @@
|
|||||||
node_modules
|
node_modules
|
||||||
contracts/test-contracts
|
lib/forge-std
|
||||||
|
contracts/test-contracts
|
||||||
|
test/foundry
|
||||||
22
contracts/foundry.toml
Normal file
22
contracts/foundry.toml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
[profile.default]
|
||||||
|
src = 'contracts'
|
||||||
|
out = 'out'
|
||||||
|
libs = ['node_modules', 'lib']
|
||||||
|
cache_path = 'cache_forge'
|
||||||
|
|
||||||
|
# Test settings
|
||||||
|
match-path = 'test/foundry/*'
|
||||||
|
|
||||||
|
# Default solc compiler settings
|
||||||
|
evm_version = "cancun"
|
||||||
|
optimizer = true
|
||||||
|
optimizer_runs = 10_000
|
||||||
|
|
||||||
|
# Compiler overrides
|
||||||
|
additional_compiler_profiles = [ { name = "london", evm_version = "london" } ]
|
||||||
|
|
||||||
|
# Specify EVM_VERSION restrictions for contract compilation
|
||||||
|
compilation_restrictions = [
|
||||||
|
{ paths = "./**/L2MessageService.sol", evm_version = "london" },
|
||||||
|
{ paths = "./**/TokenBridge.sol", evm_version = "london" },
|
||||||
|
]
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
import "@nomicfoundation/hardhat-toolbox";
|
import "@nomicfoundation/hardhat-toolbox";
|
||||||
|
import "@nomicfoundation/hardhat-foundry";
|
||||||
import "@openzeppelin/hardhat-upgrades";
|
import "@openzeppelin/hardhat-upgrades";
|
||||||
import * as dotenv from "dotenv";
|
import * as dotenv from "dotenv";
|
||||||
import "hardhat-deploy";
|
import "hardhat-deploy";
|
||||||
|
|||||||
1
contracts/lib/forge-std
Submodule
1
contracts/lib/forge-std
Submodule
Submodule contracts/lib/forge-std added at 1eea5bae12
@@ -24,6 +24,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@ethereumjs/util": "9.0.3",
|
"@ethereumjs/util": "9.0.3",
|
||||||
"@nomicfoundation/hardhat-ethers": "3.0.5",
|
"@nomicfoundation/hardhat-ethers": "3.0.5",
|
||||||
|
"@nomicfoundation/hardhat-foundry": "1.1.3",
|
||||||
"@nomicfoundation/hardhat-network-helpers": "1.0.10",
|
"@nomicfoundation/hardhat-network-helpers": "1.0.10",
|
||||||
"@nomicfoundation/hardhat-toolbox": "4.0.0",
|
"@nomicfoundation/hardhat-toolbox": "4.0.0",
|
||||||
"@nomicfoundation/hardhat-verify": "1.1.1",
|
"@nomicfoundation/hardhat-verify": "1.1.1",
|
||||||
|
|||||||
12
contracts/test/foundry/ExampleFoundryTest.t.sol
Normal file
12
contracts/test/foundry/ExampleFoundryTest.t.sol
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
// SPDX-License-Identifier: UNLICENSED
|
||||||
|
pragma solidity 0.8.26;
|
||||||
|
|
||||||
|
import "forge-std/Test.sol";
|
||||||
|
|
||||||
|
contract ExampleFoundryTest is Test {
|
||||||
|
function setUp() public {}
|
||||||
|
|
||||||
|
function testSample() public {
|
||||||
|
// Write test
|
||||||
|
}
|
||||||
|
}
|
||||||
25
pnpm-lock.yaml
generated
25
pnpm-lock.yaml
generated
@@ -178,6 +178,9 @@ importers:
|
|||||||
'@nomicfoundation/hardhat-ethers':
|
'@nomicfoundation/hardhat-ethers':
|
||||||
specifier: 3.0.5
|
specifier: 3.0.5
|
||||||
version: 3.0.5(ethers@6.12.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(c-kzg@2.1.2)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10))
|
version: 3.0.5(ethers@6.12.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(c-kzg@2.1.2)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10))
|
||||||
|
'@nomicfoundation/hardhat-foundry':
|
||||||
|
specifier: 1.1.3
|
||||||
|
version: 1.1.3(hardhat@2.22.11(bufferutil@4.0.8)(c-kzg@2.1.2)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10))
|
||||||
'@nomicfoundation/hardhat-network-helpers':
|
'@nomicfoundation/hardhat-network-helpers':
|
||||||
specifier: 1.0.10
|
specifier: 1.0.10
|
||||||
version: 1.0.10(hardhat@2.22.11(bufferutil@4.0.8)(c-kzg@2.1.2)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10))
|
version: 1.0.10(hardhat@2.22.11(bufferutil@4.0.8)(c-kzg@2.1.2)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10))
|
||||||
@@ -2215,6 +2218,11 @@ packages:
|
|||||||
ethers: ^6.1.0
|
ethers: ^6.1.0
|
||||||
hardhat: ^2.0.0
|
hardhat: ^2.0.0
|
||||||
|
|
||||||
|
'@nomicfoundation/hardhat-foundry@1.1.3':
|
||||||
|
resolution: {integrity: sha512-30Ezc3hlZ4pC5Z/9W9euW5uoPKKQQKaecLETHJH8BPpd30zYOooy6HfjmcTY1/taOQjlwirOdNO7tHlje8Qcgw==}
|
||||||
|
peerDependencies:
|
||||||
|
hardhat: ^2.17.2
|
||||||
|
|
||||||
'@nomicfoundation/hardhat-network-helpers@1.0.10':
|
'@nomicfoundation/hardhat-network-helpers@1.0.10':
|
||||||
resolution: {integrity: sha512-R35/BMBlx7tWN5V6d/8/19QCwEmIdbnA4ZrsuXgvs8i2qFx5i7h6mH5pBS4Pwi4WigLH+upl6faYusrNPuzMrQ==}
|
resolution: {integrity: sha512-R35/BMBlx7tWN5V6d/8/19QCwEmIdbnA4ZrsuXgvs8i2qFx5i7h6mH5pBS4Pwi4WigLH+upl6faYusrNPuzMrQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -2670,6 +2678,7 @@ packages:
|
|||||||
|
|
||||||
'@safe-global/safe-core-sdk-types@4.0.2':
|
'@safe-global/safe-core-sdk-types@4.0.2':
|
||||||
resolution: {integrity: sha512-3I60xV/BLPiBtc3nGp2itgiDL+YbMI9OwaANvnJL2AwSS1kc2kH3/SsCwAW3s4Usr3b0lE08aO7I9ropyxFHhA==}
|
resolution: {integrity: sha512-3I60xV/BLPiBtc3nGp2itgiDL+YbMI9OwaANvnJL2AwSS1kc2kH3/SsCwAW3s4Usr3b0lE08aO7I9ropyxFHhA==}
|
||||||
|
deprecated: 'WARNING: This project has been renamed to @safe-global/types-kit. Please, migrate from @safe-global/safe-core-sdk-types@5.1.0 to @safe-global/types-kit@1.0.0.'
|
||||||
|
|
||||||
'@safe-global/safe-deployments@1.37.10':
|
'@safe-global/safe-deployments@1.37.10':
|
||||||
resolution: {integrity: sha512-lcxX9CV+xdcLs4dF6Cx18zDww5JyqaX6RdcvU0o/34IgJ4Wjo3J/RNzJAoMhurCAfTGr+0vyJ9V13Qo50AR6JA==}
|
resolution: {integrity: sha512-lcxX9CV+xdcLs4dF6Cx18zDww5JyqaX6RdcvU0o/34IgJ4Wjo3J/RNzJAoMhurCAfTGr+0vyJ9V13Qo50AR6JA==}
|
||||||
@@ -5012,6 +5021,7 @@ packages:
|
|||||||
eslint@8.57.0:
|
eslint@8.57.0:
|
||||||
resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
|
resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
|
||||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||||
|
deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
esniff@2.0.1:
|
esniff@2.0.1:
|
||||||
@@ -9824,7 +9834,7 @@ snapshots:
|
|||||||
'@babel/core': 7.25.7
|
'@babel/core': 7.25.7
|
||||||
'@babel/helper-module-imports': 7.25.7
|
'@babel/helper-module-imports': 7.25.7
|
||||||
'@babel/helper-simple-access': 7.25.7
|
'@babel/helper-simple-access': 7.25.7
|
||||||
'@babel/helper-validator-identifier': 7.25.7
|
'@babel/helper-validator-identifier': 7.25.9
|
||||||
'@babel/traverse': 7.25.7
|
'@babel/traverse': 7.25.7
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
@@ -10261,7 +10271,7 @@ snapshots:
|
|||||||
'@babel/core': 7.25.7
|
'@babel/core': 7.25.7
|
||||||
'@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.7)
|
'@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.7)
|
||||||
'@babel/helper-plugin-utils': 7.25.7
|
'@babel/helper-plugin-utils': 7.25.7
|
||||||
'@babel/helper-validator-identifier': 7.25.7
|
'@babel/helper-validator-identifier': 7.25.9
|
||||||
'@babel/traverse': 7.25.7
|
'@babel/traverse': 7.25.7
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
@@ -11910,6 +11920,11 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
'@nomicfoundation/hardhat-foundry@1.1.3(hardhat@2.22.11(bufferutil@4.0.8)(c-kzg@2.1.2)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10))':
|
||||||
|
dependencies:
|
||||||
|
hardhat: 2.22.11(bufferutil@4.0.8)(c-kzg@2.1.2)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10)
|
||||||
|
picocolors: 1.1.0
|
||||||
|
|
||||||
'@nomicfoundation/hardhat-network-helpers@1.0.10(hardhat@2.22.11(bufferutil@4.0.8)(c-kzg@2.1.2)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10))':
|
'@nomicfoundation/hardhat-network-helpers@1.0.10(hardhat@2.22.11(bufferutil@4.0.8)(c-kzg@2.1.2)(ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5))(typescript@5.4.5)(utf-8-validate@5.0.10))':
|
||||||
dependencies:
|
dependencies:
|
||||||
ethereumjs-util: 7.1.5
|
ethereumjs-util: 7.1.5
|
||||||
@@ -15844,7 +15859,7 @@ snapshots:
|
|||||||
debug: 4.3.7(supports-color@8.1.1)
|
debug: 4.3.7(supports-color@8.1.1)
|
||||||
enhanced-resolve: 5.17.1
|
enhanced-resolve: 5.17.1
|
||||||
eslint: 8.57.0
|
eslint: 8.57.0
|
||||||
eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0)
|
eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
|
||||||
fast-glob: 3.3.2
|
fast-glob: 3.3.2
|
||||||
get-tsconfig: 4.8.1
|
get-tsconfig: 4.8.1
|
||||||
is-bun-module: 1.2.1
|
is-bun-module: 1.2.1
|
||||||
@@ -15857,7 +15872,7 @@ snapshots:
|
|||||||
- eslint-import-resolver-webpack
|
- eslint-import-resolver-webpack
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-module-utils@2.12.0(@typescript-eslint/parser@7.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0):
|
eslint-module-utils@2.12.0(@typescript-eslint/parser@7.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 3.2.7
|
debug: 3.2.7
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@@ -15879,7 +15894,7 @@ snapshots:
|
|||||||
doctrine: 2.1.0
|
doctrine: 2.1.0
|
||||||
eslint: 8.57.0
|
eslint: 8.57.0
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0)
|
eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.6.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
|
||||||
hasown: 2.0.2
|
hasown: 2.0.2
|
||||||
is-core-module: 2.15.1
|
is-core-module: 2.15.1
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
|
|||||||
Reference in New Issue
Block a user