Commit Graph

142 Commits

Author SHA1 Message Date
Eitan Seri-Levi
3ecf964385 Replace INTERVALS_PER_SLOT with explicit slot component times (#7944)
https://github.com/ethereum/consensus-specs/pull/4476


  


Co-Authored-By: Barnabas Busa <barnabas.busa@ethereum.org>

Co-Authored-By: Eitan Seri- Levi <eserilev@gmail.com>

Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>

Co-Authored-By: Michael Sproul <michaelsproul@users.noreply.github.com>

Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-02-02 05:58:42 +00:00
Eitan Seri-Levi
d9ddb72f5b Fix testnet script (#8557)
Fix an issue where a kurtosis testnet script was failing because no supernodes were provided


```
There was an error interpreting Starlark code
Evaluation error: fail: Fulu fork is enabled (epoch: 0) but no supernodes are configured, no nodes have 128 or more validators, and perfect_peerdas_enabled is not enabled. Either configure a supernode, ensure at least one node has 128+ validators, or enable perfect_peerdas_enabled in network_params with 16 participants.
at [github.com/ethpandaops/ethereum-package/main.star:83:57]: run
at [github.com/ethpandaops/ethereum-package/src/package_io/input_parser.star:377:17]: input_parser
at [0:0]: fail
```


  


Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>

Co-Authored-By: Pawan Dhananjay <pawandhananjay@gmail.com>
2025-12-11 06:56:51 +00:00
Jimmy Chen
f42b14ac58 Update local testnet scripts for the fulu fork (#8489)
* Remove `fulu-devnet-3` testing on CI
* Delete `scripts/local_testnet/network_params_das.yaml` and consolidate it into the main `network_params.yaml` file we use on CI
* Delete enclave before building image, so it doesn't cause slow image building.


  


Co-Authored-By: Jimmy Chen <jchen.tc@gmail.com>
2025-12-01 22:09:08 +00:00
Mac L
2c9b670f5d Rework lighthouse_version to reduce spurious recompilation (#8336)
#8311


  Removes the `git_version` crate from `lighthouse_version` and implements git `HEAD` tracking manually.
This removes the (mostly) broken dirty tracking but prevents spurious recompilation of the `lighthouse_version` crate.

This also reworks the way crate versions are handled by utilizing workspace version inheritance and Cargo environment variables.
This means the _only_ place where Lighthouse's version is defined is in the top level `Cargo.toml` for the workspace. All relevant binaries then inherit this version. This largely makes the  `change_version.sh` script useless so I've removed it, although we could keep a version which just alters the workspace version (if we need to maintain compatibility with certain build/release tooling.

### When is a Rebuild Triggered?

1. When the build.rs file is changed.
2. When the HEAD commit changes (added, removed, rebased, etc)
3. When the branch changes (this includes changing to the current branch, and creating a detached HEAD)

Note that working/staged changes will not trigger a recompile of `lighthouse_version`.


Co-Authored-By: Mac L <mjladson@pm.me>

Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2025-11-03 02:46:31 +00:00
Eitan Seri-Levi
33e21634cb Custody backfill sync (#7907)
#7603


  #### Custody backfill sync service
Similar in many ways to the current backfill service. There may be ways to unify the two services. The difficulty there is that the current backfill service tightly couples blocks and their associated blobs/data columns. Any attempts to unify the two services should be left to a separate PR in my opinion.

#### `SyncNeworkContext`
`SyncNetworkContext` manages custody sync data columns by range requests separetly from other sync RPC requests. I think this is a nice separation considering that custody backfill is its own service.

#### Data column import logic
The import logic verifies KZG committments and that the data columns block root matches the block root in the nodes store before importing columns

#### New channel to send messages to `SyncManager`
Now external services can communicate with the `SyncManager`. In this PR this channel is used to trigger a custody sync. Alternatively we may be able to use the existing `mpsc` channel that the `SyncNetworkContext` uses to communicate with the `SyncManager`. I will spend some time reviewing this.


Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>

Co-Authored-By: Eitan Seri- Levi <eserilev@gmail.com>

Co-Authored-By: dapplion <35266934+dapplion@users.noreply.github.com>
2025-10-22 03:51:34 +00:00
Eitan Seri-Levi
7a7fe9663c Reduce TARGET_BACKFILL_SLOTS in checkpoint sync test (#8102)
Co-Authored-By: Eitan Seri- Levi <eserilev@gmail.com>
2025-09-23 04:37:33 +00:00
Jimmy Chen
92f60b8fd2 Add release helper script to list PRs and breaking changes (#7737)
Output for 7.1.0 release:

```
#   Commit SHA    PR Number    Has backwards-incompat Label    PR Title
---  ------------  -----------  ------------------------------  --------------------------------------------
1    d5a03c9d86  6872         False                           Add more range sync tests (#6872)
2    ec2fe3812e  -            -                               [NO PR MATCH]: Merge remote-tracking branch 'origin/release-v7.0.0-beta.0' into unstable
3    3992d6ba74  6862         False                           Fix misc PeerDAS todos (#6862)
4    d60388134d  6928         False                           Add PeerDAS metrics to track subnets without peers (#6928)
5    431dd7c398  6917         False                           Remove un-used batch sync error condition (#6917)
6    0055af56b6  6932         False                           Unsubscribe blob topics at Fulu fork (#6932)
7    6ab6eae40c  -            -                               [NO PR MATCH]: Merge remote-tracking branch 'origin/release-v7.0.0-beta.0' into unstable
8    193061ff73  6634         False                           Use RpcSend on RPC::self_limiter::ready_requests (#6634)
9    e5e43ecd81  -            -                               [NO PR MATCH]: Merge remote-tracking branch 'origin/release-v7.0.0' into unstable
10   b4be514182  7012         False                           Add spamoor_blob in network_params.yaml (#7012)
11   01df433dfd  7021         False                           update codeowners, to be more specific (#7021)
12   60964fc7b5  6829         False                           Expose blst internals (#6829)
13   3fab6a2c0b  6866         False                           Block availability data enum (#6866)
14   6e11bddd4b  6947         False                           feat: adds CLI flags to delay publishing for edge case testing on PeerDAS devnets (#6947)
15   454c7d05c4  7017         False                           Remove LC server config from HTTP API (#7017)
16   54b4150a62  7030         False                           Add test flag to override `SYNC_TOLERANCE_EPOCHS` for range sync testing (#7030)
17   cf4104abe5  -            -                               [NO PR MATCH]: Merge remote-tracking branch 'origin/release-v7.0.0' into unstable
18   8a772520a5  7034         False                           Cache validator registration only after successful publish (#7034)
19   1235d44802  7048         False                           Remove `watch` (#7048)
20   3bc5f1f2a5  7081         False                           Validator Registration ssz support (#7081)
21   b4e79edf2a  -            -                               [NO PR MATCH]: Merge remote-tracking branch 'origin/release-v7.0.0' into unstable
22   8d1abce26e  6915         False                           Bump SSZ version for larger bitfield `SmallVec` (#6915)
23   1916a2ac5a  7020         False                           chore: update to rust-eth-kzg to 0.5.4 (#7020)
24   1a08e6f0a0  7109         False                           Remove duplicate sync_tolerance_epochs config (#7109)
25   f23f984f85  7057         False                           switch to upstream gossipsub (#7057)
26   d60c24ef1c  6339         True                            Integrate tracing (#6339)
27   a6bdc474db  6991         False                           Log range sync download errors (#6991)
28   574b204bdb  6680         False                           decouple `eth2` from `store` and `lighthouse_network` (#6680)
29   c095a0a58f  7130         False                           update gossipsub to the latest upstream revision (#7130)
30   5cda1641ea  7137         False                           Log `file appender` initialization errors properly (#7137)
31   d96123b028  7149         False                           Remove unnecessary `filter_layer` in logger builder (#7149)
32   a1b1d7ae58  7150         False                           Remove `discv5` logs from logfile output (#7150)
33   ca237652f1  6998         False                           Track request IDs in RangeBlockComponentsRequest (#6998)
34   d323699fde  7183         False                           Add missing `osaka-time` lcli param (#7183)
35   cbf1c04a14  -            -                               [NO PR MATCH]: resolve merge conflicts between untstable and release-v7.0.0
36   2f37bf4de5  -            -                               [NO PR MATCH]: Fix more merge conflicts between unstable and release-v7.0.0
37   3f6c11db0e  6995         False                           Some updates to Lighthouse book (#6995)
38   9dce729cb6  7182         False                           Ensure sqlite and rusqlite are optional in `consensus/types` (#7182)
39   6f31d44343  7033         False                           Remove CGC from data_availability checker (#7033)
40   ca8eaea116  7169         True                            Remove `crit` as an option from the CLI entirely (#7169)
41   bde0f1ef0b  -            -                               [NO PR MATCH]: Merge remote-tracking branch 'origin/release-v7.0.0' into unstable
42   fb7ec0d151  7112         False                           Change `genesis-state-url-timeout` (#7112)
43   4839ed620f  7168         False                           Tracing cleanup (#7168)
44   578db67755  -            -                               [NO PR MATCH]: Merge remote-tracking branch 'origin/release-v7.0.0' into backmerge-apr-2
45   80626e58d2  7244         False                           Attempt to fix flaky network tests (#7244)
46   d6cd049a45  7238         False                           RPC RequestId Cleanup (#7238)
47   0e6da0fcaf  -            -                               [NO PR MATCH]: Merge branch 'release-v7.0.0' into v7-backmerge
48   57abffcd99  7240         False                           Disable log color when running in non-interactive mode (#7240)
49   6a75f24ab1  7188         False                           Fix the `getBlobs` metric and ensure it is recorded promptly to prevent miscounts (#7188)
50   7cc64cab83  6990         False                           Add missing error log and remove redundant id field from lookup logs (#6990)
51   591fb7df14  -            -                               [NO PR MATCH]: Merge branch 'release-v7.0.0' into backmerge-for-openssl
52   e77fb01a06  7265         False                           Remove CLI conflict for secrets-dir and datadir (#7265)
53   b5d40e3db0  7256         False                           Align logs (#7256)
54   70850fe58d  6744         True                            Drop head tracker for summaries DAG (#6744)
55   47a85cd118  7269         False                           Bump version to v7.1.0-beta.0 (not a release) (#7269)
56   e924264e17  7258         False                           Fullnodes to publish data columns from EL `getBlobs` (#7258)
57   759b0612b3  7117         False                           Offloading KZG Proof Computation from the beacon node (#7117)
58   d96b73152e  7192         False                           Fix for #6296: Deterministic RNG in peer DAS publish block tests (#7192)
59   39eb8145f8  -            -                               [NO PR MATCH]: Merge branch 'release-v7.0.0' into unstable
60   70f8ab9a6f  7309         False                           Add riscv64 build support (#7309)
61   be68dd24d0  7281         False                           Fix wrong custody column count for lookup blocks (#7281)
62   08882c64ca  6996         False                           Fix execution engine integration tests with latest geth version (#6996)
63   476f3a593c  7161         False                           Add `MAX_BLOBS_PER_BLOCK_FULU` config (#7161)
64   c32569ab83  7225         False                           Restore HTTP API logging and add more metrics (#7225)
65   410af7c5f5  7279         False                           feat: update mainnet bootnodes (#7279)
66   80fe133d2c  7280         False                           Update Lighthouse Book for Electra features (#7280)
67   9f4b0cdc28  7343         False                           Fix Kurtosis doppelganger CI (#7343)
68   e61e92b926  -            -                               [NO PR MATCH]: Merge remote-tracking branch 'origin/stable' into unstable
69   5527125f5e  7340         False                           Fix GitHub releases page looks bad in GitHub dark theme (#7340)
70   c13e069c9c  7324         False                           Revise logging when `queue is full` (#7324)
71   1dd37048b9  7346         False                           Enable cross-compiling for riscv64 architecture (#7346)
72   402a81cdd7  7350         False                           Fix Kurtosis testnet (#7350)
73   1324d3d3c4  5923         False                           Delayed RPC Send Using Tokens (#5923)
74   6fad18644b  6747         False                           feat: presign for validator account (#6747)
75   2e2b0d2176  7351         False                           Revise consolidation info in Lighthouse book (#7351)
76   63a10eaaea  6956         True                            Changing `boot_enr.yaml` to expect `bootstap_nodes.yaml` for pectra devnet  (#6956)
77   34a6c3a930  6897         True                            vc: increase default gas limit (#6897)
78   94ccd7608e  6653         False                           Add documentation for VC API `/lighthouse/beacon/health` (#6653)
79   9779b4ba2c  7326         False                           Optimize `validate_data_columns` (#7326)
80   93ec9df137  7304         False                           Compute proposer shuffling only once in gossip verification (#7304)
81   2aa5d5c25e  7359         False                           Make sure to log SyncingChain ID (#7359)
82   c8224c8d5e  7387         False                           docs: fix broken link to voluntary exit guide (#7387)
83   43c38a6fa0  7378         False                           Change slog to tracing in comments (#7378)
84   beb0ce68bd  6922         False                           Make range sync peer loadbalancing PeerDAS-friendly (#6922)
85   3d92e3663b  6705         False                           Modularize validator store (#6705)
86   058dae0641  7405         False                           Add requires --http when using vc subcommands --http-port (#7405)
87   0f13029c7d  7409         False                           Don't publish data columns reconstructed from RPC columns to the gossip network (#7409)
88   8dc3d23af0  7400         False                           Add a default timeout to all `BeaconNodeHttpClient` requests (#7400)
89   e90fcbe657  7416         False                           Add ARM binary for macOS in release (#7416)
90   4b9c16fc71  7199         False                           Add Electra forks to basic sim tests (#7199)
91   a497ec601c  6975         False                           Retry custody requests after peer metadata updates (#6975)
92   e0c1f27e13  7394         False                           simulator: Persist beacon logs (#7394)
93   92391cdac6  7284         False                           update gossipsub to the latest upstream revision (#7284)
94   593390162f  7399         False                           `peerdas-devnet-7`: update `DataColumnSidecarsByRoot` request to use `DataColumnsByRootIdentifier` (#7399)
95   5b25a48af3  7404         False                           Siren installation improvement (#7404)
96   e051c7ca89  7396         False                           Siren Pectra Feature Updates (#7396)
97   0a917989b2  7370         False                           impl test random for some types (#7370)
98   807848bc7a  7443         False                           Next sync committee branch bug (#7443)
99   851ee2bced  7454         False                           Extract get_domain for VoluntaryExit (#7454)
100  c2c7fb87a8  7460         False                           Make DAG construction more permissive (#7460)
101  b1138c28fb  7451         False                           Add additional mergify rules to automate triaging (#7451)
102  cc6ae9d3f0  7463         False                           Fix mergify infinite loop. (#7463)
103  1853d836b7  7458         False                           Added E::slots_per_epoch() to deneb time calculation (#7458)
104  c4182e362b  7433         False                           simulator: Write dependency logs to separate files (#7433)
105  e0ee148d6a  7470         False                           Prevent mergify from updating labels while CI is still running. (#7470)
106  e21198c08b  7472         False                           One more attempt to fix mergify condition. (#7472)
107  268809a530  7471         False                           Rust clippy 1.87 lint fixes (#7471)
108  b051a5d6cc  7469         False                           Delete `at-most` in `lighthouse vm create` (#7469)
109  1d27855db7  7369         False                           impl from hash256 for `ExecutionBlockHash` (#7369)
110  23ad833747  7417         False                           Change default EngineState to online (#7417)
111  fcfcbf9a11  7481         False                           Update mdlint to disable descriptive-link-text (#7481)
112  7684d1f866  7372         False                           ContextDeserialize and Beacon API Improvements (#7372)
113  5393d33af8  7411         False                           Silence `Uninitialized` warn log on start-up (#7411)
114  1e6cdeb88a  6799         False                           feat: Add docker reproducible builds (#6799)
115  50dbfdf612  7455         False                           Some updates to Lighthouse book (#7455)
116  af87135e30  7484         False                           Move MD059 rule to configuration file (#7484)
117  805c2dc831  5047         False                           Correct reward denominator in op pool (#5047)
118  7e2df6b602  7474         False                           Empty list `[]` to return all validators balances (#7474)
119  f06d1d0346  7495         False                           Fix blob download from checkpointz servers (#7495)
120  0688932de2  7497         False                           Pass blobs into `ValidatorStore::sign_block` (#7497)
121  e29b607257  7427         False                           Move notifier and latency service to `validator_services` (#7427)
122  7759cb8f91  7494         False                           Update mergify rule to not evaluate PRs that are not ready for review - to reduce noise and avoid updating stale PRs. (#7494)
123  2e96e9769b  7507         False                           Use slice.is_sorted now that it's stable (#7507)
124  a8035d7395  7506         False                           Enable stdout logging in rpc_tests (#7506)
125  817f14c349  7500         False                           Send execution_requests in fulu (#7500)
126  537fc5bde8  7459         False                           Revive network-test logs files in CI (#7459)
127  cf0f959855  7180         False                           Improve log readability during rpc_tests (#7180)
128  ce8d0814ad  7246         False                           Ensure logfile permissions are maintained after rotation (#7246)
129  6af8c187e0  7052         False                           Publish EL Info in Metrics (#7052)
130  a2797d4bbd  7512         False                           Fix formatting errors from cargo-sort (#7512)
131  f01dc556d1  7505         False                           Update `engine_getBlobsV2` response type and add `getBlobsV2` tests (#7505)
132  e6ef644db4  7493         False                           Verify `getBlobsV2` response and avoid reprocessing imported data columns (#7493)
133  7c89b970af  7382         False                           Handle attestation validation errors (#7382)
134  8dde5bdb44  -            -                               [NO PR MATCH]: Update mergify rules so that I can add `waiting-on-author` on a PR that's passing CI. Remove noisy comments.
135  8989ef8fb1  7025         False                           Enable arithmetic lint in rate-limiter (#7025)
136  b7fc03437b  -            -                               [NO PR MATCH]: Fix condition
137  9e9c51be6f  -            -                               [NO PR MATCH]: Remove redundant `and`
138  999b04517e  -            -                               [NO PR MATCH]: Merge pull request #7525 from jimmygchen/mergify-again
139  0ddf9a99d6  7332         False                           Remove support for database migrations prior to schema version v22 (#7332)
140  5cda6a6f9e  7522         False                           Mitigate flakiness in test_delayed_rpc_response (#7522)
141  4d21846aba  7533         False                           Prevent `AvailabilityCheckError` when there's no new custody columns to import (#7533)
142  39744df93f  7393         False                           simulator: Fix `Failed to initialize dependency logging` (#7393)
143  38a5f338fa  7529         False                           Add `console-subscriber` feature for debugging (#7529)
144  886ceb7e25  6882         False                           Run Assertoor tests in CI (#6882)
145  94a1446ac9  7541         False                           Fix unexpected blob error and duplicate import in fetch blobs (#7541)
146  ae30480926  7521         False                           Implement EIP-7892 BPO hardforks (#7521)
147  f67068e1ec  7518         False                           Update `staking-deposit-cli` to `ethstaker-deposit-cli` (#7518)
148  cd83d8d95d  7544         False                           Add a name to the Tokio task (#7544)
149  357a8ccbb9  7549         False                           Checkpoint sync without the blobs from Fulu (#7549)
150  2d9fc34d43  7540         False                           Fulu EF tests v1.6.0-alpha.0 (#7540)
151  dcee76c0dc  7548         False                           Update key generation in validator manager (#7548)
152  9a4972053e  7530         False                           Add e2e sync tests to CI (#7530)
153  d457ceeaaf  7118         False                           Don't create child lookup if parent is faulty (#7118)
154  2f807e21be  7538         False                           Add support for nightly tests (#7538)
155  e098f66738  7570         False                           Update kurtosis config and EL images (#7570)
156  b2e8b67e34  7566         False                           Reduce number of basic sim test nodes from 7 to 4 (#7566)
157  170cd0f587  7579         False                           Store the libp2p/discv5 logs when stopping local-testnet (#7579)
158  b08d49c4cb  7559         False                           Changes for `fusaka-devnet-1` (#7559)
159  8c6abc0b69  7574         False                           Optimise parallelism in compute cells operations by zipping first (#7574)
160  7416d06dce  7561         False                           Add genesis sync test to CI (#7561)
161  076a1c3fae  7587         False                           Data column sidecar event (#7587)
162  5f208bb858  7578         True                            Implement basic validator custody framework (no backfill) (#7578)
163  9803d69d80  7590         False                           Implement status v2 version (#7590)
164  5472cb8500  7582         False                           Batch verify KZG proofs for getBlobsV2 (#7582)
165  a65f78222d  7594         False                           Drop stale registrations without reducing CGC (#7594)
166  ccd99c138c  7588         False                           Wait before column reconstruction (#7588)
167  dc5f5af3eb  7595         False                           Fix flaky test_rpc_block_reprocessing (#7595)
168  4fc0665ccd  7592         False                           Add more context to Late Block Re-orgs (#7592)
169  6135f417a2  7591         False                           Add data columns sidecars debug beacon API (#7591)
170  3d2d65bf8d  7593         False                           Advertise `--advertise-false-custody-group-count` for testing PeerDAS (#7593)
171  6786b9d12a  7444         True                            Single attestation "Full" implementation (#7444)
172  dd98534158  6750         True                            Hierarchical state diffs in hot DB (#6750)
173  f67084a571  7437         False                           Remove reprocess channel (#7437)
174  d50924677a  7620         False                           Remove instrumenting log level (#7620)
175  11bcccb353  7133         True                            Remove all prod eth1 related code (#7133)
176  e34a9a0c65  6551         False                           Allow the `--beacon-nodes` list to be updated at runtime (#6551)
177  3fefda68e5  7611         False                           Send byrange responses in the correct requested range (#7611)
178  cef04ee2ee  7462         False                           Implement `validator_identities` Beacon API endpoint (#7462)
179  fd643c310c  7632         False                           Un-ignore EF test for v1.6.0-alpha.1 (#7632)
180  56b2d4b525  7636         False                           Remove instrumenting log level  (#7636)
181  8e3c5d1524  7644         False                           Rust 1.89 compiler lint fix (#7644)
182  a0a6b9300f  7551         False                           Do not compute sync selection proofs for the sync duty at the current slot (#7551)
183  9b1f3ed9d1  7652         False                           Add gossip check (#7652)
184  83cad25d98  7657         False                           Fix Rust 1.88 clippy errors & execution engine tests (#7657)
185  522e00f48d  7656         False                           Fix incorrect `waker` update condition (#7656)
186  6ea5f14b39  7597         False                           feat: better error message for light_client/bootstrap endpoint (#7597)
187  2d759f78be  6576         False                           Fix beacon_chain metrics descriptions (#6576)
188  6be646ca11  7666         True                            Bump DB schema to v25 (#7666)
189  e45ba846ae  7673         False                           Increase http client default timeout to 2s in `http-api` tests. (#7673)
190  25ea8a83b7  7667         False                           Add Michael as codeowner for store crate (#7667)
191  c1f94d9b7b  7669         False                           Test database schema stability (#7669)
192  257d270718  6612         False                           Add voluntary exit via validator manager (#6612)
193  e305cb1b92  7661         True                            Custody persist fix (#7661)
194  41742ce2bd  7683         False                           Update `SAMPLES_PER_SLOT` to be number of custody groups instead of data columns (#7683)
195  69c9c7038a  7681         False                           Use prepare_beacon_proposer endpoint for validator custody registration (#7681)
196  fcc602a787  7646         False                           Update fulu network configs and add `MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS` (#7646)
197  a459a9af98  7689         False                           Fix and test checkpoint sync from genesis (#7689)
198  b35854b71f  7692         False                           Record v2 beacon blocks http api metrics separately (#7692)
199  c7bb3b00e4  7693         False                           Fix lookups of the block at `oldest_block_slot` (#7693)
200  0f895f3066  7695         False                           Bump default gas limit (#7695)
201  56485cc986  7707         False                           Remove unneeded spans that caused debug logs to appear when level is set to `info` (#7707)
202  bd8a2a8ffb  7023         False                           Gossip recently computed light client data (#7023)
203  7b2f138ca7  -            -                               [NO PR MATCH]: Merge remote-tracking branch 'origin/stable' into release-v7.1.0
204  8e55684b06  7723         False                           Reintroduce `--logfile` with deprecation warning (#7723)
205  8b5ccacac9  7663         False                           Error from RPC `send_response` when request doesn't exist on the active inbound requests (#7663)
206  cfb1f73310  7609         False                           Release v7.1.0 (#7609)
```


  


Co-Authored-By: Jimmy Chen <jchen.tc@gmail.com>
2025-09-18 06:13:27 +00:00
Jimmy Chen
746da7ffd5 Fix doppelganger protection script (#7959)
Previously `kurtosis service inspect` gives us output like this - flags in separate lines

```
CMD:
lighthouse
beacon_node
--debug-level=debug
--datadir=/data/lighthouse/beacon-data
--listen-address=0.0.0.0
--port=9000
--http
--http-address=0.0.0.0
--http-port=4000
--disable-packet-filter
--execution-endpoints=http://172.16.0.8:8551
--jwt-secrets=/jwt/jwtsecret
--suggested-fee-recipient=0x8943545177806ED17B9F23F0a21ee5948eCaa776
--disable-enr-auto-update
--enr-address=172.16.0.11
```

In the latest version this has been updated to a single line

```
CMD:
exec lighthouse beacon_node --debug-level=debug --datadir=/data/lighthouse/beacon-data --listen-address=0.0.0.0 --port=9000 --http --http-address=0.0.0.0 --http-port=4000 --disable-packet-filter --execution-endpoints=http://172.16.0.12:8551 --jwt-secrets=/jwt/jwtsecret --suggested-fee-recipient=0x8943545177806ED17B9F23F0a21ee5948eCaa776 --disable-enr-auto-update --enr-address=172.16.0.18 --enr-tcp-port=9000 --enr-udp-port=9000 --enr-quic-port=9001 --quic-port=9001 --metrics --metrics-address=0.0.0.0 --metrics-allow-origin=* --metrics-port=5054 --enable-private-discovery --testnet-dir=/network-configs --boot-nodes=enr:-N24QPYP7bj0aqoM2dXsP5hnosW27U6PTYJt1kYFhNkwIvlFQhGJ1om7f4zcHhVJwvUL7wCsVbDJbP_l-TF8X3q4pVEDh2F0dG5ldHOIAAAwAAAAAACGY2xpZW500YpMaWdodGhvdXNlhTcuMS4whGV0aDKQqFs_bWAAADj__________4JpZIJ2NIJpcISsEAAPhHF1aWOCIymJc2VjcDI1NmsxoQK_z4HQylgsOal74Jek9D_EhY0vcDX5AcLHnPD7iOeEdYhzeW5jbmV0cwCDdGNwgiMog3VkcIIjKA --target-peers=3
```

and it broke our script. This PR update the extraction logic.
2025-08-28 02:48:43 +00:00
Jimmy Chen
f6859b1137 Add tempo to local testnet config and update fulu kurtosis config files (#7898)
This PR adds tempo to kurtosis config and will collect lighthouse traces on kurtosis local testnet. The traces can be viewed / queried from Grafana.

Also updated fulu kurtosis configs to use latest geth image.
2025-08-20 02:30:11 +00:00
Jimmy Chen
aa8cba3741 Upgrade rust-eth-kzg to 0.8.0 (#7870)
#7864

The main breaking change in v0.8.0 is the `TrustedSetup` initialisation - it now requires a json string via `PeerDASTrustedSetup::from_json`.
2025-08-18 02:52:39 +00:00
Pawan Dhananjay
80ba0b169b Backfill peer attribution (#7762)
Partly addresses https://github.com/sigp/lighthouse/issues/7744


  Implement similar peer sync attribution like in #7733 for backfill sync.
2025-08-12 02:11:56 +00:00
Pawan Dhananjay
90ff64381e Sync peer attribution (#7733)
Which issue # does this PR address?

Closes #7604


  Improvements to range sync including:

1. Contain column requests only to peers that are part of the SyncingChain
2. Attribute the fault to the correct peer and downscore them if they don't return the data columns for the request
3. Improve sync performance by retrying only the failed columns from other peers instead of failing the entire batch
4. Uses the earliest_available_slot to make requests to peers that claim to have the epoch. Note: if no earliest_available_slot info is available, fallback to using previous logic i.e. assume peer has everything backfilled upto WS checkpoint/da boundary

Tested this on fusaka-devnet-2 with a full node and supernode and the recovering logic seems to works well.
Also tested this a little on mainnet.

Need to do more testing and possibly add some unit tests.
2025-07-12 00:02:30 +00:00
ethDreamer
b43e0b446c Final changes for fusaka-devnet-2 (#7655)
Closes #7467.

This PR primarily addresses [the P2P changes](https://github.com/ethereum/EIPs/pull/9840) in [fusaka-devnet-2](https://fusaka-devnet-2.ethpandaops.io/). Specifically:

* [the new `nfd` parameter added to the `ENR`](https://github.com/ethereum/EIPs/pull/9840)
* [the modified `compute_fork_digest()` changes for every BPO fork](https://github.com/ethereum/EIPs/pull/9840)

90% of this PR was absolutely hacked together as fast as possible during the Berlinterop as fast as I could while running between Glamsterdam debates. Luckily, it seems to work. But I was unable to be as careful in avoiding bugs as I usually am. I've cleaned up the things *I remember* wanting to come back and have a closer look at. But still working on this.

Progress:
* [x] get it working on `fusaka-devnet-2`
* [ ] [*optional* disconnect from peers with incorrect `nfd` at the fork boundary](https://github.com/ethereum/consensus-specs/pull/4407) - Can be addressed in a future PR if necessary
* [x] first pass clean-up
* [x] fix up all the broken tests
* [x] final self-review
* [x] more thorough review from people more familiar with affected code
2025-07-10 21:32:58 +00:00
Pawan Dhananjay
5f208bb858 Implement basic validator custody framework (no backfill) (#7578)
Resolves #6767


  This PR implements a basic version of validator custody.
- It introduces a new `CustodyContext` object which contains info regarding number of validators attached to a node and  the custody count they contribute to the cgc.
- The `CustodyContext` is added in the da_checker and has methods for returning the current cgc and the number of columns to sample at head. Note that the logic for returning the cgc existed previously in the network globals.
- To estimate the number of validators attached, we use the `beacon_committee_subscriptions` endpoint. This might overestimate the number of validators actually publishing attestations from the node in the case of multi BN setups. We could also potentially use the `publish_attestations` endpoint to get a more conservative estimate at a later point.
- Anytime there's a change in the `custody_group_count` due to addition/removal of validators, the custody context should send an event on a broadcast channnel. The only subscriber for the channel exists in the network service which simply subscribes to more subnets. There can be additional subscribers in sync that will start a backfill once the cgc changes.

TODO

- [ ] **NOT REQUIRED:** Currently, the logic only handles an increase in validator count and does not handle a decrease. We should ideally unsubscribe from subnets when the cgc has decreased.
- [ ] **NOT REQUIRED:** Add a service in the `CustodyContext` that emits an event once `MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS ` passes after updating the current cgc. This event should be picked up by a subscriber which updates the enr and metadata.
- [x] Add more tests
2025-06-11 18:10:06 +00:00
chonghe
7416d06dce Add genesis sync test to CI (#7561)
* #7550

Use existing code from  @jimmygchen in #7530 and modify for genesis sync test. Thanks @jimmygchen !
2025-06-11 09:51:37 +00:00
Akihito Nakano
170cd0f587 Store the libp2p/discv5 logs when stopping local-testnet (#7579)
The libp2p/discv5 logs are not stored when stopping local-testnet.


  Store the `beacon/logs` directory to [Kurtosis Files Artifacts](https://docs.kurtosis.com/advanced-concepts/files-artifacts/) so that they are downloaded locally by `kurtosis enclave dump`.
2025-06-08 03:21:41 +00:00
Jimmy Chen
e098f66738 Update kurtosis config and EL images (#7570)
Update kurtosis config to start from electra genesis.

https://github.com/sigp/lighthouse/issues/6826#issuecomment-2900375344
2025-06-05 16:20:33 +00:00
Jimmy Chen
9a4972053e Add e2e sync tests to CI (#7530)
This PR adds the following sync tests to CI workflow - triggered when a PR is labeled `syncing` - to ensure we have some e2e coverage on basic sync scenarios:
- [x] checkpoint sync to a live network (covers range and backfill sync for _current_ fork)
- [x] checkpoint sync to a running devnet (covers range and backfill sync for _next_ fork)

It seems to work fine running on github hosted runners - but if performance become an issue we could switch to using self hosted runners for sepolia sync test. (standard CPU runners have 4 CPU, 16 GB ram - i think it _should_ be enough on sepolia / devnet networks)

The following tests have been **removed** from this PR and moved to a separate issue *(#7550)
- [x] genesis sync on a local devnet (covers current and next fork)
- [x] brief shutdown and restart (covers lookup sync)
- [x] longer shutdown and restart (covers range sync)

I'm hoping to keep these e2e test maintenance effort to a minimum - hopefully longer term we could have some generic e2e tests that works for all clients and the maintenance effort can be spread across teams.

### Latest test run:
https://github.com/sigp/lighthouse/actions/runs/15411744248

### Results:
<img width="687" alt="image" src="https://github.com/user-attachments/assets/c7178291-7b39-4f3b-a339-d3715eb16081" />
<img width="693" alt="image" src="https://github.com/user-attachments/assets/a8fc3520-296c-4baf-ae1e-1e887e660a3c" />

#### logs are available as artifacts:
<img width="629" alt="image" src="https://github.com/user-attachments/assets/3c0e1cd7-9c94-4d0c-be62-5e45179ab8f3" />
2025-06-05 08:31:55 +00:00
Akihito Nakano
886ceb7e25 Run Assertoor tests in CI (#6882)
Added Assertoor tests to the local-testnet CI.


  - The assertoor logs are included in the `logs-local-testnet` that is uploaded to GitHub Artifacts.
- Use `start_local_testnet.sh` so that we can also easily run the test locally.
2025-06-02 00:47:06 +00:00
chonghe
af87135e30 Move MD059 rule to configuration file (#7484) 2025-05-20 00:12:46 +00:00
chonghe
50dbfdf612 Some updates to Lighthouse book (#7455)
- Small revision in Siren documentation in: `book/src/ui_installation.md`
- Add a section about slashing protection in web3signer, as per: https://github.com/sigp/lighthouse/issues/5310 in: `book/src/advanced_web3signer.md`
- Add a presign option in `lighthouse account validator exit` in `book/src/validator_voluntary_exit.md`

- Replace 'Holesky' with 'Hoodi' in all related parts in Lighthouse book
- Add https://ethpandaops.io/posts/kurtosis-deep-dive/ to local testnet documentation
2025-05-19 10:19:04 +00:00
Michael Sproul
fcfcbf9a11 Update mdlint to disable descriptive-link-text (#7481)
Update the mdlint CI to ignore a newly introduced lint which is overly strict (IMO).

Example failure:

https://github.com/sigp/lighthouse/actions/runs/15102688734/job/42446029011?pr=7479


  Ignore the new lint that requires link text to be descriptive. IMO it is completely fine to write links like `See docs [here](http://url.com)`.
2025-05-19 03:35:51 +00:00
SunnysidedJ
593390162f peerdas-devnet-7: update DataColumnSidecarsByRoot request to use DataColumnsByRootIdentifier (#7399)
Update DataColumnSidecarsByRoot request to use DataColumnsByRootIdentifier #7377


  As described in https://github.com/ethereum/consensus-specs/pull/4284
2025-05-12 00:20:55 +00:00
chonghe
402a81cdd7 Fix Kurtosis testnet (#7350)
`spamoor_blob` is removed in https://github.com/ethpandaops/ethereum-package/pull/972. When attempting to start local testnet, it will error:

`
Evaluation error: fail: Invalid additional_services spamoor_blob, allowed fields: ["assertoor", "broadcaster", "tx_fuzz", "custom_flood", "forkmon", "blockscout", "dora", "full_beaconchain_explorer", "prometheus_grafana", "blobscan", "dugtrio", "blutgang", "forky", "apache", "tracoor", "spamoor"]
`

This PR changes `spamoor_blob` to `spamoor`.
2025-04-24 02:55:10 +00:00
chonghe
9f4b0cdc28 Fix Kurtosis doppelganger CI (#7343) 2025-04-22 08:46:31 +00:00
chonghe
80fe133d2c Update Lighthouse Book for Electra features (#7280)
* #7227
2025-04-17 09:31:26 +00:00
Jimmy Chen
759b0612b3 Offloading KZG Proof Computation from the beacon node (#7117)
Addresses #7108

- Add EL integration for `getPayloadV5` and `getBlobsV2`
- Offload proof computation and use proofs from EL RPC APIs
2025-04-08 07:37:16 +00:00
ThreeHrSleep
d60c24ef1c Integrate tracing (#6339)
Tracing Integration
- [reference](5bbf1859e9/projects/project-ideas.md (L297))


  - [x] replace slog & log with tracing throughout the codebase
- [x] implement custom crit log
- [x] make relevant changes in the formatter
- [x] replace sloggers
- [x] re-write SSE logging components

cc: @macladson @eserilev
2025-03-12 22:31:05 +00:00
Jimmy Chen
54b4150a62 Add test flag to override SYNC_TOLERANCE_EPOCHS for range sync testing (#7030)
Related to #6880, an issue that's usually observed on local devnets with small number of nodes.

When testing range sync, I usually shutdown a node for some period of time and restart it again. However, if it's within `SYNC_TOLERANCE_EPOCHS` (8), Lighthouse would consider the node as synced, and if it may attempt to produce a block if requested by a validator - on a local devnet, nodes frequently produce blocks - when this happens, the node ends up producing a block that would revert finality and would get disconnected from peers immediately.

### Usage

Run Lighthouse BN with this flag to override:

```
--sync-tolerance--epoch 0
```
2025-02-24 08:30:11 +00:00
Lion - dapplion
b4be514182 Add spamoor_blob in network_params.yaml (#7012)
Have blobs by default in deneb runs of kurtosis
2025-02-24 03:39:15 +00:00
Eitan Seri-Levi
56f201a257 Add check to Lockbud CI job (#6898) 2025-02-04 02:00:37 +00:00
Jimmy Chen
70194dfc6a Implement PeerDAS Fulu fork activation (#6795)
Addresses #6706


  This PR activates PeerDAS at the Fulu fork epoch instead of `EIP_7594_FORK_EPOCH`. This means we no longer support testing PeerDAS with Deneb / Electrs, as it's now part of a hard fork.
2025-01-30 07:01:34 +00:00
chonghe
1de498340c Add spell check and update Lighthouse book (#6627)
* spellcheck config

* Merge remote-tracking branch 'origin/unstable' into spellcheck

* spellcheck update

* update spellcheck

* spell check passes

* Remove ignored and add other md files

* Remove some words in wordlist

* CI

* test spell check CI

* correct spell check

* Merge branch 'unstable' into spellcheck

* minor fix

* Merge branch 'spellcheck' of https://github.com/chong-he/lighthouse into spellcheck

* Update book

* mdlint

* delete previous_epoch_active_gwei

* Merge branch 'unstable' into spellcheck

* Tweak "container runtime" wording

* Try `BeaconState`s
2024-12-17 07:26:59 +00:00
Michael Sproul
e9ec67e78a Fix Kurtosis, web3signer and cargo-audit for CI (#6671)
* Update kurtosis-cli

* Fix name of Kurtosis artefact used in doppelganger tests

* Ignore idna vuln

* Set Java Version to 21 (required since Web3Signer 24.12.0).
2024-12-10 02:14:13 +00:00
Michael Sproul
56a9befaa1 Clarify command-line reference docs (#6524)
* Clarify command-line reference docs

* Update page title

* Merge remote-tracking branch 'origin/unstable' into cli-reference

* Update CLI script
2024-10-21 06:54:42 +00:00
Michael Sproul
6ad2c187dd Remove deprecated flags in prep for v6.0.0 (#6490)
* Delete previously deprecated flags

* Update CLI docs

* Remove deprecated BN flags

* Use ethereum-package main branch

* Delete env_log/-l
2024-10-18 04:21:46 +00:00
Pop Chunhapanya
2edf225c3b Use snap install yq in local_testnet (#6468)
* Use snap install yq in local_testnet

snap is better than apt since it's recommended in yq doc
2024-10-17 05:53:23 +00:00
hopinheimer
da290e8e2e Added required --force-bls-withdrawal-credentials description to --disable-deposits usage (#6436)
* cli description

* complied docs changes

* reverted changes and script amended

* fix

* reverting unwanted changes

* making linter happy

* requested changes

* Merge branch 'unstable' into cli-fix

* Merge branch 'unstable' into cli-fix
2024-10-10 11:32:41 +00:00
Michael Sproul
dd08ebb2b0 Prevent Kurtosis container pollution (#6441)
* Prevent Kurtosis container pollution
2024-10-01 02:59:03 +00:00
Jimmy Chen
218ae5c7f7 Pin ethereum-package version to 4.2.0 (#6315)
* Pin `ethereum-package` version, update das kurtosis config file and remove outdated config files.
2024-08-29 07:56:31 +00:00
Lion - dapplion
f75a2cf65b PeerDAS implementation (#5683)
* 1D PeerDAS prototype: Data format and Distribution (#5050)

* Build and publish column sidecars. Add stubs for gossip.

* Add blob column subnets

* Add `BlobColumnSubnetId` and initial compute subnet logic.

* Subscribe to blob column subnets.

* Introduce `BLOB_COLUMN_SUBNET_COUNT` based on DAS configuration parameter changes.

* Fix column sidecar type to use `VariableList` for data.

* Fix lint errors.

* Update types and naming to latest consensus-spec #3574.

* Fix test and some cleanups.

* Merge branch 'unstable' into das

* Merge branch 'unstable' into das

* Merge branch 'unstable' into das

# Conflicts:
#	consensus/types/src/chain_spec.rs

* Add `DataColumnSidecarsByRoot ` req/resp protocol (#5196)

* Add stub for `DataColumnsByRoot`

* Add basic implementation of serving RPC data column from DA checker.

* Store data columns in early attester cache and blobs db.

* Apply suggestions from code review

Co-authored-by: Eitan Seri-Levi <eserilev@gmail.com>
Co-authored-by: Jacob Kaufmann <jacobkaufmann18@gmail.com>

* Fix build.

* Store `DataColumnInfo` in database and various cleanups.

* Update `DataColumnSidecar` ssz max size and remove panic code.

---------

Co-authored-by: Eitan Seri-Levi <eserilev@gmail.com>
Co-authored-by: Jacob Kaufmann <jacobkaufmann18@gmail.com>

* feat: add DAS KZG in data col construction (#5210)

* feat: add DAS KZG in data col construction

* refactor data col sidecar construction

* refactor: add data cols to GossipVerifiedBlockContents

* Disable windows tests for `das` branch. (c-kzg doesn't build on windows)

* Formatting and lint changes only.

* refactor: remove iters in construction of data cols

* Update vec capacity and error handling.

* Add `data_column_sidecar_computation_seconds` metric.

---------

Co-authored-by: Jimmy Chen <jchen.tc@gmail.com>

* Merge branch 'unstable' into das

# Conflicts:
#	.github/workflows/test-suite.yml
#	beacon_node/lighthouse_network/src/types/topics.rs

* fix: update data col subnet count from 64 to 32 (#5413)

* feat: add peerdas custody field to ENR (#5409)

* feat: add peerdas custody field to ENR

* add hash prefix step in subnet computation

* refactor test and fix possible u64 overflow

* default to min custody value if not present in ENR

* Merge branch 'unstable' into das

* Merge branch 'unstable' into das-unstable-merge-0415

# Conflicts:
#	Cargo.lock
#	beacon_node/beacon_chain/src/data_availability_checker.rs
#	beacon_node/beacon_chain/src/data_availability_checker/availability_view.rs
#	beacon_node/beacon_chain/src/data_availability_checker/overflow_lru_cache.rs
#	beacon_node/beacon_chain/src/data_availability_checker/processing_cache.rs
#	beacon_node/lighthouse_network/src/rpc/methods.rs
#	beacon_node/network/src/network_beacon_processor/mod.rs
#	beacon_node/network/src/sync/block_lookups/tests.rs
#	crypto/kzg/Cargo.toml

* Merge remote-tracking branch 'sigp/unstable' into das

* Merge remote-tracking branch 'sigp/unstable' into das

* Fix merge conflicts.

* Send custody data column to `DataAvailabilityChecker` for determining block importability (#5570)

* Only import custody data columns after publishing a block.

* Add `subscribe-all-data-column-subnets` and pass custody column count to `availability_cache`.

* Add custody requirement checks to `availability_cache`.

* Fix config not being passed to DAChecker and add more logging.

* Introduce `peer_das_epoch` and make blobs and columns mutually exclusive.

* Add DA filter for PeerDAS.

* Fix data availability check and use test_logger in tests.

* Fix subscribe to all data column subnets not working correctly.

* Fix tests.

* Only publish column sidecars if PeerDAS is activated. Add `PEER_DAS_EPOCH` chain spec serialization.

* Remove unused data column index in `OverflowKey`.

* Fix column sidecars incorrectly produced when there are no blobs.

* Re-instate index to `OverflowKey::DataColumn` and downgrade noisy debug log to `trace`.

* DAS sampling on sync (#5616)

* Data availability sampling on sync

* Address @jimmygchen review

* Trigger sampling

* Address some review comments and only send `SamplingBlock` sync message after PEER_DAS_EPOCH.

---------

Co-authored-by: Jimmy Chen <jchen.tc@gmail.com>

* Merge branch 'unstable' into das

# Conflicts:
#	Cargo.lock
#	Cargo.toml
#	beacon_node/beacon_chain/src/block_verification.rs
#	beacon_node/http_api/src/publish_blocks.rs
#	beacon_node/lighthouse_network/src/rpc/codec/ssz_snappy.rs
#	beacon_node/lighthouse_network/src/rpc/protocol.rs
#	beacon_node/lighthouse_network/src/types/pubsub.rs
#	beacon_node/network/src/sync/block_lookups/single_block_lookup.rs
#	beacon_node/store/src/hot_cold_store.rs
#	consensus/types/src/beacon_state.rs
#	consensus/types/src/chain_spec.rs
#	consensus/types/src/eth_spec.rs

* Merge branch 'unstable' into das

* Re-process early sampling requests (#5569)

* Re-process early sampling requests

# Conflicts:
#	beacon_node/beacon_processor/src/work_reprocessing_queue.rs
#	beacon_node/lighthouse_network/src/rpc/methods.rs
#	beacon_node/network/src/network_beacon_processor/rpc_methods.rs

* Update beacon_node/beacon_processor/src/work_reprocessing_queue.rs

Co-authored-by: Jimmy Chen <jchen.tc@gmail.com>

* Add missing var

* Beta compiler fixes and small typo fixes.

* Remove duplicate method.

---------

Co-authored-by: Jimmy Chen <jchen.tc@gmail.com>

* Merge remote-tracking branch 'sigp/unstable' into das

* Fix merge conflict.

* Add data columns by root to currently supported protocol list (#5678)

* Add data columns by root to currently supported protocol list.

* Add missing data column by roots handling.

* Merge branch 'unstable' into das

# Conflicts:
#	Cargo.lock
#	Cargo.toml
#	beacon_node/network/src/sync/block_lookups/tests.rs
#	beacon_node/network/src/sync/manager.rs

* Fix simulator tests on `das` branch (#5731)

* Bump genesis delay in sim tests as KZG setup takes longer for DAS.

* Fix incorrect YAML spacing.

* DataColumnByRange boilerplate (#5353)

* add boilerplate

* fmt

* PeerDAS custody lookup sync (#5684)

* Implement custody sync

* Lint

* Fix tests

* Fix rebase issue

* Add data column kzg verification and update `c-kzg`. (#5701)

* Add data column kzg verification and update `c-kzg`.

* Fix incorrect `Cell` size.

* Add kzg verification on rpc blocks.

* Add kzg verification on rpc data columns.

* Rename `PEER_DAS_EPOCH` to `EIP7594_FORK_EPOCH` for client interop. (#5750)

* Fetch custody columns in range sync (#5747)

* Fetch custody columns in range sync

* Clean up todos

* Remove `BlobSidecar` construction and publish after PeerDAS activated (#5759)

* Avoid building and publishing blob sidecars after PeerDAS.

* Ignore gossip blobs with a slot greater than peer das activation epoch.

* Only attempt to verify blob count and import blobs before PeerDAS.

* #5684 review comments (#5748)

* #5684 review comments.

* Doc and message update only.

* Fix incorrect condition when constructing `RpcBlock` with `DataColumn`s

* Make sampling tests deterministic (#5775)

* PeerDAS spec tests (#5772)

* Add get_custody_columns spec tests.

* Add kzg merkle proof spec tests.

* Add SSZ spec tests.

* Add remaining KZG tests

* Load KZG only once per process, exclude electra tests and add missing SSZ tests.

* Fix lint and missing changes.

* Ignore macOS generated file.

* Merge remote branch 'sigp/unstable' into das

* Merge remote tracking branch 'origin/unstable' into das

* Implement unconditional reconstruction for supernodes (#5781)

* Implement unconditional reconstruction for supernodes

* Move code into KzgVerifiedCustodyDataColumn

* Remove expect

* Add test

* Thanks justin

* Add withhold attack mode for interop (#5788)

* Add withhold attack mode

* Update readme

* Drop added readmes

* Undo styling changes

* Add column gossip verification and handle unknown parent block (#5783)

* Add column gossip verification and handle missing parent for columns.

* Review PR

* Fix rebase issue

* more lint issues :)

---------

Co-authored-by: dapplion <35266934+dapplion@users.noreply.github.com>

* Trigger sampling on sync events (#5776)

* Trigger sampling on sync events

* Update beacon_chain.rs

* Fix tests

* Fix tests

* PeerDAS parameter changes for devnet-0 (#5779)

* Update PeerDAS parameters to latest values.

* Lint fix

* Fix lint.

* Update hardcoded subnet count to 64 (#5791)

* Fix incorrect columns per subnet and config cleanup (#5792)

* Tidy up PeerDAS preset and config values.

* Fix broken config

* Fix DAS branch CI (#5793)

* Fix invalid syntax.

* Update cli doc. Ignore get_custody_columns test temporarily.

* Fix failing test and add verify inclusion test.

* Undo accidentally removed code.

* Only attempt reconstruct columns once. (#5794)

* Re-enable precompute table for peerdas kzg (#5795)

* Merge branch 'unstable' into das

* Update subscription filter. (#5797)

* Remove penalty for duplicate columns (expected due to reconstruction) (#5798)

* Revert DAS config for interop testing. Optimise get_custody_columns function. (#5799)

* Don't perform reconstruction for proposer node as it already has all the columns. (#5806)

* Multithread compute_cells_and_proofs (#5805)

* Multi-thread reconstruct data columns

* Multi-thread path for block production

* Merge branch 'unstable' into das

# Conflicts:
#	.github/workflows/test-suite.yml
#	beacon_node/network/src/sync/block_lookups/mod.rs
#	beacon_node/network/src/sync/block_lookups/single_block_lookup.rs
#	beacon_node/network/src/sync/network_context.rs

* Fix CI errors.

* Move PeerDAS type-level config to configurable `ChainSpec` (#5828)

* Move PeerDAS type level config to `ChainSpec`.

* Fix tests

* Misc custody lookup improvements (#5821)

* Improve custody requests

* Type DataColumnsByRootRequestId

* Prioritize peers and load balance

* Update tests

* Address PR review

* Merge branch 'unstable' into das

* Rename deploy_block in network config (`das` branch) (#5852)

* Rename deploy_block.txt to deposit_contract_block.txt

* fmt

---------

Co-authored-by: Pawan Dhananjay <pawandhananjay@gmail.com>

* Merge branch 'unstable' into das

* Fix CI and merge issues.

* Merge branch 'unstable' into das

# Conflicts:
#	beacon_node/beacon_chain/src/data_availability_checker/overflow_lru_cache.rs
#	lcli/src/main.rs

* Store data columns individually in store and caches (#5890)

* Store data columns individually in store and caches

* Implement data column pruning

* Merge branch 'unstable' into das

# Conflicts:
#	Cargo.lock

* Update reconstruction benches to newer criterion version. (#5949)

* Merge branch 'unstable' into das

# Conflicts:
#	.github/workflows/test-suite.yml

* chore: add `recover_cells_and_compute_proofs` method (#5938)

* chore: add recover_cells_and_compute_proofs method

* Introduce type alias `CellsAndKzgProofs` to address type complexity.

---------

Co-authored-by: Jimmy Chen <jchen.tc@gmail.com>

* Update `csc` format in ENR and spec tests for devnet-1 (#5966)

* Update `csc` format in ENR.

* Add spec tests for `recover_cells_and_kzg_proofs`.

* Add tests for ENR.

* Fix failing tests.

* Add protection against invalid csc value in ENR.

* Fix lint

* Fix csc encoding and decoding (#5997)

* Fix data column rpc request not being sent due to incorrect limits set. (#6000)

* Fix incorrect inbound request count causing rate limiting. (#6025)

* Merge branch 'stable' into das

# Conflicts:
#	beacon_node/network/src/sync/block_lookups/tests.rs
#	beacon_node/network/src/sync/block_sidecar_coupling.rs
#	beacon_node/network/src/sync/manager.rs
#	beacon_node/network/src/sync/network_context.rs
#	beacon_node/network/src/sync/network_context/requests.rs

* Merge remote-tracking branch 'unstable' into das

* Add kurtosis config for DAS testing (#5968)

* Add kurtosis config for DAS testing.

* Fix invalid yaml file

* Update network parameter files.

* chore: add rust PeerdasKZG crypto library for peerdas functionality and rollback c-kzg dependency to 4844 version (#5941)

* chore: add recover_cells_and_compute_proofs method

* chore: add rust peerdas crypto library

* chore: integrate peerdaskzg rust library into kzg crate

* chore(multi):

- update `ssz_cell_to_crypto_cell`
- update conversion from the crypto cell type to a Vec<u8>. Since the Rust library defines them as references to an array, the conversion is simply `to_vec`

* chore(multi):

- update rest of code to handle the new crypto `Cell` type
- update test case code to no longer use the Box type

* chore: cleanup of superfluous conversions

* chore: revert c-kzg dependency back to v1

* chore: move dependency into correct order

* chore: update rust dependency

- This version includes a new method `PeerDasContext::with_num_threads`

* chore: remove Default initialization of PeerDasContext and explicitly set the parameters in `new_from_trusted_setup`

* chore: cleanup exports

* chore: commit updated cargo.lock

* Update Cargo.toml

Co-authored-by: Jimmy Chen <jchen.tc@gmail.com>

* chore: rename dependency

* chore: update peerdas lib

- sets the blst version to 0.3 so that it matches whatever lighthouse is using. Although 0.3.12 is latest, lighthouse is pinned to 0.3.3

* chore: fix clippy lifetime

- Rust doesn't allow you to elide the lifetime on type aliases

* chore: cargo clippy fix

* chore: cargo fmt

* chore: update lib to add redundant checks (these will be removed in consensus-specs PR 3819)

* chore: update dependency to ignore proofs

* chore: update peerdas lib to latest

* update lib

* chore: remove empty proof parameter

---------

Co-authored-by: Jimmy Chen <jchen.tc@gmail.com>

* Update PeerDAS interop testnet config (#6069)

* Update interop testnet config.

* Fix typo and remove target peers

* Avoid retrying same sampling peer that previously failed. (#6084)

* Various fixes to custody range sync  (#6004)

* Only start requesting batches when there are good peers across all custody columns to avoid spaming block requests.

* Add custody peer check before mutating `BatchInfo` to avoid inconsistent state.

* Add check to cover a case where batch is not processed while waiting for custody peers to become available.

* Fix lint and logic error

* Fix `good_peers_on_subnet` always returning false for `DataColumnSubnet`.

* Add test for `get_custody_peers_for_column`

* Revert epoch parameter refactor.

* Fall back to default custody requiremnt if peer ENR is not present.

* Add metrics and update code comment.

* Add more debug logs.

* Use subscribed peers on subnet before MetaDataV3 is implemented. Remove peer_id matching when injecting error because multiple peers are used for range requests. Use randomized custodial peer to avoid repeatedly sending requests to failing peers. Batch by range request where possible.

* Remove unused code and update docs.

* Add comment

* chore: update peerdas-kzg library (#6118)

* chore: update peerDAS lib

* chore: update library

* chore: update library to version that include "init context" benchmarks and optional validation checks

* chore: (can remove) -- Add benchmarks for init context

* Prevent continuous searchers for low-peer networks (#6162)

* Merge branch 'unstable' into das

* Fix merge conflicts

* Add cli flag to enable sampling and disable by default. (#6209)

* chore: Use reference to an array representing a blob instead of an owned KzgBlob (#6179)

* add KzgBlobRef type

* modify code to use KzgBlobRef

* clippy

* Remove Deneb blob related changes to maintain compatibility with `c-kzg-4844`.

---------

Co-authored-by: Jimmy Chen <jchen.tc@gmail.com>

* Store computed custody subnets in PeerDB and fix custody lookup test (#6218)

* Fix failing custody lookup tests.

* Store custody subnets in PeerDB, fix custody lookup test and refactor some methods.

* Merge branch 'unstable' into das

# Conflicts:
#	beacon_node/beacon_chain/src/beacon_chain.rs
#	beacon_node/beacon_chain/src/block_verification_types.rs
#	beacon_node/beacon_chain/src/builder.rs
#	beacon_node/beacon_chain/src/data_availability_checker.rs
#	beacon_node/beacon_chain/src/data_availability_checker/overflow_lru_cache.rs
#	beacon_node/beacon_chain/src/data_column_verification.rs
#	beacon_node/beacon_chain/src/early_attester_cache.rs
#	beacon_node/beacon_chain/src/historical_blocks.rs
#	beacon_node/beacon_chain/tests/store_tests.rs
#	beacon_node/lighthouse_network/src/discovery/enr.rs
#	beacon_node/network/src/service.rs
#	beacon_node/src/cli.rs
#	beacon_node/store/src/hot_cold_store.rs
#	beacon_node/store/src/lib.rs
#	lcli/src/generate_bootnode_enr.rs

* Fix CI failures after merge.

* Batch sampling requests by peer (#6256)

* Batch sampling requests by peer

* Fix clippy errors

* Fix tests

* Add column_index to error message for ease of tracing

* Remove outdated comment

* Fix range sync never evaluating request as finished, causing it to get stuck. (#6276)

* Merge branch 'unstable' into das-0821-merge

# Conflicts:
#	Cargo.lock
#	Cargo.toml
#	beacon_node/beacon_chain/src/beacon_chain.rs
#	beacon_node/beacon_chain/src/data_availability_checker.rs
#	beacon_node/beacon_chain/src/data_availability_checker/overflow_lru_cache.rs
#	beacon_node/beacon_chain/src/data_column_verification.rs
#	beacon_node/beacon_chain/src/kzg_utils.rs
#	beacon_node/beacon_chain/src/metrics.rs
#	beacon_node/beacon_processor/src/lib.rs
#	beacon_node/lighthouse_network/src/rpc/codec/ssz_snappy.rs
#	beacon_node/lighthouse_network/src/rpc/config.rs
#	beacon_node/lighthouse_network/src/rpc/methods.rs
#	beacon_node/lighthouse_network/src/rpc/outbound.rs
#	beacon_node/lighthouse_network/src/rpc/rate_limiter.rs
#	beacon_node/lighthouse_network/src/service/api_types.rs
#	beacon_node/lighthouse_network/src/types/globals.rs
#	beacon_node/network/src/network_beacon_processor/mod.rs
#	beacon_node/network/src/network_beacon_processor/rpc_methods.rs
#	beacon_node/network/src/network_beacon_processor/sync_methods.rs
#	beacon_node/network/src/sync/block_lookups/common.rs
#	beacon_node/network/src/sync/block_lookups/mod.rs
#	beacon_node/network/src/sync/block_lookups/single_block_lookup.rs
#	beacon_node/network/src/sync/block_lookups/tests.rs
#	beacon_node/network/src/sync/manager.rs
#	beacon_node/network/src/sync/network_context.rs
#	consensus/types/src/data_column_sidecar.rs
#	crypto/kzg/Cargo.toml
#	crypto/kzg/benches/benchmark.rs
#	crypto/kzg/src/lib.rs

* Fix custody tests and load PeerDAS KZG instead.

* Fix ef tests and bench compilation.

* Fix failing sampling test.

* Merge pull request #6287 from jimmygchen/das-0821-merge

Merge `unstable` into `das` 20240821

* Remove get_block_import_status

* Merge branch 'unstable' into das

* Re-enable Windows release tests.

* Address some review comments.

* Address more review comments and cleanups.

* Comment out peer DAS KZG EF tests for now

* Address more review comments and fix build.

* Merge branch 'das' of github.com:sigp/lighthouse into das

* Unignore Electra tests

* Fix metric name

* Address some of Pawan's review comments

* Merge remote-tracking branch 'origin/unstable' into das

* Update PeerDAS network parameters for peerdas-devnet-2  (#6290)

* update subnet count & custody req

* das network params

* update ef tests

---------

Co-authored-by: Jimmy Chen <jchen.tc@gmail.com>
2024-08-27 04:10:22 +00:00
Jimmy Chen
b36f77ef75 Revert --image-download always flag to avoid CI getting rate limited (#6163)
* Revert --image-download always flag to avoid CI getting rate limited by Docker Hub
2024-07-24 06:49:12 +00:00
Jimmy Chen
adfa512893 Add an option to keep existing enclave when starting local testnet (#6065)
* Add an option to keep existing enclave when starting local testnet.

* Add missing help text.

* Do not add `--image-download always` flag if `-k` is present.
2024-07-19 02:42:59 +00:00
chonghe
ab7db7ca9c Update local testnet documentation (#5896)
* Update local testnet doc

* Update doc

* Minor revision

* Fix directory path

* Update scripts/local_testnet/README.md

Co-authored-by: Pawan Dhananjay <pawandhananjay@gmail.com>

* Add kurtosis web

* Add save logs command

* Log of a service

* Update scripts/local_testnet/README.md

Co-authored-by: Jimmy Chen <jchen.tc@gmail.com>

* Update scripts/local_testnet/README.md

Co-authored-by: Jimmy Chen <jchen.tc@gmail.com>

* Minor revision

* Merge branch 'local-testnet-doc' of https://github.com/chong-he/lighthouse into local-testnet-doc
2024-06-18 05:53:09 +00:00
realbigsean
a74098044a Rust 1.79 lints (#5927)
* max_value -> MAX

* remove unnecesary closures

* a couple more max_value -> MAX

* a couple more max_value -> MAX

* Revert "a couple more max_value -> MAX"

This reverts commit 807fe7cae9.

* unused spec field -> phantom data

* ignore some dead code warnings

* update kurtosis repo location
2024-06-13 23:04:30 +00:00
Jimmy Chen
5fc01454dc Replace local testnet script with Kurtosis (#5865)
* Kurtosis local testnet.

* Remove unused `lcli` subcommands

* Migrate doppelganger_protection test to kurtosis and further cleanup.

* Fix lint

* Add missing download image step and remove unused `lcli` dependencies.

* doppelganger success case working

* Run tests on hosted runner and improve error handling.

* Start the dp vc only after epoch 1

* Add more logging to test results.

* Fix exit code and speed up docker build.

* Fix incorrect exit codes and split doppelganger tests on CI.

* Missing the escape for double quotes 😫

* Remove unnecessary vc params in kurtosis config.
2024-06-04 03:03:26 +00:00
Eitan Seri-Levi
df983a83e1 upgrade clap to v4.5 (#5273)
* upgrade clap to v4.5

* cli fixes

* Merge branch 'unstable' of https://github.com/sigp/lighthouse into upgrade-clap-cli

* value parser for mnemonic

* Merge branch 'unstable' of https://github.com/sigp/lighthouse into upgrade-clap-cli

* merge unstable

* default --format val

* fix eth sim

* fix eth sim

* merge conflicts

* resolve beta compiler issue

* add num args, version

* add custom flag parser, make rate limiter flags clap friendly

* remove unneeded check

* fmt

* update

* alphabetic order

* resolve merge conflict

* fix test

* resolve conflicts

* fix test

* revert removed if statement

* fmt got me again

* fix broken flag

* make cli

* make cli

* update

* remove -e files

* update

* cli help updates

* Merge branch 'unstable' of https://github.com/sigp/lighthouse into upgrade-clap-cli

* cli help updates

* md files

* merge conflict

* merge conflicts

* md

* help text, text width, and a few flag fixes

* fmt

* merge

* revert

* revert

* resolve merge conflicts

* merge conflicts

* revert simulator changes

* require at least one arg

* fix eth sim cli

* resolve merge conflicts

* book changes

* md changes

* cli check

* cli check

* retry cli check

* retry cli check

* Merge branch 'unstable' of https://github.com/sigp/lighthouse into upgrade-clap-cli

* cli

* Merge remote-tracking branch 'origin/unstable' into upgrade-clap-cli

* Update CLI docs for Goerli removal

* Fix cargo lock
2024-05-28 05:46:39 +00:00
chonghe
3070cb7c39 Markdown linter (#5494)
* linter

* Add markdown linter

* add env

* only check markdown

* Add token

* Update .github/workflows/test-suite.yml

* Markdown linter

* Exit code

* Update script

* rename

* mdlint

* Add an empty line after end of file

* Testing disable

* add text

* update mdlint.sh

* ori validator inclusion

* Add config yml file

* Remove MD041 and fix advanced-datadir file

* FIx validator inclusion file conflict

* Merge branch 'unstable' into markdown-linter

* change files

* Merge branch 'markdown-linter' of https://github.com/chong-he/lighthouse into markdown-linter

* mdlint

* Remove MD025

* Remove MD036

* Remove MD045

* Removr MD001

* Set MD028 to false

* Remove MD024

* Remove MD055

* Remove MD029

* Remove MD040

* Set MD040 to false

* Set MD033 to false

* Set MD013 to false

* Rearrange yml file

* Update mdlint.sh and test

* Test remove fix

* Test with fix

* Test with space

* Fix summary indentation

* Test mdlint.sh

* Update mdlint.sh

* Test

* Update

* Test fix

* Test again

* Fix

* merge into check-code

* Update scripts/mdlint.sh

Co-authored-by: Mac L <mjladson@pm.me>

* Update scripts/mdlint.sh

Co-authored-by: Mac L <mjladson@pm.me>

* Remove set -e

* Add comment

* Merge pull request #7 from chong-he/unstable

Merge unstable to markdown branch

* mdlint

* Merge branch 'unstable' into markdown-linter

* mdlint
2024-05-24 02:45:19 +00:00
chonghe
ad7f0e0cdb Delete repetitive execute command in local testnet scripts (#5611)
* Delete repetitive execute

* Merge branch 'unstable' of https://github.com/sigp/lighthouse into local-testnet
2024-04-22 16:07:43 +00:00
Eitan Seri-Levi
6bac5ce12b Deprecate http-spec-fork and http-allow-sync-stalled (#5500)
* deprecate flags

* fmt

* remove backslash

* remove hidden flags from the book

* Merge branch 'unstable' of https://github.com/sigp/lighthouse into deprecate-http-spec-fork-and-http-allow-sync-stalled

* add warn, re-add tests

* Apply suggestions from code review

* Merge remote-tracking branch 'origin/unstable' into deprecate-http-spec-fork-and-http-allow-sync-stalled

* Fix imports
2024-04-12 04:21:00 +00:00