Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
bad8521
use execution status message for proof sync
frisitano Mar 7, 2026
1db3e8a
chore: fix clippy lint errors
nova-tau-assistant Mar 8, 2026
8eeff74
Trigger CI
nova-tau-assistant Mar 8, 2026
eaa1bce
Address PR feedback: remove fork check, rename ExecutionProofStatus f…
nova-tau-assistant Mar 8, 2026
01f434a
Test webhook notification
nova-tau-assistant Mar 8, 2026
79eb734
Remove webhook test file
nova-tau-assistant Mar 8, 2026
f27b0b2
Trigger CI for webhook test
nova-tau-assistant Mar 8, 2026
a2545ba
Test new telegram-bot framework webhook
nova-tau-assistant Mar 8, 2026
f7d5aaa
Test: CI trigger
nova-tau-assistant Mar 8, 2026
1a01e61
Trigger CI for webhook test
nova-tau-assistant Mar 8, 2026
c2920c3
Fix: cargo fmt formatting
nova-tau-assistant Mar 8, 2026
86bdaee
Fix: Remove unused import RpcRequestSendError
nova-tau-assistant Mar 8, 2026
377abff
Fix CI failures: cargo fmt, unused imports, dead code warnings
nova-tau-assistant Mar 8, 2026
efbf658
fix: resolve CI failures - formatting, deps, tests
nova-tau-assistant Mar 8, 2026
085d788
fix: resolve CI failures - clippy result_large_err fixes
nova-tau-assistant Mar 8, 2026
9d29e7e
fix: resolve all CI failures - comprehensive fix
nova-tau-assistant Mar 8, 2026
6044ae0
fix ci
frisitano Mar 9, 2026
7560721
fix: resolve remaining CI failures
frisitano Mar 10, 2026
bb30520
fix: address PR review comments and CI failures
frisitano Mar 10, 2026
7c4d57b
refactor: address PR review comments - proof sync architecture cleanup
frisitano Mar 10, 2026
65eda5e
small refactor
frisitano Mar 11, 2026
d842ef1
fix lint
frisitano Mar 11, 2026
9801bc9
fix lint
frisitano Mar 11, 2026
0bf1f1b
refactor
frisitano Mar 11, 2026
270388e
cargo fmt
frisitano Mar 11, 2026
a511ba9
ci fixes
frisitano Mar 13, 2026
bf9d7c2
increase genesis delays to fix CI timing failures
frisitano Mar 13, 2026
d3fae44
ci fixes
frisitano Mar 13, 2026
504ffa4
simulator: delay extra node join to END_EPOCH - 3
frisitano Mar 15, 2026
5394832
fix(simulator): remove Supernode custody from non-boot nodes and redu…
nova-tau-assistant Mar 16, 2026
3f60ae3
Merge pull request #5 from frisitano/feat/execution-status-ci-fix
frisitano Mar 16, 2026
355c8eb
Merge pull request #1 from frisitano/feat/execution-status
frisitano Mar 17, 2026
af38e14
proof engine persistence
nova-tau-assistant Mar 17, 2026
3303ede
refactor: proof engine persistence
frisitano Mar 17, 2026
5ece898
fix fmt and lint
frisitano Mar 17, 2026
73b5e29
refactor proof engine persistence load
frisitano Mar 17, 2026
0efb610
refactor proof engine persistence load
frisitano Mar 17, 2026
89cfe91
cargo fmt
frisitano Mar 17, 2026
c368e1b
Merge pull request #6 from frisitano/feat/production-proof-storage
frisitano Mar 17, 2026
78bbb5f
feat: validator proof resigning
nova-tau-assistant Mar 17, 2026
597687d
refactor api
nova-tau-assistant Mar 17, 2026
ba18da6
refactor
frisitano Mar 17, 2026
ecfbdee
clean up
frisitano Mar 17, 2026
0e1f562
deprecate SseBlockFull
frisitano Mar 17, 2026
9b26292
gossip behaviour
frisitano Mar 17, 2026
61116c3
gossip behaviour
frisitano Mar 17, 2026
29e2770
Merge pull request #7 from frisitano/feat/validator-resigning
frisitano Mar 17, 2026
292f0e1
Merge remote-tracking branch 'origin/feat/eip8025' into feat/proof-en…
nova-tau-assistant Mar 17, 2026
22e0b2f
refactor: introduce ProofNodeClient abstraction
nova-tau-assistant Mar 18, 2026
fceb121
refactor
frisitano Mar 18, 2026
f820b5d
refactor proof engine implementation
frisitano Mar 18, 2026
360cf57
clean up
frisitano Mar 18, 2026
4f2dbb2
lint
frisitano Mar 18, 2026
c7470d6
Merge pull request #8 from frisitano/feat/proof-engine-api-update
frisitano Mar 18, 2026
e8c393e
feat: add zstd compression to ProofEngine persistence
nova-tau-assistant Mar 19, 2026
3014880
feat: add proof engine zkboost integration test framework
nova-tau-assistant Mar 19, 2026
578d3c6
refactor: center ProofType encoding as the main compatibility boundary
nova-tau-assistant Mar 19, 2026
6911853
docs: attribute proof_types bug fix to zkboost integration harness
nova-tau-assistant Mar 19, 2026
452cadb
cargo fmt
frisitano Mar 19, 2026
4b22800
Merge pull request #9 from frisitano/feat/check-proof-storage-compres…
frisitano Mar 19, 2026
c79686a
refactor: replace mock zkboost server with upstream types
nova-tau-assistant Mar 19, 2026
39f0e59
test: validate ProofNodeClient against real zkboost server
nova-tau-assistant Mar 19, 2026
cbfcf23
clean up
frisitano Mar 19, 2026
59bc873
rebuild lock file
frisitano Mar 19, 2026
413b587
clean up
frisitano Mar 19, 2026
e15b5b4
Merge pull request #10 from frisitano/feat/proof-engine-zkboost-ingre…
frisitano Mar 19, 2026
a9202de
feat: add proof engine SSE monitor for proof completion loop
nova-tau-assistant Mar 19, 2026
751edc0
update msrc
frisitano Mar 19, 2026
9397dc0
Merge pull request #11 from frisitano/feat/proofservice-proof-complet…
frisitano Mar 19, 2026
975f777
Feat/fix zkboost GitHub workflow (#13)
frisitano Mar 19, 2026
c9777df
Feat/eip8025 kurtosis refactor minimal (#12)
frisitano Mar 20, 2026
3b27324
Feat/execution proof peer validator scoring (#14)
frisitano Mar 23, 2026
62ec9f4
feat: execution proof scoring improvements (#16)
frisitano Mar 23, 2026
26202ba
(fix) proof engine tests (#17)
frisitano Mar 24, 2026
190713b
feat: execution proof sync protocol hardening (#18)
frisitano Mar 25, 2026
aa0373a
integrate zkboost (#15)
frisitano Mar 25, 2026
3074529
Merge eth/feat/eip8025 into feat/eip8025
frisitano Mar 25, 2026
fd7ed0c
optimisations
frisitano Mar 25, 2026
41a64b2
Merge remote-tracking branch 'eth/feat/eip8025' into feat/eip8025
frisitano Mar 26, 2026
bf10cee
chore: repo hygeine sweep
frisitano Mar 26, 2026
d2c22f1
refactor: optimise test fixture api
frisitano Mar 26, 2026
32b6df8
feat: add kurtosis to github ci
frisitano Mar 26, 2026
239fb5f
chore: purge ci cache
frisitano Mar 26, 2026
d2a93e3
chore: purge ci cache - attempt 2
frisitano Mar 26, 2026
8acde6d
fix lints
frisitano Mar 26, 2026
63390b0
fix lints
frisitano Mar 26, 2026
046e2c2
chore: ci fix
frisitano Mar 26, 2026
c268fc5
chore: ci fix
frisitano Mar 27, 2026
f5f11b5
chore: cargo audit fixes
frisitano Mar 27, 2026
6f36679
chore: remove ci cache fix
frisitano Mar 27, 2026
74da971
chore: cargo audit fixes
frisitano Mar 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .cargo/audit.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,9 @@
# protobuf 2.28.0 (via prometheus 0.13.4) - crash due to uncontrolled recursion.
# Not exploitable in our context: protobuf is only used for Prometheus metrics
# serialization with trusted internal data, not for parsing untrusted input.
ignore = ["RUSTSEC-2024-0437"]
#
# rustls-webpki 0.102.x (via rustls 0.22 → tokio-rustls 0.25 → warp 0.3) - CRL matching bug.
# Not exploitable in our context: warp is used for the internal REST API and does not
# perform CRL-based certificate validation. Fixing requires upgrading warp to 0.4 which
# removed TLS as a built-in feature and requires significant rework.
ignore = ["RUSTSEC-2024-0437", "RUSTSEC-2026-0049"]
135 changes: 135 additions & 0 deletions .github/workflows/kurtosis-eip8025.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
# Test that the EIP-8025 Kurtosis testnet starts and the proof engine integrates
# correctly with real zkboost-server backends.
name: kurtosis eip8025

on:
push:
branches:
- unstable
pull_request:
merge_group:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
run-eip8025-testnet:
runs-on: ${{ github.repository == 'sigp/lighthouse' && 'warp-ubuntu-latest-x64-8x' || 'ubuntu-latest' }}
steps:
- uses: actions/checkout@v5

- name: Install Kurtosis
run: |
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
sudo apt update
sudo apt install -y kurtosis-cli
kurtosis analytics disable

- name: Install yq
run: |
sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
sudo chmod +x /usr/local/bin/yq

- name: Start EIP-8025 zkboost testnet
run: ./start_eip8025_zkboost_testnet.sh
working-directory: scripts/local_testnet

- name: Wait for chain liveness
run: |
BEACON_URL=$(kurtosis port print eip8025-zkboost cl-1-lighthouse-reth http)
echo "Polling $BEACON_URL for head slot > 10..."
for i in $(seq 1 20); do
SLOT=$(curl -sf "$BEACON_URL/eth/v1/beacon/headers/head" \
| jq -r '.data.header.message.slot' 2>/dev/null || echo 0)
echo " attempt $i: head slot = $SLOT"
if [ "$SLOT" -gt 10 ]; then
echo "Chain is live at slot $SLOT"
break
fi
if [ "$i" -eq 20 ]; then
echo "Timed out waiting for head slot > 10"
exit 1
fi
sleep 30
done

- name: Inspect beacon node state
run: |
set -euo pipefail
ENCLAVE=eip8025-zkboost
SERVICES=(cl-1-lighthouse-reth cl-2-lighthouse-reth cl-3-lighthouse-reth cl-4-lighthouse-reth)
FAILED=0

for SVC in "${SERVICES[@]}"; do
URL=$(kurtosis port print "$ENCLAVE" "$SVC" http)
echo "=== $SVC ($URL) ==="

# Syncing status — must not be syncing
SYNCING=$(curl -sf "$URL/eth/v1/node/syncing" | jq -r '.data.is_syncing')
echo " is_syncing: $SYNCING"
if [ "$SYNCING" != "false" ]; then
echo " FAIL: $SVC is still syncing"
FAILED=1
fi

# Peer count — must have at least one connected peer
PEERS=$(curl -sf "$URL/eth/v1/node/peer_count" | jq -r '.data.connected')
echo " connected peers: $PEERS"
if [ "${PEERS:-0}" -lt 1 ]; then
echo " FAIL: $SVC has no connected peers"
FAILED=1
fi

# Head slot — must be non-zero
SLOT=$(curl -sf "$URL/eth/v1/beacon/headers/head" | jq -r '.data.header.message.slot')
echo " head slot: $SLOT"
if [ "${SLOT:-0}" -lt 1 ]; then
echo " FAIL: $SVC head slot is 0"
FAILED=1
fi

# Finality checkpoints — informational, log the finalized epoch
FINALIZED=$(curl -sf "$URL/eth/v1/beacon/states/head/finality_checkpoints" \
| jq -r '.data.finalized.epoch')
echo " finalized epoch: $FINALIZED"
done

exit "$FAILED"

- name: Check zkboost sidecars are running and generating proofs
run: |
ENCLAVE=eip8025-zkboost

# Both zkboost services must be in RUNNING state
kurtosis enclave inspect "$ENCLAVE" | grep -E "zkboost-[12].*RUNNING" \
|| { echo "FAIL: one or more zkboost services not in RUNNING state"; exit 1; }

# Each zkboost sidecar must have generated at least one proof
for SVC in zkboost-1 zkboost-2; do
COUNT=$(kurtosis service logs "$ENCLAVE" "$SVC" 2>/dev/null | grep -c "proof generated" || true)
echo "$SVC: $COUNT proofs generated"
if [ "${COUNT:-0}" -lt 1 ]; then
echo "FAIL: $SVC has not generated any proofs"
exit 1
fi
done

- name: Stop testnet and collect logs
if: always()
run: |
mkdir -p scripts/local_testnet/logs
ENCLAVE=eip8025-zkboost
for SVC in cl-1-lighthouse-reth cl-2-lighthouse-reth cl-3-lighthouse-reth cl-4-lighthouse-reth \
zkboost-1 zkboost-2; do
kurtosis service logs "$ENCLAVE" "$SVC" > "scripts/local_testnet/logs/${SVC}.log" 2>&1 || true
done
kurtosis enclave rm -f "$ENCLAVE" || true

- name: Upload logs artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: logs-kurtosis-eip8025
path: scripts/local_testnet/logs
retention-days: 3
Loading
Loading