datahaven/contracts/foundry.toml

121 lines
5 KiB
TOML
Raw Permalink Normal View History

[profile.default]
feat: 🏗️ Setup basic AVS contract (#4) * forge install: eigenlayer-contracts v1.1.1 * fix: :wastebasket: Cleanup dependencies from init * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * chore: :see_no_evil: Ignore IDE directories * chore: :building_construction: Modify config in `foundry.toml` based on EigenLayer's example * feat: :construction: Add `ServiceManagerBase` contract and dependencies based on eigenlayer-middleware * feat: :construction: Naive implementation of missing functions replacing AVSDirectory for AllocationManager * docs: :memo: Add first draft of contracts diagram * refactor: :fire: Remove unnecessary functions and refactor most important ones to the top * docs: :memo: Update contracts diagram * docs: :memo: Update contracts diagram * feat: :sparkles: Implement basic mocked Service Manager * test: :construction: Cleanup and start testing setup for mock ServiceManagerBase * test: :clown_face: Add mocks to setup tests * test: :clown_face: Add deployment of RewardsCoordinator * test: :white_check_mark: Deploy EigenLayer mocked contracts in test * revert: :heavy_minus_sign: Remove proglematic submodules * revert: :heavy_minus_sign: Remove forge-std dependency * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove faulty dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: remove added dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove openzeppelin dependencies from root project * test: :construction: Make test run after dependency mayhem * test: :white_check_mark: Add passing createOperatorSets test with empty params * style: :art: Apply forge fmt
2025-03-11 20:16:16 +00:00
# Project Configuration
feat: 🏗️ Setup basic AVS contract (#4) * forge install: eigenlayer-contracts v1.1.1 * fix: :wastebasket: Cleanup dependencies from init * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * chore: :see_no_evil: Ignore IDE directories * chore: :building_construction: Modify config in `foundry.toml` based on EigenLayer's example * feat: :construction: Add `ServiceManagerBase` contract and dependencies based on eigenlayer-middleware * feat: :construction: Naive implementation of missing functions replacing AVSDirectory for AllocationManager * docs: :memo: Add first draft of contracts diagram * refactor: :fire: Remove unnecessary functions and refactor most important ones to the top * docs: :memo: Update contracts diagram * docs: :memo: Update contracts diagram * feat: :sparkles: Implement basic mocked Service Manager * test: :construction: Cleanup and start testing setup for mock ServiceManagerBase * test: :clown_face: Add mocks to setup tests * test: :clown_face: Add deployment of RewardsCoordinator * test: :white_check_mark: Deploy EigenLayer mocked contracts in test * revert: :heavy_minus_sign: Remove proglematic submodules * revert: :heavy_minus_sign: Remove forge-std dependency * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove faulty dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: remove added dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove openzeppelin dependencies from root project * test: :construction: Make test run after dependency mayhem * test: :white_check_mark: Add passing createOperatorSets test with empty params * style: :art: Apply forge fmt
2025-03-11 20:16:16 +00:00
# Path to contract sources relative to the root of the project.
src = "src"
# Path to the test contract sources relative to the root of the project.
test = "test"
# Path to the script contract sources relative to the root of the project.
script = "script"
# Path to store contract artifacts relative to the root of the project.
out = "out"
# Array of paths that contain libraries, relative to the root of the project.
libs = ["lib"]
# Solidity Compiler Configuration
# Defines paths for Solidity imports.
remappings = [
"forge-std/=lib/forge-std/src/",
"ds-test/=lib/ds-test/src/",
"eigenlayer-contracts/=lib/eigenlayer-contracts/",
"snowbridge/=lib/snowbridge/contracts/",
"@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/",
"@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/",
"lib/eigenlayer-contracts/:@openzeppelin/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-v4.9.0/",
"lib/eigenlayer-contracts/:@openzeppelin-upgrades/=lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable-v4.9.0/",
"lib/snowbridge/contracts/:openzeppelin/=lib/snowbridge/contracts/lib/openzeppelin-contracts/contracts/",
"lib/snowbridge/contracts/:prb/math/=lib/snowbridge/contracts/lib/prb-math/",
fix: Resolve Foundry build errors and apply code formatting (#241) ## Summary Fixes the CI build failure in the `task-ts-build` workflow caused by Foundry v1.4.2's Solar linter not being able to resolve Snowbridge's context-specific import remappings. ## Problem The Snowbridge submodule uses context-specific remappings (prefixed with `:`) for its dependencies: - `lib/snowbridge/contracts/:openzeppelin/` → OpenZeppelin contracts - `lib/snowbridge/contracts/:prb/math/` → PRB Math library Foundry v1.4.2's Solar linter doesn't understand these context-specific remappings and fails with errors like: ``` error: file openzeppelin/utils/cryptography/MerkleProof.sol not found error: file prb/math/src/UD60x18.sol not found ``` ## Solution Added global remappings that the linter can understand: ```toml "openzeppelin/=lib/snowbridge/contracts/lib/openzeppelin-contracts/contracts/", "prb/math/=lib/snowbridge/contracts/lib/prb-math/", ``` ### Why This Works - The linter can now resolve `openzeppelin/` and `prb/math/` imports globally - These global remappings take **lower precedence** than context-specific ones during compilation - The compiler still uses the context-specific remappings (with `:`) when compiling Snowbridge contracts - The linter uses the global remappings when checking all files ## Changes ### Commit 1: Add global remappings - `contracts/foundry.toml`: Added 2 global remapping entries ### Commit 2: Apply forge fmt - Applied automatic formatting via `forge fmt` to ensure code style consistency - Multi-line formatting for long import statements and function signatures - No functional changes - purely formatting updates ## Testing ✅ Local build succeeds with `forge build` ✅ No Snowbridge import resolution errors ✅ `forge fmt --check` passes with no formatting issues ✅ Only linting notes/warnings remain (not errors) 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude <noreply@anthropic.com>
2025-10-20 08:20:59 +00:00
"openzeppelin/=lib/snowbridge/contracts/lib/openzeppelin-contracts/contracts/",
"prb/math/=lib/snowbridge/contracts/lib/prb-math/",
feat: 🏗️ Setup basic AVS contract (#4) * forge install: eigenlayer-contracts v1.1.1 * fix: :wastebasket: Cleanup dependencies from init * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * chore: :see_no_evil: Ignore IDE directories * chore: :building_construction: Modify config in `foundry.toml` based on EigenLayer's example * feat: :construction: Add `ServiceManagerBase` contract and dependencies based on eigenlayer-middleware * feat: :construction: Naive implementation of missing functions replacing AVSDirectory for AllocationManager * docs: :memo: Add first draft of contracts diagram * refactor: :fire: Remove unnecessary functions and refactor most important ones to the top * docs: :memo: Update contracts diagram * docs: :memo: Update contracts diagram * feat: :sparkles: Implement basic mocked Service Manager * test: :construction: Cleanup and start testing setup for mock ServiceManagerBase * test: :clown_face: Add mocks to setup tests * test: :clown_face: Add deployment of RewardsCoordinator * test: :white_check_mark: Deploy EigenLayer mocked contracts in test * revert: :heavy_minus_sign: Remove proglematic submodules * revert: :heavy_minus_sign: Remove forge-std dependency * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove faulty dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: remove added dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove openzeppelin dependencies from root project * test: :construction: Make test run after dependency mayhem * test: :white_check_mark: Add passing createOperatorSets test with empty params * style: :art: Apply forge fmt
2025-03-11 20:16:16 +00:00
]
# Specifies the exact version of Solidity to use, overriding auto-detection.
solc_version = '0.8.28'
feat: 🏗️ Setup basic AVS contract (#4) * forge install: eigenlayer-contracts v1.1.1 * fix: :wastebasket: Cleanup dependencies from init * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * chore: :see_no_evil: Ignore IDE directories * chore: :building_construction: Modify config in `foundry.toml` based on EigenLayer's example * feat: :construction: Add `ServiceManagerBase` contract and dependencies based on eigenlayer-middleware * feat: :construction: Naive implementation of missing functions replacing AVSDirectory for AllocationManager * docs: :memo: Add first draft of contracts diagram * refactor: :fire: Remove unnecessary functions and refactor most important ones to the top * docs: :memo: Update contracts diagram * docs: :memo: Update contracts diagram * feat: :sparkles: Implement basic mocked Service Manager * test: :construction: Cleanup and start testing setup for mock ServiceManagerBase * test: :clown_face: Add mocks to setup tests * test: :clown_face: Add deployment of RewardsCoordinator * test: :white_check_mark: Deploy EigenLayer mocked contracts in test * revert: :heavy_minus_sign: Remove proglematic submodules * revert: :heavy_minus_sign: Remove forge-std dependency * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove faulty dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: remove added dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove openzeppelin dependencies from root project * test: :construction: Make test run after dependency mayhem * test: :white_check_mark: Add passing createOperatorSets test with empty params * style: :art: Apply forge fmt
2025-03-11 20:16:16 +00:00
# If enabled, treats Solidity compiler warnings as errors, preventing artifact generation if warnings are present.
deny_warnings = false
feat: 🏗️ Setup basic AVS contract (#4) * forge install: eigenlayer-contracts v1.1.1 * fix: :wastebasket: Cleanup dependencies from init * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * chore: :see_no_evil: Ignore IDE directories * chore: :building_construction: Modify config in `foundry.toml` based on EigenLayer's example * feat: :construction: Add `ServiceManagerBase` contract and dependencies based on eigenlayer-middleware * feat: :construction: Naive implementation of missing functions replacing AVSDirectory for AllocationManager * docs: :memo: Add first draft of contracts diagram * refactor: :fire: Remove unnecessary functions and refactor most important ones to the top * docs: :memo: Update contracts diagram * docs: :memo: Update contracts diagram * feat: :sparkles: Implement basic mocked Service Manager * test: :construction: Cleanup and start testing setup for mock ServiceManagerBase * test: :clown_face: Add mocks to setup tests * test: :clown_face: Add deployment of RewardsCoordinator * test: :white_check_mark: Deploy EigenLayer mocked contracts in test * revert: :heavy_minus_sign: Remove proglematic submodules * revert: :heavy_minus_sign: Remove forge-std dependency * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove faulty dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: remove added dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove openzeppelin dependencies from root project * test: :construction: Make test run after dependency mayhem * test: :white_check_mark: Add passing createOperatorSets test with empty params * style: :art: Apply forge fmt
2025-03-11 20:16:16 +00:00
# If set to true, changes compilation pipeline to go through the new IR optimizer.
via_ir = false
# Whether or not to enable the Solidity optimizer.
optimizer = true
# The number of runs specifies roughly how often each opcode of the deployed code will be executed
# across the life-time of the contract. This means it is a trade-off parameter between code size (deploy cost)
feat: 🏗️ Setup basic AVS contract (#4) * forge install: eigenlayer-contracts v1.1.1 * fix: :wastebasket: Cleanup dependencies from init * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * chore: :see_no_evil: Ignore IDE directories * chore: :building_construction: Modify config in `foundry.toml` based on EigenLayer's example * feat: :construction: Add `ServiceManagerBase` contract and dependencies based on eigenlayer-middleware * feat: :construction: Naive implementation of missing functions replacing AVSDirectory for AllocationManager * docs: :memo: Add first draft of contracts diagram * refactor: :fire: Remove unnecessary functions and refactor most important ones to the top * docs: :memo: Update contracts diagram * docs: :memo: Update contracts diagram * feat: :sparkles: Implement basic mocked Service Manager * test: :construction: Cleanup and start testing setup for mock ServiceManagerBase * test: :clown_face: Add mocks to setup tests * test: :clown_face: Add deployment of RewardsCoordinator * test: :white_check_mark: Deploy EigenLayer mocked contracts in test * revert: :heavy_minus_sign: Remove proglematic submodules * revert: :heavy_minus_sign: Remove forge-std dependency * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove faulty dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: remove added dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove openzeppelin dependencies from root project * test: :construction: Make test run after dependency mayhem * test: :white_check_mark: Add passing createOperatorSets test with empty params * style: :art: Apply forge fmt
2025-03-11 20:16:16 +00:00
# and code execution cost (cost after deployment).
optimizer_runs = 200
# Test Configuration
# Verbosity level during test execution. Higher levels provide more detailed information:
# - 2 (-vv): Logs emitted during tests are displayed.
# - 3 (-vvv): Stack traces for failing tests are displayed.
# - 4 (-vvvv): Stack traces for all tests and setup traces for failing tests are displayed.
# - 5 (-vvvvv): Stack and setup traces are always displayed.
verbosity = 0
# Enables the Foreign Function Interface (FFI) cheatcode.
feat: 🏗️ Setup basic AVS contract (#4) * forge install: eigenlayer-contracts v1.1.1 * fix: :wastebasket: Cleanup dependencies from init * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * chore: :see_no_evil: Ignore IDE directories * chore: :building_construction: Modify config in `foundry.toml` based on EigenLayer's example * feat: :construction: Add `ServiceManagerBase` contract and dependencies based on eigenlayer-middleware * feat: :construction: Naive implementation of missing functions replacing AVSDirectory for AllocationManager * docs: :memo: Add first draft of contracts diagram * refactor: :fire: Remove unnecessary functions and refactor most important ones to the top * docs: :memo: Update contracts diagram * docs: :memo: Update contracts diagram * feat: :sparkles: Implement basic mocked Service Manager * test: :construction: Cleanup and start testing setup for mock ServiceManagerBase * test: :clown_face: Add mocks to setup tests * test: :clown_face: Add deployment of RewardsCoordinator * test: :white_check_mark: Deploy EigenLayer mocked contracts in test * revert: :heavy_minus_sign: Remove proglematic submodules * revert: :heavy_minus_sign: Remove forge-std dependency * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove faulty dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: remove added dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove openzeppelin dependencies from root project * test: :construction: Make test run after dependency mayhem * test: :white_check_mark: Add passing createOperatorSets test with empty params * style: :art: Apply forge fmt
2025-03-11 20:16:16 +00:00
# WARNING: This allows arbitrary programs to run on your computer, which poses security risks.
ffi = true
# Contracts to include in gas reports. By default, all contracts are included.
gas_reports = ["./src/**/*"]
# Show test execution progress if set to true.
show_progress = true
# Sparse mode only compiles files that match certain criteria.
sparse_mode = true
feat: 🏗️ Setup basic AVS contract (#4) * forge install: eigenlayer-contracts v1.1.1 * fix: :wastebasket: Cleanup dependencies from init * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * chore: :see_no_evil: Ignore IDE directories * chore: :building_construction: Modify config in `foundry.toml` based on EigenLayer's example * feat: :construction: Add `ServiceManagerBase` contract and dependencies based on eigenlayer-middleware * feat: :construction: Naive implementation of missing functions replacing AVSDirectory for AllocationManager * docs: :memo: Add first draft of contracts diagram * refactor: :fire: Remove unnecessary functions and refactor most important ones to the top * docs: :memo: Update contracts diagram * docs: :memo: Update contracts diagram * feat: :sparkles: Implement basic mocked Service Manager * test: :construction: Cleanup and start testing setup for mock ServiceManagerBase * test: :clown_face: Add mocks to setup tests * test: :clown_face: Add deployment of RewardsCoordinator * test: :white_check_mark: Deploy EigenLayer mocked contracts in test * revert: :heavy_minus_sign: Remove proglematic submodules * revert: :heavy_minus_sign: Remove forge-std dependency * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove faulty dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: remove added dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove openzeppelin dependencies from root project * test: :construction: Make test run after dependency mayhem * test: :white_check_mark: Add passing createOperatorSets test with empty params * style: :art: Apply forge fmt
2025-03-11 20:16:16 +00:00
gas_limit = 5000000000
no-match-contract = "FFI"
fs_permissions = [{ access = "read-write", path = "./" }]
[profile.default.fmt]
# Single-line vs multi-line statement blocks
single_line_statement_blocks = "preserve" # Options: "single", "multi", "preserve"
# Formatting style for long function headers
multiline_func_header = "params_first" # Options: "attributes_first", "params_first", "all"
# Sort import statements alphabetically
sort_imports = false
feat: 🏗️ Setup basic AVS contract (#4) * forge install: eigenlayer-contracts v1.1.1 * fix: :wastebasket: Cleanup dependencies from init * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * chore: :see_no_evil: Ignore IDE directories * chore: :building_construction: Modify config in `foundry.toml` based on EigenLayer's example * feat: :construction: Add `ServiceManagerBase` contract and dependencies based on eigenlayer-middleware * feat: :construction: Naive implementation of missing functions replacing AVSDirectory for AllocationManager * docs: :memo: Add first draft of contracts diagram * refactor: :fire: Remove unnecessary functions and refactor most important ones to the top * docs: :memo: Update contracts diagram * docs: :memo: Update contracts diagram * feat: :sparkles: Implement basic mocked Service Manager * test: :construction: Cleanup and start testing setup for mock ServiceManagerBase * test: :clown_face: Add mocks to setup tests * test: :clown_face: Add deployment of RewardsCoordinator * test: :white_check_mark: Deploy EigenLayer mocked contracts in test * revert: :heavy_minus_sign: Remove proglematic submodules * revert: :heavy_minus_sign: Remove forge-std dependency * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove faulty dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: remove added dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove openzeppelin dependencies from root project * test: :construction: Make test run after dependency mayhem * test: :white_check_mark: Add passing createOperatorSets test with empty params * style: :art: Apply forge fmt
2025-03-11 20:16:16 +00:00
# Maximum line length where formatter will wrap the line
line_length = 100 # Default: 120
# Number of spaces per indentation level
tab_width = 4 # Default: 4
# Whether to print spaces between brackets
bracket_spacing = false
feat: 🏗️ Setup basic AVS contract (#4) * forge install: eigenlayer-contracts v1.1.1 * fix: :wastebasket: Cleanup dependencies from init * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * chore: :see_no_evil: Ignore IDE directories * chore: :building_construction: Modify config in `foundry.toml` based on EigenLayer's example * feat: :construction: Add `ServiceManagerBase` contract and dependencies based on eigenlayer-middleware * feat: :construction: Naive implementation of missing functions replacing AVSDirectory for AllocationManager * docs: :memo: Add first draft of contracts diagram * refactor: :fire: Remove unnecessary functions and refactor most important ones to the top * docs: :memo: Update contracts diagram * docs: :memo: Update contracts diagram * feat: :sparkles: Implement basic mocked Service Manager * test: :construction: Cleanup and start testing setup for mock ServiceManagerBase * test: :clown_face: Add mocks to setup tests * test: :clown_face: Add deployment of RewardsCoordinator * test: :white_check_mark: Deploy EigenLayer mocked contracts in test * revert: :heavy_minus_sign: Remove proglematic submodules * revert: :heavy_minus_sign: Remove forge-std dependency * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove faulty dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: remove added dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove openzeppelin dependencies from root project * test: :construction: Make test run after dependency mayhem * test: :white_check_mark: Add passing createOperatorSets test with empty params * style: :art: Apply forge fmt
2025-03-11 20:16:16 +00:00
# Style of uint/int256 types
int_types = "long" # Options: "long", "short", "preserve"
# Quotation mark style
quote_style = "double" # Options: "double", "single", "preserve"
# Style of underscores in number literals
number_underscore = "remove" # Options: "preserve", "thousands", "remove"
# Whether or not to wrap comments at line_length
wrap_comments = false
feat: 🏗️ Setup basic AVS contract (#4) * forge install: eigenlayer-contracts v1.1.1 * fix: :wastebasket: Cleanup dependencies from init * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * chore: :see_no_evil: Ignore IDE directories * chore: :building_construction: Modify config in `foundry.toml` based on EigenLayer's example * feat: :construction: Add `ServiceManagerBase` contract and dependencies based on eigenlayer-middleware * feat: :construction: Naive implementation of missing functions replacing AVSDirectory for AllocationManager * docs: :memo: Add first draft of contracts diagram * refactor: :fire: Remove unnecessary functions and refactor most important ones to the top * docs: :memo: Update contracts diagram * docs: :memo: Update contracts diagram * feat: :sparkles: Implement basic mocked Service Manager * test: :construction: Cleanup and start testing setup for mock ServiceManagerBase * test: :clown_face: Add mocks to setup tests * test: :clown_face: Add deployment of RewardsCoordinator * test: :white_check_mark: Deploy EigenLayer mocked contracts in test * revert: :heavy_minus_sign: Remove proglematic submodules * revert: :heavy_minus_sign: Remove forge-std dependency * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove faulty dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: remove added dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove openzeppelin dependencies from root project * test: :construction: Make test run after dependency mayhem * test: :white_check_mark: Add passing createOperatorSets test with empty params * style: :art: Apply forge fmt
2025-03-11 20:16:16 +00:00
# List of files to ignore during formatting (can use glob patterns)
# ignore = [
# "./script/**/*",
# "./test/**/*"
# ]
# TODO: Decide if we want to enable this.
# [profile.test.fmt]
# int_types = "short"
# line_length = 140
# ignore = [
# "./src/**/*"
# ]
[profile.ci.fuzz]
optimizer = false
runs = 32
[profile.intense.fuzz]
optimizer = false
runs = 5000
[profile.forktest.fuzz]
runs = 16
[rpc_endpoints]
mainnet = "${RPC_MAINNET}"
holesky = "${RPC_HOLESKY}"
feat: ✨ Datahaven contracts deployment on public testnet (#123) ## Summary This PR introduces support for deploying Datahaven contracts to different chains (hoodi, holesky, mainnet), as well as a new cli command to manage this deployment separately from the regular deployment, while maintaining compatibility with it. #### New CLI command - **`bun cli contracts deploy`** - Deploy contracts to supported chains (Hoodi, Holesky, Mainnet) - **`bun cli contracts status`** - Check deployment configuration and status - **`bun cli contracts verify`** - Verify contracts on block explorers - Commands need the chain parameter: `--chain <hoodi | holesky | mainnet>` - Right now only `hoodi` and `holesky` are supported ### Deployment #### Hoodi & Holesky Network Support - Added **DeployBase.s.sol** as common ground for **DeployTestnet.s.sol** (also new) and **DeployLocal.s.sol** (existing). - **Hoodi configuration** (`contracts/config/hoodi.json`) with deployed EigenLayer contract addresses to reference. - **Holesky configuration** (`contracts/config/hoodi.json`) with deployed EigenLayer contract addresses to reference. #### Contracts being deployed - **DataHaven**: ServiceManager, VetoableSlasher, RewardsRegistry - **Snowbridge**: BeefyClient, AgentExecutor, Gateway, RewardsAgent - **EigenLayer**: References existing deployed contracts (not re-deployed) #### Deployment files When the deployment is done, a new file under `contracts/deployments` is generated with the addresses of the deployed contracts, for each chain (it will be overriden per chain if run multiple times). So we would have one `anvil.json`, `hoodi.json`, `holesky.json`, etc, with the addresses of the deployed contracts for reference and for later verification. #### Todo - [x] Test compatibility with existing `bun cli launch` and `bun cli deploy` commands #### For follow-up PRs - Fix verification issue with `foundry verify-contracts` when specifying the `chain` or `chain-id` parameter, needed for hoodi (https://github.com/foundry-rs/foundry/issues/7466). - Add `redeploy` feature to only override implementation contract and leave the proxy address untouched ## Usage Examples ```bash # Deploy to Hoodi network bun cli contracts deploy --chain hoodi # Check deployment status bun cli contracts status --chain hoodi # Verify contracts on block explorer bun cli contracts verify --chain hoodi ``` <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added deployment and configuration support for new networks "hoodi" and "holesky", including new configuration and deployment files. * Introduced a CLI tool for managing contract deployments, status checks, and verification across supported chains. * Added example environment configuration and comprehensive deployment documentation. * Enabled contract verification and status reporting via the CLI with support for block explorer integration. * **Improvements** * Refactored deployment scripts for modularity, supporting both local and testnet environments. * Centralized and extended configuration loading to support additional contract addresses and network parameters. * Enhanced deployment utilities and typings to support multi-network deployments. * **Bug Fixes** * Improved input validation and error handling in CLI commands and deployment scripts. * Added explicit handling for zero address in operator strategy retrieval. * **Chores** * Updated documentation and configuration templates for easier onboarding and deployment management. * Improved logging and output formatting for deployment and verification processes. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Steve Degosserie <723552+stiiifff@users.noreply.github.com> Co-authored-by: Ahmad Kaouk <56095276+ahmadkaouk@users.noreply.github.com>
2025-08-21 10:02:31 +00:00
hoodi = "https://rpc.hoodi.ethpandaops.io"
anvil = "http://localhost:8545"
feat: 🏗️ Setup basic AVS contract (#4) * forge install: eigenlayer-contracts v1.1.1 * fix: :wastebasket: Cleanup dependencies from init * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * chore: :see_no_evil: Ignore IDE directories * chore: :building_construction: Modify config in `foundry.toml` based on EigenLayer's example * feat: :construction: Add `ServiceManagerBase` contract and dependencies based on eigenlayer-middleware * feat: :construction: Naive implementation of missing functions replacing AVSDirectory for AllocationManager * docs: :memo: Add first draft of contracts diagram * refactor: :fire: Remove unnecessary functions and refactor most important ones to the top * docs: :memo: Update contracts diagram * docs: :memo: Update contracts diagram * feat: :sparkles: Implement basic mocked Service Manager * test: :construction: Cleanup and start testing setup for mock ServiceManagerBase * test: :clown_face: Add mocks to setup tests * test: :clown_face: Add deployment of RewardsCoordinator * test: :white_check_mark: Deploy EigenLayer mocked contracts in test * revert: :heavy_minus_sign: Remove proglematic submodules * revert: :heavy_minus_sign: Remove forge-std dependency * forge install: forge-std v1.9.6 * forge install: openzeppelin-contracts v5.2.0 * forge install: openzeppelin-contracts-upgradeable v5.2.0 * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove faulty dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: remove added dependency * forge install: eigenlayer-contracts v1.3.0 * revert: :heavy_minus_sign: Remove openzeppelin dependencies from root project * test: :construction: Make test run after dependency mayhem * test: :white_check_mark: Add passing createOperatorSets test with empty params * style: :art: Apply forge fmt
2025-03-11 20:16:16 +00:00
# [etherscan]
# mainnet = { key = "${ETHERSCAN_API_KEY}" }
# holesky = { key = "${ETHERSCAN_API_KEY}" }