From 76c21d32d2d01b160ffd41c49d524b55d132a625 Mon Sep 17 00:00:00 2001 From: Steve Degosserie <723552+stiiifff@users.noreply.github.com> Date: Mon, 26 Jan 2026 22:33:58 +0200 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20=F0=9F=90=9B=20Align=20ProxyType=20e?= =?UTF-8?q?num=20in=20Proxy=20precompile=20with=20runtime=20(#413)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Fixed `ProxyType` enum in the Solidity Proxy precompile interface to match the runtime definition - Removed non-existent `AuthorMapping` variant - Added missing `SudoOnly` variant ## Problem The Solidity interface in `Proxy.sol` had incorrect `ProxyType` enum values that didn't match the runtime definition: | Index | Runtime (Correct) | Solidity (Was) | |-------|------------------|----------------| | 0 | Any | Any | | 1 | NonTransfer | NonTransfer | | 2 | Governance | Governance | | 3 | Staking | Staking | | 4 | CancelProxy | CancelProxy | | 5 | Balances | Balances | | 6 | **IdentityJudgement** | **AuthorMapping** ❌ | | 7 | **SudoOnly** | **IdentityJudgement** ❌ | This mismatch would cause EVM users calling the Proxy precompile with `IdentityJudgement` (index 7 in Solidity) to actually get `SudoOnly` behavior, and `AuthorMapping` (index 6) would fail to decode entirely since it doesn't exist in the runtime. ## Solution Updated the Solidity enum to match the runtime: ```solidity enum ProxyType { Any, NonTransfer, Governance, Staking, CancelProxy, Balances, IdentityJudgement, SudoOnly } ``` ## ⚠️ Breaking Changes ⚠️ - **`ProxyType.AuthorMapping` removed**: This variant never existed in the runtime and would fail to decode. - **`ProxyType.IdentityJudgement` index changed**: Moved from index 7 to index 6. Solidity code using `ProxyType.IdentityJudgement` will now work correctly (previously it mapped to `SudoOnly` in the runtime) - **`ProxyType.SudoOnly` added**: New variant at index 7 for proxies that can only execute Sudo pallet calls ## Test plan - [x] Proxy precompile tests pass (32/32) - [x] Mainnet runtime proxy tests pass (22/22) - [x] Governance proxy tests pass (6/6) - [x] Verified `InstanceFilter` implementation handles all 8 variants correctly - [x] Verified `EvmProxyCallFilter` implementation handles all 8 variants correctly Co-authored-by: Claude Opus 4.5 --- operator/precompiles/proxy/Proxy.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/operator/precompiles/proxy/Proxy.sol b/operator/precompiles/proxy/Proxy.sol index 821ae141..67dfe415 100644 --- a/operator/precompiles/proxy/Proxy.sol +++ b/operator/precompiles/proxy/Proxy.sol @@ -21,8 +21,8 @@ interface Proxy { Staking, CancelProxy, Balances, - AuthorMapping, - IdentityJudgement + IdentityJudgement, + SudoOnly } /// @dev Register a proxy account for the sender that is able to make calls on its behalf From abd8366d87955c04e2cb75ec73eb07c12d039995 Mon Sep 17 00:00:00 2001 From: Steve Degosserie <723552+stiiifff@users.noreply.github.com> Date: Tue, 27 Jan 2026 13:12:55 +0100 Subject: [PATCH 2/3] =?UTF-8?q?chore:=20=E2=99=BB=20=20Use=20latest=20Kurt?= =?UTF-8?q?osis=20release=20v1.15.2=20(#415)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use the latest v0.15.2 release of Kurtosis, that includes improved compatibility with rootless Podman (wrt. socket detection and bind mounting) following the merge of https://github.com/kurtosis-tech/kurtosis/pull/2803. Up to now, the e2e CI job was using a custom (patched) version of Kurtosis CLI, Engine & Core images. --- .github/workflows/task-e2e.yml | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/.github/workflows/task-e2e.yml b/.github/workflows/task-e2e.yml index b135f97b..694b0906 100644 --- a/.github/workflows/task-e2e.yml +++ b/.github/workflows/task-e2e.yml @@ -35,9 +35,9 @@ env: FOUNDRY_PROFILE: ci LOG_LEVEL: debug DOCKER_HOST: unix:///run/user/1020/podman/podman.sock - KURTOSIS_CORE_IMAGE: ghcr.io/stiiifff/kurtosis/kurtosis-core - KURTOSIS_ENGINE_IMAGE: ghcr.io/stiiifff/kurtosis/kurtosis-engine - KURTOSIS_VERSION: 1.11.1 + KURTOSIS_CORE_IMAGE: docker.io/kurtosistech/core + KURTOSIS_ENGINE_IMAGE: docker.io/kurtosistech/engine + KURTOSIS_VERSION: 1.15.2 INJECT_CONTRACTS: false jobs: @@ -67,17 +67,15 @@ jobs: - name: Install Kurtosis run: | # Install Kurtosis locally without sudo - # SHA256 checksum for patched kurtosis binary (stiiifff fork v1.11.99) - KURTOSIS_SHA256="5e88e98c1b255362268b4c385cdb6bbba7e82b333c4b2c05bc0bff7de0560b2a" + # SHA256 checksum for release kurtosis binary (v1.15.2) + KURTOSIS_SHA256="5da4731180f60021bbb1d313e1d2994b7d0fcdeae1a2f2081c620cf51a265463" if ! command -v kurtosis &> /dev/null; then echo "Installing Kurtosis $KURTOSIS_VERSION locally" mkdir -p ~/.local/bin - # wget -q -O kurtosis-cli.tar.gz "https://github.com/kurtosis-tech/kurtosis-cli-release-artifacts/releases/download/${KURTOSIS_VERSION}/kurtosis-cli_${KURTOSIS_VERSION}_linux_amd64.tar.gz" - # tar -xzf kurtosis-cli.tar.gz -C ~/.local/bin - # rm kurtosis-cli.tar.gz - # For now, we use a patched version of Kurtosis CLI & Engine that supports Podman properly - wget -q -O ~/.local/bin/kurtosis https://github.com/stiiifff/kurtosis/releases/download/1.11.99/kurtosis + wget -q -O kurtosis-cli.tar.gz "https://github.com/kurtosis-tech/kurtosis-cli-release-artifacts/releases/download/${KURTOSIS_VERSION}/kurtosis-cli_${KURTOSIS_VERSION}_linux_amd64.tar.gz" + tar -xzf kurtosis-cli.tar.gz -C ~/.local/bin + rm kurtosis-cli.tar.gz # Verify checksum before making executable echo "Verifying kurtosis checksum..." From 819cde5a02271b6382c9d697915d51330d573767 Mon Sep 17 00:00:00 2001 From: Ahmad Kaouk <56095276+ahmadkaouk@users.noreply.github.com> Date: Tue, 27 Jan 2026 15:14:11 +0100 Subject: [PATCH 3/3] chore: upgrade kurtosis eth package to v6.0.0 (#409) --- test/launcher/kurtosis.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/launcher/kurtosis.ts b/test/launcher/kurtosis.ts index ff4cd17c..8d8a70da 100644 --- a/test/launcher/kurtosis.ts +++ b/test/launcher/kurtosis.ts @@ -363,7 +363,7 @@ export const runKurtosisEnclave = async ( logger.info(`⚙️ Using Kurtosis config file: ${configFile}`); await runShellCommandWithLogger( - `kurtosis run github.com/ethpandaops/ethereum-package@6ae24741119d429704d41251f47a7d0e0893bc39 --args-file ${configFile} --enclave ${options.kurtosisEnclaveName}`, + `kurtosis run github.com/ethpandaops/ethereum-package@6.0.0 --args-file ${configFile} --enclave ${options.kurtosisEnclaveName}`, { logLevel: "debug" }