diff --git a/.github/bin/storage-report.sh b/.github/bin/storage-report.sh new file mode 100644 index 00000000..71fbd9a0 --- /dev/null +++ b/.github/bin/storage-report.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +# Default output directory +OUTPUT_DIR=${1:-docs/storage-report} + +# Function to print messages +log() { + echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] $1" +} + +# Function to print error messages +error() { + echo "$(date '+%Y-%m-%d %H:%M:%S') [ERROR] $1" >&2 +} + +log "Starting the storage report generation." + +# Create the output directory if it doesn't exist +if ! mkdir -p "$OUTPUT_DIR"; then + error "Failed to create output directory: $OUTPUT_DIR" + exit 1 +fi + +log "Output directory is set to: $OUTPUT_DIR" + +# Loop through Solidity files and generate storage report +# NOTE: Ignores `src/interfaces` & `src/libraries` since they "should" not contain storage logic. +for file in $(find src/ -name "*.sol" ! -path "*/interfaces/*" ! -path "*/libraries/*"); do + contract_name=$(basename "$file" .sol) + + # Check if the file exists and is readable + if [ ! -r "$file" ]; then + error "Cannot read file: $file" + continue + fi + + log "Processing contract: $contract_name" + + # Run forge inspect and capture errors + if ! forge inspect "$contract_name" storage --pretty > "$OUTPUT_DIR/$contract_name.md"; then + error "Failed to generate storage report for contract: $contract_name" + else + log "Storage report generated for contract: $contract_name" + fi +done \ No newline at end of file diff --git a/.github/workflows/storage-report.yml b/.github/workflows/storage-report.yml new file mode 100644 index 00000000..5d7f50d3 --- /dev/null +++ b/.github/workflows/storage-report.yml @@ -0,0 +1,48 @@ +name: Storage Layout + +on: + push: + branches: + - master + - mainnet + - testnet-goerli + - dev + pull_request: + +jobs: + check_storage: + name: CI + runs-on: "ubuntu-latest" + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: "Generate and prepare the storage reports for current branch" + run: | + bash .github/bin/storage-report.sh pr + + - name: Checkout dev + env: + TARGET: ${{ github.event.pull_request.base.sha }} + run: | + git fetch origin $TARGET + git checkout $TARGET + + - name: "Generate and prepare the storage reports for target branch" + run: | + bash .github/bin/storage-report.sh target + + - name: Compare outputs + run: | + if diff --unified pr target; then + echo "No differences found" + else + echo "::error::Differences found between PR and target branch storage layouts" + exit 1 + fi \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..db84aea5 --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +storage-report: + bash ".github/bin/storage-report.sh" "docs/storage-report/" \ No newline at end of file diff --git a/bin/storage-report.sh b/bin/storage-report.sh new file mode 100644 index 00000000..71fbd9a0 --- /dev/null +++ b/bin/storage-report.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +# Default output directory +OUTPUT_DIR=${1:-docs/storage-report} + +# Function to print messages +log() { + echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] $1" +} + +# Function to print error messages +error() { + echo "$(date '+%Y-%m-%d %H:%M:%S') [ERROR] $1" >&2 +} + +log "Starting the storage report generation." + +# Create the output directory if it doesn't exist +if ! mkdir -p "$OUTPUT_DIR"; then + error "Failed to create output directory: $OUTPUT_DIR" + exit 1 +fi + +log "Output directory is set to: $OUTPUT_DIR" + +# Loop through Solidity files and generate storage report +# NOTE: Ignores `src/interfaces` & `src/libraries` since they "should" not contain storage logic. +for file in $(find src/ -name "*.sol" ! -path "*/interfaces/*" ! -path "*/libraries/*"); do + contract_name=$(basename "$file" .sol) + + # Check if the file exists and is readable + if [ ! -r "$file" ]; then + error "Cannot read file: $file" + continue + fi + + log "Processing contract: $contract_name" + + # Run forge inspect and capture errors + if ! forge inspect "$contract_name" storage --pretty > "$OUTPUT_DIR/$contract_name.md"; then + error "Failed to generate storage report for contract: $contract_name" + else + log "Storage report generated for contract: $contract_name" + fi +done \ No newline at end of file diff --git a/docs/storage-report/AVSRegistrar.md b/docs/storage-report/AVSRegistrar.md new file mode 100644 index 00000000..1ec5dc07 --- /dev/null +++ b/docs/storage-report/AVSRegistrar.md @@ -0,0 +1,6 @@ + +╭------+------+------+--------+-------+----------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++================================================+ +╰------+------+------+--------+-------+----------╯ + diff --git a/docs/storage-report/BLSApkRegistry.md b/docs/storage-report/BLSApkRegistry.md new file mode 100644 index 00000000..69239c7c --- /dev/null +++ b/docs/storage-report/BLSApkRegistry.md @@ -0,0 +1,21 @@ + +╭----------------------+------------------------------------------------------+------+--------+-------+---------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++=============================================================================================================================================+ +| _initialized | uint8 | 0 | 0 | 1 | src/BLSApkRegistry.sol:BLSApkRegistry | +|----------------------+------------------------------------------------------+------+--------+-------+---------------------------------------| +| _initializing | bool | 0 | 1 | 1 | src/BLSApkRegistry.sol:BLSApkRegistry | +|----------------------+------------------------------------------------------+------+--------+-------+---------------------------------------| +| operatorToPubkeyHash | mapping(address => bytes32) | 1 | 0 | 32 | src/BLSApkRegistry.sol:BLSApkRegistry | +|----------------------+------------------------------------------------------+------+--------+-------+---------------------------------------| +| pubkeyHashToOperator | mapping(bytes32 => address) | 2 | 0 | 32 | src/BLSApkRegistry.sol:BLSApkRegistry | +|----------------------+------------------------------------------------------+------+--------+-------+---------------------------------------| +| operatorToPubkey | mapping(address => struct BN254.G1Point) | 3 | 0 | 32 | src/BLSApkRegistry.sol:BLSApkRegistry | +|----------------------+------------------------------------------------------+------+--------+-------+---------------------------------------| +| apkHistory | mapping(uint8 => struct IBLSApkRegistry.ApkUpdate[]) | 4 | 0 | 32 | src/BLSApkRegistry.sol:BLSApkRegistry | +|----------------------+------------------------------------------------------+------+--------+-------+---------------------------------------| +| currentApk | mapping(uint8 => struct BN254.G1Point) | 5 | 0 | 32 | src/BLSApkRegistry.sol:BLSApkRegistry | +|----------------------+------------------------------------------------------+------+--------+-------+---------------------------------------| +| __GAP | uint256[45] | 6 | 0 | 1440 | src/BLSApkRegistry.sol:BLSApkRegistry | +╰----------------------+------------------------------------------------------+------+--------+-------+---------------------------------------╯ + diff --git a/docs/storage-report/BLSApkRegistryStorage.md b/docs/storage-report/BLSApkRegistryStorage.md new file mode 100644 index 00000000..3b5b9e61 --- /dev/null +++ b/docs/storage-report/BLSApkRegistryStorage.md @@ -0,0 +1,21 @@ + +╭----------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++===========================================================================================================================================================+ +| _initialized | uint8 | 0 | 0 | 1 | src/BLSApkRegistryStorage.sol:BLSApkRegistryStorage | +|----------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------| +| _initializing | bool | 0 | 1 | 1 | src/BLSApkRegistryStorage.sol:BLSApkRegistryStorage | +|----------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------| +| operatorToPubkeyHash | mapping(address => bytes32) | 1 | 0 | 32 | src/BLSApkRegistryStorage.sol:BLSApkRegistryStorage | +|----------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------| +| pubkeyHashToOperator | mapping(bytes32 => address) | 2 | 0 | 32 | src/BLSApkRegistryStorage.sol:BLSApkRegistryStorage | +|----------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------| +| operatorToPubkey | mapping(address => struct BN254.G1Point) | 3 | 0 | 32 | src/BLSApkRegistryStorage.sol:BLSApkRegistryStorage | +|----------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------| +| apkHistory | mapping(uint8 => struct IBLSApkRegistry.ApkUpdate[]) | 4 | 0 | 32 | src/BLSApkRegistryStorage.sol:BLSApkRegistryStorage | +|----------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------| +| currentApk | mapping(uint8 => struct BN254.G1Point) | 5 | 0 | 32 | src/BLSApkRegistryStorage.sol:BLSApkRegistryStorage | +|----------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------| +| __GAP | uint256[45] | 6 | 0 | 1440 | src/BLSApkRegistryStorage.sol:BLSApkRegistryStorage | +╰----------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------╯ + diff --git a/docs/storage-report/BLSSignatureChecker.md b/docs/storage-report/BLSSignatureChecker.md new file mode 100644 index 00000000..19b3473b --- /dev/null +++ b/docs/storage-report/BLSSignatureChecker.md @@ -0,0 +1,9 @@ + +╭----------------------+-------------+------+--------+-------+-------------------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++==============================================================================================================+ +| staleStakesForbidden | bool | 0 | 0 | 1 | src/BLSSignatureChecker.sol:BLSSignatureChecker | +|----------------------+-------------+------+--------+-------+-------------------------------------------------| +| __GAP | uint256[49] | 1 | 0 | 1568 | src/BLSSignatureChecker.sol:BLSSignatureChecker | +╰----------------------+-------------+------+--------+-------+-------------------------------------------------╯ + diff --git a/docs/storage-report/ECDSAServiceManagerBase.md b/docs/storage-report/ECDSAServiceManagerBase.md new file mode 100644 index 00000000..2251f673 --- /dev/null +++ b/docs/storage-report/ECDSAServiceManagerBase.md @@ -0,0 +1,19 @@ + +╭------------------+-------------+------+--------+-------+-------------------------------------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++============================================================================================================================+ +| _initialized | uint8 | 0 | 0 | 1 | src/unaudited/ECDSAServiceManagerBase.sol:ECDSAServiceManagerBase | +|------------------+-------------+------+--------+-------+-------------------------------------------------------------------| +| _initializing | bool | 0 | 1 | 1 | src/unaudited/ECDSAServiceManagerBase.sol:ECDSAServiceManagerBase | +|------------------+-------------+------+--------+-------+-------------------------------------------------------------------| +| __gap | uint256[50] | 1 | 0 | 1600 | src/unaudited/ECDSAServiceManagerBase.sol:ECDSAServiceManagerBase | +|------------------+-------------+------+--------+-------+-------------------------------------------------------------------| +| _owner | address | 51 | 0 | 20 | src/unaudited/ECDSAServiceManagerBase.sol:ECDSAServiceManagerBase | +|------------------+-------------+------+--------+-------+-------------------------------------------------------------------| +| __gap | uint256[49] | 52 | 0 | 1568 | src/unaudited/ECDSAServiceManagerBase.sol:ECDSAServiceManagerBase | +|------------------+-------------+------+--------+-------+-------------------------------------------------------------------| +| rewardsInitiator | address | 101 | 0 | 20 | src/unaudited/ECDSAServiceManagerBase.sol:ECDSAServiceManagerBase | +|------------------+-------------+------+--------+-------+-------------------------------------------------------------------| +| __GAP | uint256[49] | 102 | 0 | 1568 | src/unaudited/ECDSAServiceManagerBase.sol:ECDSAServiceManagerBase | +╰------------------+-------------+------+--------+-------+-------------------------------------------------------------------╯ + diff --git a/docs/storage-report/ECDSAStakeRegistry.md b/docs/storage-report/ECDSAStakeRegistry.md new file mode 100644 index 00000000..df768c27 --- /dev/null +++ b/docs/storage-report/ECDSAStakeRegistry.md @@ -0,0 +1,37 @@ + +╭----------------------------+-----------------------------------------------------------+------+--------+-------+---------------------------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++==========================================================================================================================================================================+ +| _initialized | uint8 | 0 | 0 | 1 | src/unaudited/ECDSAStakeRegistry.sol:ECDSAStakeRegistry | +|----------------------------+-----------------------------------------------------------+------+--------+-------+---------------------------------------------------------| +| _initializing | bool | 0 | 1 | 1 | src/unaudited/ECDSAStakeRegistry.sol:ECDSAStakeRegistry | +|----------------------------+-----------------------------------------------------------+------+--------+-------+---------------------------------------------------------| +| __gap | uint256[50] | 1 | 0 | 1600 | src/unaudited/ECDSAStakeRegistry.sol:ECDSAStakeRegistry | +|----------------------------+-----------------------------------------------------------+------+--------+-------+---------------------------------------------------------| +| _owner | address | 51 | 0 | 20 | src/unaudited/ECDSAStakeRegistry.sol:ECDSAStakeRegistry | +|----------------------------+-----------------------------------------------------------+------+--------+-------+---------------------------------------------------------| +| __gap | uint256[49] | 52 | 0 | 1568 | src/unaudited/ECDSAStakeRegistry.sol:ECDSAStakeRegistry | +|----------------------------+-----------------------------------------------------------+------+--------+-------+---------------------------------------------------------| +| _totalOperators | uint256 | 101 | 0 | 32 | src/unaudited/ECDSAStakeRegistry.sol:ECDSAStakeRegistry | +|----------------------------+-----------------------------------------------------------+------+--------+-------+---------------------------------------------------------| +| _quorum | struct Quorum | 102 | 0 | 32 | src/unaudited/ECDSAStakeRegistry.sol:ECDSAStakeRegistry | +|----------------------------+-----------------------------------------------------------+------+--------+-------+---------------------------------------------------------| +| _minimumWeight | uint256 | 103 | 0 | 32 | src/unaudited/ECDSAStakeRegistry.sol:ECDSAStakeRegistry | +|----------------------------+-----------------------------------------------------------+------+--------+-------+---------------------------------------------------------| +| _serviceManager | address | 104 | 0 | 20 | src/unaudited/ECDSAStakeRegistry.sol:ECDSAStakeRegistry | +|----------------------------+-----------------------------------------------------------+------+--------+-------+---------------------------------------------------------| +| _stakeExpiry | uint256 | 105 | 0 | 32 | src/unaudited/ECDSAStakeRegistry.sol:ECDSAStakeRegistry | +|----------------------------+-----------------------------------------------------------+------+--------+-------+---------------------------------------------------------| +| _operatorSigningKeyHistory | mapping(address => struct CheckpointsUpgradeable.History) | 106 | 0 | 32 | src/unaudited/ECDSAStakeRegistry.sol:ECDSAStakeRegistry | +|----------------------------+-----------------------------------------------------------+------+--------+-------+---------------------------------------------------------| +| _totalWeightHistory | struct CheckpointsUpgradeable.History | 107 | 0 | 32 | src/unaudited/ECDSAStakeRegistry.sol:ECDSAStakeRegistry | +|----------------------------+-----------------------------------------------------------+------+--------+-------+---------------------------------------------------------| +| _thresholdWeightHistory | struct CheckpointsUpgradeable.History | 108 | 0 | 32 | src/unaudited/ECDSAStakeRegistry.sol:ECDSAStakeRegistry | +|----------------------------+-----------------------------------------------------------+------+--------+-------+---------------------------------------------------------| +| _operatorWeightHistory | mapping(address => struct CheckpointsUpgradeable.History) | 109 | 0 | 32 | src/unaudited/ECDSAStakeRegistry.sol:ECDSAStakeRegistry | +|----------------------------+-----------------------------------------------------------+------+--------+-------+---------------------------------------------------------| +| _operatorRegistered | mapping(address => bool) | 110 | 0 | 32 | src/unaudited/ECDSAStakeRegistry.sol:ECDSAStakeRegistry | +|----------------------------+-----------------------------------------------------------+------+--------+-------+---------------------------------------------------------| +| __gap | uint256[40] | 111 | 0 | 1280 | src/unaudited/ECDSAStakeRegistry.sol:ECDSAStakeRegistry | +╰----------------------------+-----------------------------------------------------------+------+--------+-------+---------------------------------------------------------╯ + diff --git a/docs/storage-report/ECDSAStakeRegistryEqualWeight.md b/docs/storage-report/ECDSAStakeRegistryEqualWeight.md new file mode 100644 index 00000000..e1e1c166 --- /dev/null +++ b/docs/storage-report/ECDSAStakeRegistryEqualWeight.md @@ -0,0 +1,39 @@ + +╭----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++=========================================================================================================================================================================================================+ +| _initialized | uint8 | 0 | 0 | 1 | src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol:ECDSAStakeRegistryEqualWeight | +|----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------| +| _initializing | bool | 0 | 1 | 1 | src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol:ECDSAStakeRegistryEqualWeight | +|----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------| +| __gap | uint256[50] | 1 | 0 | 1600 | src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol:ECDSAStakeRegistryEqualWeight | +|----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------| +| _owner | address | 51 | 0 | 20 | src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol:ECDSAStakeRegistryEqualWeight | +|----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------| +| __gap | uint256[49] | 52 | 0 | 1568 | src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol:ECDSAStakeRegistryEqualWeight | +|----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------| +| _totalOperators | uint256 | 101 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol:ECDSAStakeRegistryEqualWeight | +|----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------| +| _quorum | struct Quorum | 102 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol:ECDSAStakeRegistryEqualWeight | +|----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------| +| _minimumWeight | uint256 | 103 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol:ECDSAStakeRegistryEqualWeight | +|----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------| +| _serviceManager | address | 104 | 0 | 20 | src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol:ECDSAStakeRegistryEqualWeight | +|----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------| +| _stakeExpiry | uint256 | 105 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol:ECDSAStakeRegistryEqualWeight | +|----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------| +| _operatorSigningKeyHistory | mapping(address => struct CheckpointsUpgradeable.History) | 106 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol:ECDSAStakeRegistryEqualWeight | +|----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------| +| _totalWeightHistory | struct CheckpointsUpgradeable.History | 107 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol:ECDSAStakeRegistryEqualWeight | +|----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------| +| _thresholdWeightHistory | struct CheckpointsUpgradeable.History | 108 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol:ECDSAStakeRegistryEqualWeight | +|----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------| +| _operatorWeightHistory | mapping(address => struct CheckpointsUpgradeable.History) | 109 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol:ECDSAStakeRegistryEqualWeight | +|----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------| +| _operatorRegistered | mapping(address => bool) | 110 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol:ECDSAStakeRegistryEqualWeight | +|----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------| +| __gap | uint256[40] | 111 | 0 | 1280 | src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol:ECDSAStakeRegistryEqualWeight | +|----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------| +| allowlistedOperators | mapping(address => bool) | 151 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryEqualWeight.sol:ECDSAStakeRegistryEqualWeight | +╰----------------------------+-----------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------------╯ + diff --git a/docs/storage-report/ECDSAStakeRegistryPermissioned.md b/docs/storage-report/ECDSAStakeRegistryPermissioned.md new file mode 100644 index 00000000..bdc5b32e --- /dev/null +++ b/docs/storage-report/ECDSAStakeRegistryPermissioned.md @@ -0,0 +1,39 @@ + +╭----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++===========================================================================================================================================================================================================+ +| _initialized | uint8 | 0 | 0 | 1 | src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol:ECDSAStakeRegistryPermissioned | +|----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------| +| _initializing | bool | 0 | 1 | 1 | src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol:ECDSAStakeRegistryPermissioned | +|----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------| +| __gap | uint256[50] | 1 | 0 | 1600 | src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol:ECDSAStakeRegistryPermissioned | +|----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------| +| _owner | address | 51 | 0 | 20 | src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol:ECDSAStakeRegistryPermissioned | +|----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------| +| __gap | uint256[49] | 52 | 0 | 1568 | src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol:ECDSAStakeRegistryPermissioned | +|----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------| +| _totalOperators | uint256 | 101 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol:ECDSAStakeRegistryPermissioned | +|----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------| +| _quorum | struct Quorum | 102 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol:ECDSAStakeRegistryPermissioned | +|----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------| +| _minimumWeight | uint256 | 103 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol:ECDSAStakeRegistryPermissioned | +|----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------| +| _serviceManager | address | 104 | 0 | 20 | src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol:ECDSAStakeRegistryPermissioned | +|----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------| +| _stakeExpiry | uint256 | 105 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol:ECDSAStakeRegistryPermissioned | +|----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------| +| _operatorSigningKeyHistory | mapping(address => struct CheckpointsUpgradeable.History) | 106 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol:ECDSAStakeRegistryPermissioned | +|----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------| +| _totalWeightHistory | struct CheckpointsUpgradeable.History | 107 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol:ECDSAStakeRegistryPermissioned | +|----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------| +| _thresholdWeightHistory | struct CheckpointsUpgradeable.History | 108 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol:ECDSAStakeRegistryPermissioned | +|----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------| +| _operatorWeightHistory | mapping(address => struct CheckpointsUpgradeable.History) | 109 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol:ECDSAStakeRegistryPermissioned | +|----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------| +| _operatorRegistered | mapping(address => bool) | 110 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol:ECDSAStakeRegistryPermissioned | +|----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------| +| __gap | uint256[40] | 111 | 0 | 1280 | src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol:ECDSAStakeRegistryPermissioned | +|----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------| +| allowlistedOperators | mapping(address => bool) | 151 | 0 | 32 | src/unaudited/examples/ECDSAStakeRegistryPermissioned.sol:ECDSAStakeRegistryPermissioned | +╰----------------------------+-----------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------------╯ + diff --git a/docs/storage-report/ECDSAStakeRegistryStorage.md b/docs/storage-report/ECDSAStakeRegistryStorage.md new file mode 100644 index 00000000..69ef3d05 --- /dev/null +++ b/docs/storage-report/ECDSAStakeRegistryStorage.md @@ -0,0 +1,27 @@ + +╭----------------------------+-----------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++========================================================================================================================================================================================+ +| _totalOperators | uint256 | 0 | 0 | 32 | src/unaudited/ECDSAStakeRegistryStorage.sol:ECDSAStakeRegistryStorage | +|----------------------------+-----------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------| +| _quorum | struct Quorum | 1 | 0 | 32 | src/unaudited/ECDSAStakeRegistryStorage.sol:ECDSAStakeRegistryStorage | +|----------------------------+-----------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------| +| _minimumWeight | uint256 | 2 | 0 | 32 | src/unaudited/ECDSAStakeRegistryStorage.sol:ECDSAStakeRegistryStorage | +|----------------------------+-----------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------| +| _serviceManager | address | 3 | 0 | 20 | src/unaudited/ECDSAStakeRegistryStorage.sol:ECDSAStakeRegistryStorage | +|----------------------------+-----------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------| +| _stakeExpiry | uint256 | 4 | 0 | 32 | src/unaudited/ECDSAStakeRegistryStorage.sol:ECDSAStakeRegistryStorage | +|----------------------------+-----------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------| +| _operatorSigningKeyHistory | mapping(address => struct CheckpointsUpgradeable.History) | 5 | 0 | 32 | src/unaudited/ECDSAStakeRegistryStorage.sol:ECDSAStakeRegistryStorage | +|----------------------------+-----------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------| +| _totalWeightHistory | struct CheckpointsUpgradeable.History | 6 | 0 | 32 | src/unaudited/ECDSAStakeRegistryStorage.sol:ECDSAStakeRegistryStorage | +|----------------------------+-----------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------| +| _thresholdWeightHistory | struct CheckpointsUpgradeable.History | 7 | 0 | 32 | src/unaudited/ECDSAStakeRegistryStorage.sol:ECDSAStakeRegistryStorage | +|----------------------------+-----------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------| +| _operatorWeightHistory | mapping(address => struct CheckpointsUpgradeable.History) | 8 | 0 | 32 | src/unaudited/ECDSAStakeRegistryStorage.sol:ECDSAStakeRegistryStorage | +|----------------------------+-----------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------| +| _operatorRegistered | mapping(address => bool) | 9 | 0 | 32 | src/unaudited/ECDSAStakeRegistryStorage.sol:ECDSAStakeRegistryStorage | +|----------------------------+-----------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------| +| __gap | uint256[40] | 10 | 0 | 1280 | src/unaudited/ECDSAStakeRegistryStorage.sol:ECDSAStakeRegistryStorage | +╰----------------------------+-----------------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------╯ + diff --git a/docs/storage-report/EjectionManager.md b/docs/storage-report/EjectionManager.md new file mode 100644 index 00000000..55e2a2df --- /dev/null +++ b/docs/storage-report/EjectionManager.md @@ -0,0 +1,21 @@ + +╭-----------------------+----------------------------------------------------------------+------+--------+-------+-----------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++==========================================================================================================================================================+ +| _initialized | uint8 | 0 | 0 | 1 | src/EjectionManager.sol:EjectionManager | +|-----------------------+----------------------------------------------------------------+------+--------+-------+-----------------------------------------| +| _initializing | bool | 0 | 1 | 1 | src/EjectionManager.sol:EjectionManager | +|-----------------------+----------------------------------------------------------------+------+--------+-------+-----------------------------------------| +| __gap | uint256[50] | 1 | 0 | 1600 | src/EjectionManager.sol:EjectionManager | +|-----------------------+----------------------------------------------------------------+------+--------+-------+-----------------------------------------| +| _owner | address | 51 | 0 | 20 | src/EjectionManager.sol:EjectionManager | +|-----------------------+----------------------------------------------------------------+------+--------+-------+-----------------------------------------| +| __gap | uint256[49] | 52 | 0 | 1568 | src/EjectionManager.sol:EjectionManager | +|-----------------------+----------------------------------------------------------------+------+--------+-------+-----------------------------------------| +| isEjector | mapping(address => bool) | 101 | 0 | 32 | src/EjectionManager.sol:EjectionManager | +|-----------------------+----------------------------------------------------------------+------+--------+-------+-----------------------------------------| +| stakeEjectedForQuorum | mapping(uint8 => struct IEjectionManager.StakeEjection[]) | 102 | 0 | 32 | src/EjectionManager.sol:EjectionManager | +|-----------------------+----------------------------------------------------------------+------+--------+-------+-----------------------------------------| +| quorumEjectionParams | mapping(uint8 => struct IEjectionManager.QuorumEjectionParams) | 103 | 0 | 32 | src/EjectionManager.sol:EjectionManager | +╰-----------------------+----------------------------------------------------------------+------+--------+-------+-----------------------------------------╯ + diff --git a/docs/storage-report/IndexRegistry.md b/docs/storage-report/IndexRegistry.md new file mode 100644 index 00000000..3415bdcd --- /dev/null +++ b/docs/storage-report/IndexRegistry.md @@ -0,0 +1,17 @@ + +╭-----------------------+-----------------------------------------------------------------------------+------+--------+-------+-------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++===================================================================================================================================================================+ +| _initialized | uint8 | 0 | 0 | 1 | src/IndexRegistry.sol:IndexRegistry | +|-----------------------+-----------------------------------------------------------------------------+------+--------+-------+-------------------------------------| +| _initializing | bool | 0 | 1 | 1 | src/IndexRegistry.sol:IndexRegistry | +|-----------------------+-----------------------------------------------------------------------------+------+--------+-------+-------------------------------------| +| currentOperatorIndex | mapping(uint8 => mapping(bytes32 => uint32)) | 1 | 0 | 32 | src/IndexRegistry.sol:IndexRegistry | +|-----------------------+-----------------------------------------------------------------------------+------+--------+-------+-------------------------------------| +| _operatorIndexHistory | mapping(uint8 => mapping(uint32 => struct IIndexRegistry.OperatorUpdate[])) | 2 | 0 | 32 | src/IndexRegistry.sol:IndexRegistry | +|-----------------------+-----------------------------------------------------------------------------+------+--------+-------+-------------------------------------| +| _operatorCountHistory | mapping(uint8 => struct IIndexRegistry.QuorumUpdate[]) | 3 | 0 | 32 | src/IndexRegistry.sol:IndexRegistry | +|-----------------------+-----------------------------------------------------------------------------+------+--------+-------+-------------------------------------| +| __GAP | uint256[47] | 4 | 0 | 1504 | src/IndexRegistry.sol:IndexRegistry | +╰-----------------------+-----------------------------------------------------------------------------+------+--------+-------+-------------------------------------╯ + diff --git a/docs/storage-report/IndexRegistryStorage.md b/docs/storage-report/IndexRegistryStorage.md new file mode 100644 index 00000000..9581f514 --- /dev/null +++ b/docs/storage-report/IndexRegistryStorage.md @@ -0,0 +1,17 @@ + +╭-----------------------+-----------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++=================================================================================================================================================================================+ +| _initialized | uint8 | 0 | 0 | 1 | src/IndexRegistryStorage.sol:IndexRegistryStorage | +|-----------------------+-----------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------| +| _initializing | bool | 0 | 1 | 1 | src/IndexRegistryStorage.sol:IndexRegistryStorage | +|-----------------------+-----------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------| +| currentOperatorIndex | mapping(uint8 => mapping(bytes32 => uint32)) | 1 | 0 | 32 | src/IndexRegistryStorage.sol:IndexRegistryStorage | +|-----------------------+-----------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------| +| _operatorIndexHistory | mapping(uint8 => mapping(uint32 => struct IIndexRegistry.OperatorUpdate[])) | 2 | 0 | 32 | src/IndexRegistryStorage.sol:IndexRegistryStorage | +|-----------------------+-----------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------| +| _operatorCountHistory | mapping(uint8 => struct IIndexRegistry.QuorumUpdate[]) | 3 | 0 | 32 | src/IndexRegistryStorage.sol:IndexRegistryStorage | +|-----------------------+-----------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------| +| __GAP | uint256[47] | 4 | 0 | 1504 | src/IndexRegistryStorage.sol:IndexRegistryStorage | +╰-----------------------+-----------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------╯ + diff --git a/docs/storage-report/InstantSlasher.md b/docs/storage-report/InstantSlasher.md new file mode 100644 index 00000000..1eafc2b8 --- /dev/null +++ b/docs/storage-report/InstantSlasher.md @@ -0,0 +1,17 @@ + +╭----------------+-------------+------+--------+-------+------------------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++=======================================================================================================+ +| _initialized | uint8 | 0 | 0 | 1 | src/slashers/InstantSlasher.sol:InstantSlasher | +|----------------+-------------+------+--------+-------+------------------------------------------------| +| _initializing | bool | 0 | 1 | 1 | src/slashers/InstantSlasher.sol:InstantSlasher | +|----------------+-------------+------+--------+-------+------------------------------------------------| +| serviceManager | address | 0 | 2 | 20 | src/slashers/InstantSlasher.sol:InstantSlasher | +|----------------+-------------+------+--------+-------+------------------------------------------------| +| slasher | address | 1 | 0 | 20 | src/slashers/InstantSlasher.sol:InstantSlasher | +|----------------+-------------+------+--------+-------+------------------------------------------------| +| nextRequestId | uint256 | 2 | 0 | 32 | src/slashers/InstantSlasher.sol:InstantSlasher | +|----------------+-------------+------+--------+-------+------------------------------------------------| +| __gap | uint256[47] | 3 | 0 | 1504 | src/slashers/InstantSlasher.sol:InstantSlasher | +╰----------------+-------------+------+--------+-------+------------------------------------------------╯ + diff --git a/docs/storage-report/OperatorStateRetriever.md b/docs/storage-report/OperatorStateRetriever.md new file mode 100644 index 00000000..1ec5dc07 --- /dev/null +++ b/docs/storage-report/OperatorStateRetriever.md @@ -0,0 +1,6 @@ + +╭------+------+------+--------+-------+----------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++================================================+ +╰------+------+------+--------+-------+----------╯ + diff --git a/docs/storage-report/RegistryCoordinator.md b/docs/storage-report/RegistryCoordinator.md new file mode 100644 index 00000000..1adff5f4 --- /dev/null +++ b/docs/storage-report/RegistryCoordinator.md @@ -0,0 +1,49 @@ + +╭-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++==============================================================================================================================================================================+ +| _initialized | uint8 | 0 | 0 | 1 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| _initializing | bool | 0 | 1 | 1 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| __deprecated_pauserRegistry | contract IPauserRegistry | 0 | 2 | 20 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| _paused | uint256 | 1 | 0 | 32 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| __gap | uint256[48] | 2 | 0 | 1536 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| __gap | uint256[50] | 50 | 0 | 1600 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| _owner | address | 100 | 0 | 20 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| __gap | uint256[49] | 101 | 0 | 1568 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| quorumCount | uint8 | 150 | 0 | 1 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| _quorumParams | mapping(uint8 => struct IRegistryCoordinator.OperatorSetParam) | 151 | 0 | 32 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| _operatorBitmapHistory | mapping(bytes32 => struct IRegistryCoordinator.QuorumBitmapUpdate[]) | 152 | 0 | 32 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| _operatorInfo | mapping(address => struct IRegistryCoordinator.OperatorInfo) | 153 | 0 | 32 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| isChurnApproverSaltUsed | mapping(bytes32 => bool) | 154 | 0 | 32 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| quorumUpdateBlockNumber | mapping(uint8 => uint256) | 155 | 0 | 32 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| registries | address[] | 156 | 0 | 32 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| churnApprover | address | 157 | 0 | 20 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| ejector | address | 158 | 0 | 20 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| lastEjectionTimestamp | mapping(address => uint256) | 159 | 0 | 32 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| ejectionCooldown | uint256 | 160 | 0 | 32 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| isOperatorSetAVS | bool | 161 | 0 | 1 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| isM2Quorum | mapping(uint8 => bool) | 162 | 0 | 32 | src/RegistryCoordinator.sol:RegistryCoordinator | +|-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------| +| __GAP | uint256[37] | 163 | 0 | 1184 | src/RegistryCoordinator.sol:RegistryCoordinator | +╰-----------------------------+----------------------------------------------------------------------+------+--------+-------+-------------------------------------------------╯ + diff --git a/docs/storage-report/RegistryCoordinatorStorage.md b/docs/storage-report/RegistryCoordinatorStorage.md new file mode 100644 index 00000000..1e9fc25d --- /dev/null +++ b/docs/storage-report/RegistryCoordinatorStorage.md @@ -0,0 +1,33 @@ + +╭-------------------------+----------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++========================================================================================================================================================================================+ +| quorumCount | uint8 | 0 | 0 | 1 | src/RegistryCoordinatorStorage.sol:RegistryCoordinatorStorage | +|-------------------------+----------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------| +| _quorumParams | mapping(uint8 => struct IRegistryCoordinator.OperatorSetParam) | 1 | 0 | 32 | src/RegistryCoordinatorStorage.sol:RegistryCoordinatorStorage | +|-------------------------+----------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------| +| _operatorBitmapHistory | mapping(bytes32 => struct IRegistryCoordinator.QuorumBitmapUpdate[]) | 2 | 0 | 32 | src/RegistryCoordinatorStorage.sol:RegistryCoordinatorStorage | +|-------------------------+----------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------| +| _operatorInfo | mapping(address => struct IRegistryCoordinator.OperatorInfo) | 3 | 0 | 32 | src/RegistryCoordinatorStorage.sol:RegistryCoordinatorStorage | +|-------------------------+----------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------| +| isChurnApproverSaltUsed | mapping(bytes32 => bool) | 4 | 0 | 32 | src/RegistryCoordinatorStorage.sol:RegistryCoordinatorStorage | +|-------------------------+----------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------| +| quorumUpdateBlockNumber | mapping(uint8 => uint256) | 5 | 0 | 32 | src/RegistryCoordinatorStorage.sol:RegistryCoordinatorStorage | +|-------------------------+----------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------| +| registries | address[] | 6 | 0 | 32 | src/RegistryCoordinatorStorage.sol:RegistryCoordinatorStorage | +|-------------------------+----------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------| +| churnApprover | address | 7 | 0 | 20 | src/RegistryCoordinatorStorage.sol:RegistryCoordinatorStorage | +|-------------------------+----------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------| +| ejector | address | 8 | 0 | 20 | src/RegistryCoordinatorStorage.sol:RegistryCoordinatorStorage | +|-------------------------+----------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------| +| lastEjectionTimestamp | mapping(address => uint256) | 9 | 0 | 32 | src/RegistryCoordinatorStorage.sol:RegistryCoordinatorStorage | +|-------------------------+----------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------| +| ejectionCooldown | uint256 | 10 | 0 | 32 | src/RegistryCoordinatorStorage.sol:RegistryCoordinatorStorage | +|-------------------------+----------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------| +| isOperatorSetAVS | bool | 11 | 0 | 1 | src/RegistryCoordinatorStorage.sol:RegistryCoordinatorStorage | +|-------------------------+----------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------| +| isM2Quorum | mapping(uint8 => bool) | 12 | 0 | 32 | src/RegistryCoordinatorStorage.sol:RegistryCoordinatorStorage | +|-------------------------+----------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------| +| __GAP | uint256[37] | 13 | 0 | 1184 | src/RegistryCoordinatorStorage.sol:RegistryCoordinatorStorage | +╰-------------------------+----------------------------------------------------------------------+------+--------+-------+---------------------------------------------------------------╯ + diff --git a/docs/storage-report/ServiceManagerBase.md b/docs/storage-report/ServiceManagerBase.md new file mode 100644 index 00000000..61ef533a --- /dev/null +++ b/docs/storage-report/ServiceManagerBase.md @@ -0,0 +1,27 @@ + +╭--------------------------+-------------+------+--------+-------+-----------------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++================================================================================================================+ +| _initialized | uint8 | 0 | 0 | 1 | src/ServiceManagerBase.sol:ServiceManagerBase | +|--------------------------+-------------+------+--------+-------+-----------------------------------------------| +| _initializing | bool | 0 | 1 | 1 | src/ServiceManagerBase.sol:ServiceManagerBase | +|--------------------------+-------------+------+--------+-------+-----------------------------------------------| +| __gap | uint256[50] | 1 | 0 | 1600 | src/ServiceManagerBase.sol:ServiceManagerBase | +|--------------------------+-------------+------+--------+-------+-----------------------------------------------| +| _owner | address | 51 | 0 | 20 | src/ServiceManagerBase.sol:ServiceManagerBase | +|--------------------------+-------------+------+--------+-------+-----------------------------------------------| +| __gap | uint256[49] | 52 | 0 | 1568 | src/ServiceManagerBase.sol:ServiceManagerBase | +|--------------------------+-------------+------+--------+-------+-----------------------------------------------| +| rewardsInitiator | address | 101 | 0 | 20 | src/ServiceManagerBase.sol:ServiceManagerBase | +|--------------------------+-------------+------+--------+-------+-----------------------------------------------| +| slasher | address | 102 | 0 | 20 | src/ServiceManagerBase.sol:ServiceManagerBase | +|--------------------------+-------------+------+--------+-------+-----------------------------------------------| +| proposedSlasher | address | 103 | 0 | 20 | src/ServiceManagerBase.sol:ServiceManagerBase | +|--------------------------+-------------+------+--------+-------+-----------------------------------------------| +| slasherProposalTimestamp | uint256 | 104 | 0 | 32 | src/ServiceManagerBase.sol:ServiceManagerBase | +|--------------------------+-------------+------+--------+-------+-----------------------------------------------| +| migrationFinalized | bool | 105 | 0 | 1 | src/ServiceManagerBase.sol:ServiceManagerBase | +|--------------------------+-------------+------+--------+-------+-----------------------------------------------| +| __GAP | uint256[45] | 106 | 0 | 1440 | src/ServiceManagerBase.sol:ServiceManagerBase | +╰--------------------------+-------------+------+--------+-------+-----------------------------------------------╯ + diff --git a/docs/storage-report/ServiceManagerBaseStorage.md b/docs/storage-report/ServiceManagerBaseStorage.md new file mode 100644 index 00000000..baa458fa --- /dev/null +++ b/docs/storage-report/ServiceManagerBaseStorage.md @@ -0,0 +1,27 @@ + +╭--------------------------+-------------+------+--------+-------+-------------------------------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++==============================================================================================================================+ +| _initialized | uint8 | 0 | 0 | 1 | src/ServiceManagerBaseStorage.sol:ServiceManagerBaseStorage | +|--------------------------+-------------+------+--------+-------+-------------------------------------------------------------| +| _initializing | bool | 0 | 1 | 1 | src/ServiceManagerBaseStorage.sol:ServiceManagerBaseStorage | +|--------------------------+-------------+------+--------+-------+-------------------------------------------------------------| +| __gap | uint256[50] | 1 | 0 | 1600 | src/ServiceManagerBaseStorage.sol:ServiceManagerBaseStorage | +|--------------------------+-------------+------+--------+-------+-------------------------------------------------------------| +| _owner | address | 51 | 0 | 20 | src/ServiceManagerBaseStorage.sol:ServiceManagerBaseStorage | +|--------------------------+-------------+------+--------+-------+-------------------------------------------------------------| +| __gap | uint256[49] | 52 | 0 | 1568 | src/ServiceManagerBaseStorage.sol:ServiceManagerBaseStorage | +|--------------------------+-------------+------+--------+-------+-------------------------------------------------------------| +| rewardsInitiator | address | 101 | 0 | 20 | src/ServiceManagerBaseStorage.sol:ServiceManagerBaseStorage | +|--------------------------+-------------+------+--------+-------+-------------------------------------------------------------| +| slasher | address | 102 | 0 | 20 | src/ServiceManagerBaseStorage.sol:ServiceManagerBaseStorage | +|--------------------------+-------------+------+--------+-------+-------------------------------------------------------------| +| proposedSlasher | address | 103 | 0 | 20 | src/ServiceManagerBaseStorage.sol:ServiceManagerBaseStorage | +|--------------------------+-------------+------+--------+-------+-------------------------------------------------------------| +| slasherProposalTimestamp | uint256 | 104 | 0 | 32 | src/ServiceManagerBaseStorage.sol:ServiceManagerBaseStorage | +|--------------------------+-------------+------+--------+-------+-------------------------------------------------------------| +| migrationFinalized | bool | 105 | 0 | 1 | src/ServiceManagerBaseStorage.sol:ServiceManagerBaseStorage | +|--------------------------+-------------+------+--------+-------+-------------------------------------------------------------| +| __GAP | uint256[45] | 106 | 0 | 1440 | src/ServiceManagerBaseStorage.sol:ServiceManagerBaseStorage | +╰--------------------------+-------------+------+--------+-------+-------------------------------------------------------------╯ + diff --git a/docs/storage-report/ServiceManagerRouter.md b/docs/storage-report/ServiceManagerRouter.md new file mode 100644 index 00000000..1ec5dc07 --- /dev/null +++ b/docs/storage-report/ServiceManagerRouter.md @@ -0,0 +1,6 @@ + +╭------+------+------+--------+-------+----------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++================================================+ +╰------+------+------+--------+-------+----------╯ + diff --git a/docs/storage-report/SlasherBase.md b/docs/storage-report/SlasherBase.md new file mode 100644 index 00000000..2e210170 --- /dev/null +++ b/docs/storage-report/SlasherBase.md @@ -0,0 +1,17 @@ + +╭----------------+-------------+------+--------+-------+-----------------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++======================================================================================================+ +| _initialized | uint8 | 0 | 0 | 1 | src/slashers/base/SlasherBase.sol:SlasherBase | +|----------------+-------------+------+--------+-------+-----------------------------------------------| +| _initializing | bool | 0 | 1 | 1 | src/slashers/base/SlasherBase.sol:SlasherBase | +|----------------+-------------+------+--------+-------+-----------------------------------------------| +| serviceManager | address | 0 | 2 | 20 | src/slashers/base/SlasherBase.sol:SlasherBase | +|----------------+-------------+------+--------+-------+-----------------------------------------------| +| slasher | address | 1 | 0 | 20 | src/slashers/base/SlasherBase.sol:SlasherBase | +|----------------+-------------+------+--------+-------+-----------------------------------------------| +| nextRequestId | uint256 | 2 | 0 | 32 | src/slashers/base/SlasherBase.sol:SlasherBase | +|----------------+-------------+------+--------+-------+-----------------------------------------------| +| __gap | uint256[47] | 3 | 0 | 1504 | src/slashers/base/SlasherBase.sol:SlasherBase | +╰----------------+-------------+------+--------+-------+-----------------------------------------------╯ + diff --git a/docs/storage-report/SlasherStorage.md b/docs/storage-report/SlasherStorage.md new file mode 100644 index 00000000..6a5ec3aa --- /dev/null +++ b/docs/storage-report/SlasherStorage.md @@ -0,0 +1,13 @@ + +╭----------------+-------------+------+--------+-------+-----------------------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++============================================================================================================+ +| serviceManager | address | 0 | 0 | 20 | src/slashers/base/SlasherStorage.sol:SlasherStorage | +|----------------+-------------+------+--------+-------+-----------------------------------------------------| +| slasher | address | 1 | 0 | 20 | src/slashers/base/SlasherStorage.sol:SlasherStorage | +|----------------+-------------+------+--------+-------+-----------------------------------------------------| +| nextRequestId | uint256 | 2 | 0 | 32 | src/slashers/base/SlasherStorage.sol:SlasherStorage | +|----------------+-------------+------+--------+-------+-----------------------------------------------------| +| __gap | uint256[47] | 3 | 0 | 1504 | src/slashers/base/SlasherStorage.sol:SlasherStorage | +╰----------------+-------------+------+--------+-------+-----------------------------------------------------╯ + diff --git a/docs/storage-report/StakeRegistry.md b/docs/storage-report/StakeRegistry.md new file mode 100644 index 00000000..820aaba6 --- /dev/null +++ b/docs/storage-report/StakeRegistry.md @@ -0,0 +1,21 @@ + +╭----------------------------------+---------------------------------------------------------------------------+------+--------+-------+-------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++============================================================================================================================================================================+ +| minimumStakeForQuorum | mapping(uint8 => uint96) | 0 | 0 | 32 | src/StakeRegistry.sol:StakeRegistry | +|----------------------------------+---------------------------------------------------------------------------+------+--------+-------+-------------------------------------| +| _totalStakeHistory | mapping(uint8 => struct IStakeRegistry.StakeUpdate[]) | 1 | 0 | 32 | src/StakeRegistry.sol:StakeRegistry | +|----------------------------------+---------------------------------------------------------------------------+------+--------+-------+-------------------------------------| +| operatorStakeHistory | mapping(bytes32 => mapping(uint8 => struct IStakeRegistry.StakeUpdate[])) | 2 | 0 | 32 | src/StakeRegistry.sol:StakeRegistry | +|----------------------------------+---------------------------------------------------------------------------+------+--------+-------+-------------------------------------| +| strategyParams | mapping(uint8 => struct IStakeRegistry.StrategyParams[]) | 3 | 0 | 32 | src/StakeRegistry.sol:StakeRegistry | +|----------------------------------+---------------------------------------------------------------------------+------+--------+-------+-------------------------------------| +| strategiesPerQuorum | mapping(uint8 => contract IStrategy[]) | 4 | 0 | 32 | src/StakeRegistry.sol:StakeRegistry | +|----------------------------------+---------------------------------------------------------------------------+------+--------+-------+-------------------------------------| +| stakeTypePerQuorum | mapping(uint8 => enum StakeType) | 5 | 0 | 32 | src/StakeRegistry.sol:StakeRegistry | +|----------------------------------+---------------------------------------------------------------------------+------+--------+-------+-------------------------------------| +| slashableStakeLookAheadPerQuorum | mapping(uint8 => uint32) | 6 | 0 | 32 | src/StakeRegistry.sol:StakeRegistry | +|----------------------------------+---------------------------------------------------------------------------+------+--------+-------+-------------------------------------| +| __GAP | uint256[43] | 7 | 0 | 1376 | src/StakeRegistry.sol:StakeRegistry | +╰----------------------------------+---------------------------------------------------------------------------+------+--------+-------+-------------------------------------╯ + diff --git a/docs/storage-report/StakeRegistryStorage.md b/docs/storage-report/StakeRegistryStorage.md new file mode 100644 index 00000000..4a545513 --- /dev/null +++ b/docs/storage-report/StakeRegistryStorage.md @@ -0,0 +1,21 @@ + +╭----------------------------------+---------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------╮ +| Name | Type | Slot | Offset | Bytes | Contract | ++==========================================================================================================================================================================================+ +| minimumStakeForQuorum | mapping(uint8 => uint96) | 0 | 0 | 32 | src/StakeRegistryStorage.sol:StakeRegistryStorage | +|----------------------------------+---------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------| +| _totalStakeHistory | mapping(uint8 => struct IStakeRegistry.StakeUpdate[]) | 1 | 0 | 32 | src/StakeRegistryStorage.sol:StakeRegistryStorage | +|----------------------------------+---------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------| +| operatorStakeHistory | mapping(bytes32 => mapping(uint8 => struct IStakeRegistry.StakeUpdate[])) | 2 | 0 | 32 | src/StakeRegistryStorage.sol:StakeRegistryStorage | +|----------------------------------+---------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------| +| strategyParams | mapping(uint8 => struct IStakeRegistry.StrategyParams[]) | 3 | 0 | 32 | src/StakeRegistryStorage.sol:StakeRegistryStorage | +|----------------------------------+---------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------| +| strategiesPerQuorum | mapping(uint8 => contract IStrategy[]) | 4 | 0 | 32 | src/StakeRegistryStorage.sol:StakeRegistryStorage | +|----------------------------------+---------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------| +| stakeTypePerQuorum | mapping(uint8 => enum StakeType) | 5 | 0 | 32 | src/StakeRegistryStorage.sol:StakeRegistryStorage | +|----------------------------------+---------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------| +| slashableStakeLookAheadPerQuorum | mapping(uint8 => uint32) | 6 | 0 | 32 | src/StakeRegistryStorage.sol:StakeRegistryStorage | +|----------------------------------+---------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------| +| __GAP | uint256[43] | 7 | 0 | 1376 | src/StakeRegistryStorage.sol:StakeRegistryStorage | +╰----------------------------------+---------------------------------------------------------------------------+------+--------+-------+---------------------------------------------------╯ + diff --git a/docs/storage-report/VetoableSlasher.md b/docs/storage-report/VetoableSlasher.md new file mode 100644 index 00000000..e69de29b