Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
1ddbe5d
chore: use index2pubkey of BeaconChain (#8674)
twoeths Dec 11, 2025
889b1c4
chore: remove merge transition code (#8680)
nflaig Dec 12, 2025
ebc352f
chore: use pubkey2index from BeaconChain (#8691)
twoeths Dec 12, 2025
3bf4734
chore: merge v1.38.0 stable back to unstable (#8694)
philknows Dec 15, 2025
d4a4765
feat: transfer pending gossipsub message msg data (#8689)
twoeths Dec 16, 2025
b37f2bd
chore(deps): bump systeminformation from 5.23.8 to 5.27.14 (#8701)
dependabot[bot] Dec 17, 2025
aceb5b7
chore: remove eth1 related code (#8692)
nflaig Dec 17, 2025
2fe8de2
chore: add lerna exec to fix build watch/ifchanged commands (#8704)
nflaig Dec 17, 2025
f4236af
chore: delete unused eth1 data from existing databases (#8696)
nflaig Dec 17, 2025
c151a16
chore: use config from beacon chain (#8703)
twoeths Dec 18, 2025
882891d
chore: update bootnode ENR with correct IPV6 (#8705)
chiemerieezechukwu Dec 18, 2025
84b481d
chore: restore code required to perform sync through bellatrix (#8700)
nflaig Dec 18, 2025
493cc12
feat: update vc to submit beacon committee selections once per epoch …
nflaig Dec 19, 2025
39dac0f
fix: avoid calling committee selection apis if there are no duties (#…
nflaig Dec 19, 2025
7e9e7ca
chore: log aggregation selection errors to debug (#8709)
nflaig Dec 19, 2025
b255111
refactor: pass validators pubkey-index map from cli (#8707)
twoeths Dec 22, 2025
b6bba4c
fix: simplify getBlockSignatureSets api (#8720)
twoeths Dec 31, 2025
ae3f082
fix: prevent duplicate aggregates passing validation due to race cond…
nflaig Dec 31, 2025
075956b
refactor: use map to lookup combined beacon committee selection for d…
nflaig Dec 31, 2025
86298a4
refactor: move reward apis to state-transition (#8719)
twoeths Jan 6, 2026
c630c55
fix: update default dashboards to new infra hostnames (#8726)
philknows Jan 7, 2026
100ab48
feat: allow multiple mnemonic index ranges in validator setup (#8731)
wemeetagain Jan 8, 2026
847837e
chore: migrate `yarn 1` to `pnpm` (#8646)
nazarhussain Jan 12, 2026
88333c8
fix: dockerfile build errors (#8735)
barnabasbusa Jan 12, 2026
b79f41e
fix: add triple-beam dependency to package.json (#8736)
barnabasbusa Jan 12, 2026
6ac43e3
fix: add semver dependency for publish workflow (#8751)
nazarhussain Jan 16, 2026
7ac2136
chore: use patched nodejs versions (#8749)
philknows Jan 16, 2026
e5f0c23
ci: add inquirer to dependencies (#8752)
nazarhussain Jan 16, 2026
ca786a9
ci: fix the root level binary path (#8754)
nazarhussain Jan 16, 2026
c9c2050
fix: use cli execution path for binary (#8757)
nazarhussain Jan 16, 2026
99d114c
refactor: simplify get proposer's SignatureSet (#8745)
twoeths Jan 16, 2026
9538904
refactor: `processWithdrawals` (#8730)
ensi321 Jan 19, 2026
83fa4f5
chore: fix lint warnings (#8760)
nflaig Jan 20, 2026
dd21e36
chore: restore node_modules/.bin/lodestar (#8761)
nflaig Jan 20, 2026
6ce1d43
chore: restore `node_modules/.bin/lodestar` for `--prod` installs (#8…
nflaig Jan 20, 2026
10b6636
chore: properly prune dev dependencies in docker/binary builds (#8765)
nflaig Jan 20, 2026
b6d377a
chore: clean and reinstall prod dependencies for smaller builds (#8768)
nflaig Jan 21, 2026
31ec548
chore: bump package versions to 1.39.0
philknows Jan 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
// "forwardPorts": [],

// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "yarn install",
// "postCreateCommand": "pnpm install",

// Configure tool-specific properties.
// "customizations": {},
Expand Down
4 changes: 1 addition & 3 deletions .env.test
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# We use these images during sim and e2e tests
# This is the last version which supports pre/post merge chains in the same network
# All newer versions only work with post merge chains
GETH_DOCKER_IMAGE=ethereum/client-go:v1.16.2
GETH_DOCKER_IMAGE=ethereum/client-go:v1.16.7
# Use either image or local binary for the testing
GETH_BINARY_DIR=
LIGHTHOUSE_DOCKER_IMAGE=ethpandaops/lighthouse:unstable-d235f2c
Expand Down
19 changes: 11 additions & 8 deletions .github/actions/setup-and-build/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,17 @@ inputs:
runs:
using: "composite"
steps:
- uses: pnpm/action-setup@v4

- name: Setup Node
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: ${{inputs.node}}
check-latest: true
# The hash of yarn.lock file will be used as cache key
# So unless our dependencies change, we can reuse the cache
cache: yarn
# Due to a known issue we have to disable package caching for now
# https://github.com/pnpm/pnpm/issues/6234
# cache: pnpm
package-manager-cache: false

- name: Node.js version
id: node
Expand All @@ -40,19 +43,19 @@ runs:

- name: Install & build
shell: bash
run: yarn install --frozen-lockfile && yarn build
run: pnpm install --frozen-lockfile && pnpm build

- name: Check Build
shell: bash
run: yarn check-build
run: pnpm check-build

- name: Build bundle
shell: bash
run: yarn build:bundle
run: pnpm build:bundle

- name: Check bundle
shell: bash
run: yarn check-bundle
run: pnpm check-bundle

- name: Cache build artifacts
uses: actions/cache@v4
Expand Down
25 changes: 3 additions & 22 deletions .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,28 +31,9 @@ jobs:
steps:
# <common-build> - Uses YAML anchors in the future
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: "./.github/actions/setup-and-build"
with:
node-version: 24
check-latest: true
cache: yarn
- name: Node.js version
id: node
run: echo "v8CppApiVersion=$(node --print "process.versions.modules")" >> $GITHUB_OUTPUT
- name: Restore dependencies
uses: actions/cache@v4
id: cache-deps
with:
path: |
node_modules
packages/*/node_modules
key: ${{ runner.os }}-${{ steps.node.outputs.v8CppApiVersion }}-${{ hashFiles('**/yarn.lock', '**/package.json') }}
- name: Install & build
if: steps.cache-deps.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile && yarn build
- name: Build
run: yarn build
if: steps.cache-deps.outputs.cache-hit == 'true'
node: 24
# </common-build>

# Restore performance downloaded states
Expand All @@ -63,7 +44,7 @@ jobs:
key: perf-states-${{ hashFiles('packages/state-transition/test/perf/params.ts') }}

- name: Run benchmarks
run: yarn benchmark
run: pnpm benchmark
env:
# To download content for tests
INFURA_ETH2_CREDENTIALS: ${{ secrets.INFURA_ETH2_CREDENTIALS }}
Expand Down
12 changes: 4 additions & 8 deletions .github/workflows/binaries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,8 @@ jobs:
- name: Install arm64 specifics
if: matrix.arch == 'arm64'
run: |-
# Install missing yarn
# See https://github.com/github-early-access/arm-runners-beta/issues/5
curl -fsSL --create-dirs -o $HOME/bin/yarn \
https://github.com/yarnpkg/yarn/releases/download/v1.22.22/yarn-1.22.22.js
chmod +x $HOME/bin/yarn
echo "$HOME/bin" >> $GITHUB_PATH
# Install missing pnpm
curl -fsSL https://get.pnpm.io/install.sh | sh -
# Install missing build-essential
sudo apt-get update
sudo apt-get install -y build-essential python3
Expand All @@ -45,8 +41,8 @@ jobs:
node: 24
- run: |
mkdir -p dist
yarn global add @chainsafe/caxa@3.0.6
npx caxa -m "Unpacking Lodestar binary, please wait..." -e "dashboards/**" -e "docs/**" -D -p "yarn install --frozen-lockfile --production" --input . --output "lodestar" -- "{{caxa}}/node_modules/.bin/node" "--max-old-space-size=8192" "{{caxa}}/node_modules/.bin/lodestar"
pnpm add -g @chainsafe/caxa@3.0.6
npx caxa -m "Unpacking Lodestar binary, please wait..." -e "dashboards/**" -e "docs/**" -D -p "pnpm clean:nm && pnpm install --frozen-lockfile --prod" --input . --output "lodestar" -- "{{caxa}}/node_modules/.bin/node" "--max-old-space-size=8192" "{{caxa}}/packages/cli/bin/lodestar.js"
tar -czf "dist/lodestar-${{ inputs.version }}-${{ matrix.platform }}-${{ matrix.arch }}.tar.gz" "lodestar"
- name: Upload binaries
uses: actions/upload-artifact@v4
Expand Down
26 changes: 4 additions & 22 deletions .github/workflows/docs-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,37 +13,19 @@ jobs:
steps:
# <common-build> - Uses YAML anchors in the future
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: "./.github/actions/setup-and-build"
with:
node-version: 24
cache: yarn
- name: Node.js version
id: node
run: echo "v8CppApiVersion=$(node --print "process.versions.modules")" >> $GITHUB_OUTPUT
- name: Restore dependencies
uses: actions/cache@v4
id: cache-deps
with:
path: |
node_modules
packages/*/node_modules
key: ${{ runner.os }}-${{ steps.node.outputs.v8CppApiVersion }}-${{ hashFiles('**/yarn.lock', '**/package.json') }}
- name: Install & build
if: steps.cache-deps.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile && yarn build
- name: Build
run: yarn build
if: steps.cache-deps.outputs.cache-hit == 'true'
node: 24

- name: Check wordlist is sorted
run: scripts/wordlist_sort_check.sh

- name: Build and collect docs
run: yarn docs:build
run: pnpm docs:build

# Run prettier check after generating the docs
- name: Check docs format
run: yarn docs:lint
run: pnpm docs:lint

# Run spellcheck AFTER building docs, in case the CLI reference has issues
- name: Spellcheck
Expand Down
19 changes: 11 additions & 8 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,14 @@ jobs:
with:
ref: ${{ env.DEPLOY_REF }}

- uses: actions/setup-node@v4
- name: Install pnpm before setup node
uses: pnpm/action-setup@v4

- uses: actions/setup-node@v6
with:
node-version: 24
check-latest: true
cache: yarn
cache: pnpm

- name: Node.js version
id: node
Expand All @@ -46,25 +49,25 @@ jobs:
path: |
node_modules
packages/*/node_modules
key: ${{ runner.os }}-${{ steps.node.outputs.v8CppApiVersion }}-${{ hashFiles('**/yarn.lock', '**/package.json') }}
key: ${{ runner.os }}-${{ steps.node.outputs.v8CppApiVersion }}-${{ hashFiles('**/pnpm-lock.yaml', '**/package.json') }}

- name: Install & build
if: steps.cache-deps.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile && yarn build
run: pnpm install --frozen-lockfile && pnpm build

- name: Build
run: yarn build
run: pnpm build
if: steps.cache-deps.outputs.cache-hit == 'true'

- name: Build and collect docs
run: yarn docs:build
run: pnpm docs:build

- name: Lint built docs
run: yarn docs:lint:fix
run: pnpm docs:lint:fix

- name: Build docs
working-directory: docs
run: yarn && yarn build
run: pnpm && pnpm build

- name: Deploy
uses: peaceiris/actions-gh-pages@v3
Expand Down
18 changes: 11 additions & 7 deletions .github/workflows/publish-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,16 @@ jobs:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: actions/setup-node@v4

- name: Install pnpm before setup node
uses: pnpm/action-setup@v4

- uses: actions/setup-node@v6
with:
node-version: 24
registry-url: "https://registry.npmjs.org"
check-latest: true
cache: yarn
cache: pnpm
- name: Node.js version
id: node
run: echo "v8CppApiVersion=$(node --print "process.versions.modules")" >> $GITHUB_OUTPUT
Expand All @@ -38,12 +42,12 @@ jobs:
path: |
node_modules
packages/*/node_modules
key: ${{ runner.os }}-${{ steps.node.outputs.v8CppApiVersion }}-${{ hashFiles('**/yarn.lock', '**/package.json') }}
key: ${{ runner.os }}-${{ steps.node.outputs.v8CppApiVersion }}-${{ hashFiles('**/pnpm-lock.yaml', '**/package.json') }}
- name: Install & build
if: steps.cache-deps.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile && yarn build
run: pnpm install --frozen-lockfile && pnpm build
- name: Build
run: yarn build
run: pnpm build
if: steps.cache-deps.outputs.cache-hit == 'true'
# </common-build>
- name: Get version
Expand All @@ -61,7 +65,7 @@ jobs:
# This "temp" commit doesn't change the actually release commit which is captured above.
# git-data is also correct, since it's generated at build time, before `lerna version` run.
run: |
yarn lerna version ${{ steps.version.outputs.version }} \
pnpm lerna version ${{ steps.version.outputs.version }} \
--force-publish \
--exact \
--yes \
Expand Down Expand Up @@ -96,7 +100,7 @@ jobs:
#
# NOTE: Using --preid dev.$(git rev-parse --short=7 HEAD) results in `0.24.3-dev.3ddb91d.0+3ddb91d`
run: |
yarn lerna publish from-package \
pnpm lerna publish from-package \
--yes \
--no-verify-access \
--dist-tag next \
Expand Down
16 changes: 9 additions & 7 deletions .github/workflows/publish-nextfork.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,14 @@ jobs:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: actions/setup-node@v4
- name: Install pnpm before setup node
uses: pnpm/action-setup@v4
- uses: actions/setup-node@v6
with:
node-version: 24
registry-url: "https://registry.npmjs.org"
check-latest: true
cache: yarn
cache: pnpm
- name: Node.js version
id: node
run: echo "v8CppApiVersion=$(node --print "process.versions.modules")" >> $GITHUB_OUTPUT
Expand All @@ -41,12 +43,12 @@ jobs:
path: |
node_modules
packages/*/node_modules
key: ${{ runner.os }}-${{ steps.node.outputs.v8CppApiVersion }}-${{ hashFiles('**/yarn.lock', '**/package.json') }}
key: ${{ runner.os }}-${{ steps.node.outputs.v8CppApiVersion }}-${{ hashFiles('**/pnpm-lock.yaml', '**/package.json') }}
- name: Install & build
if: steps.cache-deps.outputs.cache-hit != 'true'
run: yarn install --frozen-lockfile && yarn build
run: pnpm install --frozen-lockfile && pnpm build
- name: Build
run: yarn build
run: pnpm build
if: steps.cache-deps.outputs.cache-hit == 'true'
# </common-build>
- name: Get version
Expand All @@ -64,7 +66,7 @@ jobs:
# This "temp" commit doesn't change the actually release commit which is captured above.
# git-data is also correct, since it's generated at build time, before `lerna version` run.
run: |
yarn lerna version ${{ steps.version.outputs.version }} \
pnpm lerna version ${{ steps.version.outputs.version }} \
--force-publish \
--exact \
--yes \
Expand Down Expand Up @@ -99,7 +101,7 @@ jobs:
#
# NOTE: Using --preid dev.$(git rev-parse --short=7 HEAD) results in `0.24.3-dev.3ddb91d.0+3ddb91d`
run: |
yarn lerna publish from-package \
pnpm lerna publish from-package \
--yes \
--no-verify-access \
--dist-tag next \
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/publish-rc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ jobs:
# This "temp" commit doesn't change the actually release commit which is captured above.
# git-data is also correct, since it's generated at build time, before `lerna version` run.
run: |
yarn lerna version ${{ needs.tag.outputs.version }} \
pnpm lerna version ${{ needs.tag.outputs.version }} \
--force-publish \
--exact \
--yes \
Expand All @@ -106,7 +106,7 @@ jobs:
git commit -am "${{ needs.tag.outputs.version }}"

- name: Publish to npm registry
run: yarn run release:publish --dist-tag rc
run: pnpm run release:publish --dist-tag rc

# In case of failure
- name: Rollback on failure
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish-stable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ jobs:
prerelease: false

- name: Publish to npm registry (release)
run: yarn run release:publish
run: pnpm run release:publish

# In case of failure
- name: Rollback on failure
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# yarn.lock can be easily modified to plant a backdoor. A regular yarn.lock diff is never audited.
# pnpm-lock.yaml can be easily modified to plant a backdoor. A regular pnpm-lock.yaml diff is never audited.
# Article below details the risks and ease of implementation.
# See https://dev.to/kozlovzxc/injecting-backdoors-to-npm-packages-a0k
#
# This script will exit 1 if yarn.lock was modified.
# This script will exit 1 if pnpm-lock.yaml was modified.
# A Github action should only run this script for non-high trust contributors.
# TODO: Mechanism to allow changes once the yarn.lock changes have been audited by the team
# TODO: Mechanism to allow changes once the pnpm-lock.yaml changes have been audited by the team


# From https://stackoverflow.com/questions/10641361/get-all-files-that-have-been-modified-in-git-branch
MERGE_BASE=$(git merge-base $GITHUB_REF unstable)
CHANGED_FILES=$(git diff --name-only $GITHUB_REF $MERGE_BASE)


if [[ $CHANGED_FILES == *"yarn.lock"* ]]; then
if [[ $CHANGED_FILES == *"pnpm-lock.yaml"* ]]; then
AUTHOR_EMAIL=$(git show -s --format='%ae' $GITHUB_REF)
echo "yarn.lock modified by external contributor $AUTHOR_EMAIL"
echo "pnpm-lock.yaml modified by external contributor $AUTHOR_EMAIL"
exit 1
fi
Loading
Loading