Skip to content

Commit

Permalink
Merge branch 'main' of github.com:ledgerwatch/erigon into shutter-seq…
Browse files Browse the repository at this point in the history
…uencer-txns
  • Loading branch information
taratorio committed Feb 14, 2025
2 parents 3a70714 + 6f83154 commit 69dba2c
Show file tree
Hide file tree
Showing 230 changed files with 3,511 additions and 2,378 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/qa-clean-exit-block-downloading.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: QA - Clean exit (block downloading)

on:
push:
branches:
- 'release/3.*'
schedule:
- cron: '0 8 * * 1-6' # Run every day at 08:00 AM UTC except Sunday
workflow_dispatch: # Run manually
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/qa-rpc-integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@ on:
push:
branches:
- main
- 'release/3.*'
pull_request:
branches:
- main
- 'release/3.*'
types:
- opened
- reopened
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/qa-rpc-performance-tests.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: QA - RPC Performance Tests

on:
push:
branches:
- 'release/3.*'
workflow_dispatch:
schedule:
- cron: '0 0 * * 0' # Run on Sunday at 00:00 AM UTC
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/qa-snap-download.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: QA - Snapshot Download

on:
push:
branches:
- 'release/3.*'
schedule:
- cron: '0 20 * * 1-6' # Run every night at 20:00 (08:00 PM) UTC except Sunday
workflow_dispatch: # Run manually
Expand Down
10 changes: 3 additions & 7 deletions .github/workflows/qa-sync-from-scratch-minimal-node.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: QA - Sync from scratch (minimal node)

on:
push:
branches:
- 'release/3.*'
schedule:
- cron: '0 0 * * *' # Run every night at 00:00 AM UTC
workflow_dispatch: # Run manually
Expand Down Expand Up @@ -49,13 +52,6 @@ jobs:
# Save the subsection reached status
echo "::set-output name=test_executed::true"
# Clean up Erigon process if it's still running
if kill -0 $ERIGON_PID 2> /dev/null; then
echo "Terminating Erigon"
kill $ERIGON_PID
wait $ERIGON_PID
fi
# Check test runner script exit status
if [ $test_exit_status -eq 0 ]; then
echo "Tests completed successfully"
Expand Down
7 changes: 0 additions & 7 deletions .github/workflows/qa-sync-from-scratch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,6 @@ jobs:
# Save the subsection reached status
echo "::set-output name=test_executed::true"
# Clean up Erigon process if it's still running
if kill -0 $ERIGON_PID 2> /dev/null; then
echo "Terminating Erigon"
kill $ERIGON_PID
wait $ERIGON_PID
fi
# Check test runner script exit status
if [ $test_exit_status -eq 0 ]; then
echo "Tests completed successfully"
Expand Down
129 changes: 129 additions & 0 deletions .github/workflows/qa-sync-with-externalcl.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
name: QA - Sync with external CL

on:
schedule:
- cron: '0 0 * * *' # Run every night at 00:00 AM UTC
workflow_dispatch: # Run manually

jobs:
sync-with-externalcl:
runs-on: [self-hosted, linux, X64]
timeout-minutes: 500 # 8+ hours
strategy:
matrix:
client: [lighthouse, prysm]
chain: [mainnet, gnosis]
exclude:
- client: prysm
chain: gnosis
env:
ERIGON_DATA_DIR: ${{ github.workspace }}/erigon_data
CL_DATA_DIR: ${{ github.workspace }}/consensus
ERIGON_QA_PATH: /home/qarunner/erigon-qa
TRACKING_TIME_SECONDS: 3600 # 1 hour
TOTAL_TIME_SECONDS: 25200 # 7 hours

steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Clean Erigon Build & Data Directories
run: |
make clean
rm -rf $ERIGON_DATA_DIR
- name: Install ${{ matrix.client }} and generate JWT secret
run: |
mkdir -p $CL_DATA_DIR
if [ "${{ matrix.client }}" == "lighthouse" ]; then
curl -LO https://github.com/sigp/lighthouse/releases/download/v7.0.0-beta.0/lighthouse-v7.0.0-beta.0-x86_64-unknown-linux-gnu.tar.gz
tar -xvf lighthouse-v7.0.0-beta.0-x86_64-unknown-linux-gnu.tar.gz -C $CL_DATA_DIR
rm lighthouse-v7.0.0-beta.0-x86_64-unknown-linux-gnu.tar.gz
elif [ "${{ matrix.client }}" == "prysm" ]; then
curl -L https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh -o $CL_DATA_DIR/prysm.sh
chmod +x $CL_DATA_DIR/prysm.sh
fi
openssl rand -hex 32 > $CL_DATA_DIR/jwt.hex
- name: Build Erigon
run: |
make erigon
working-directory: ${{ github.workspace }}

- name: Pause the Erigon instance dedicated to db maintenance
run: |
python3 $ERIGON_QA_PATH/test_system/db-producer/pause_production.py || true
- name: Run Erigon and monitor chain sync
id: test_step
run: |
set +e # Disable exit on error
# Run Erigon, wait sync and check ability to maintain sync
python3 $ERIGON_QA_PATH/test_system/qa-tests/tip-tracking/run_and_check_tip_tracking.py \
${{ github.workspace }}/build/bin $ERIGON_DATA_DIR $TRACKING_TIME_SECONDS $TOTAL_TIME_SECONDS Erigon3 ${{ matrix.chain }} minimal_node no_statistics ${{ matrix.client }} $CL_DATA_DIR
# Capture monitoring script exit status
test_exit_status=$?
# Save the subsection reached status
echo "::set-output name=test_executed::true"
# Check test runner script exit status
if [ $test_exit_status -eq 0 ]; then
echo "Tests completed successfully"
echo "TEST_RESULT=success" >> "$GITHUB_OUTPUT"
else
echo "Error detected during tests"
echo "TEST_RESULT=failure" >> "$GITHUB_OUTPUT"
fi
- name: Save test results
if: steps.test_step.outputs.test_executed == 'true'
env:
TEST_RESULT: ${{ steps.test_step.outputs.TEST_RESULT }}
run: |
python3 $ERIGON_QA_PATH/test_system/qa-tests/uploads/upload_test_results.py \
--repo erigon \
--commit $(git rev-parse HEAD) \
--branch ${{ github.ref_name }} \
--test_name sync-from-scratch-${{ matrix.client }}-minimal-node \
--chain ${{ matrix.chain }} \
--runner ${{ runner.name }} \
--outcome $TEST_RESULT \
--result_file ${{ github.workspace }}/result-${{ matrix.chain }}.json
- name: Upload test results
if: steps.test_step.outputs.test_executed == 'true'
uses: actions/upload-artifact@v4
with:
name: test-results-${{ matrix.client }}-${{ matrix.chain }}
path: |
${{ github.workspace }}/result-${{ matrix.chain }}.json
${{ github.workspace }}/erigon_data/logs/erigon.log
${{ matrix.client == 'lighthouse' && '$CL_DATA_DIR/data/beacon/logs/beacon.log' || '' }}
${{ matrix.client == 'prysm' && '$CL_DATA_DIR/data/beacon.log' || '' }}
- name: Clean up Erigon data directory
if: always()
run: |
rm -rf $ERIGON_DATA_DIR
- name: Cleanup consensus runner directory
if: always()
run: |
rm -rf $CL_DATA_DIR
- name: Resume the Erigon instance dedicated to db maintenance
run: |
python3 $ERIGON_QA_PATH/test_system/db-producer/resume_production.py || true
- name: Action for Success
if: steps.test_step.outputs.TEST_RESULT == 'success'
run: echo "::notice::Tests completed successfully"

- name: Action for Not Success
if: steps.test_step.outputs.TEST_RESULT != 'success'
run: |
echo "::error::Error detected during tests"
exit 1
3 changes: 3 additions & 0 deletions .github/workflows/qa-tip-tracking-gnosis.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: QA - Tip tracking (Gnosis)

on:
push:
branches:
- 'release/3.*'
schedule:
- cron: '0 0 * * 1-6' # Run every night at 00:00 AM UTC except Sunday
workflow_dispatch: # Run manually
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/qa-tip-tracking-polygon.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: QA - Tip tracking (Polygon)

on:
push:
branches:
- 'release/3.*'
schedule:
- cron: '0 0 * * 1-6' # Run every night at 00:00 AM UTC except Sunday
workflow_dispatch: # Run manually
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/qa-tip-tracking.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: QA - Tip tracking

on:
push:
branches:
- 'release/3.*'
schedule:
- cron: '0 20 * * 1-6' # Run every night at 08:00 PM UTC except Sunday
workflow_dispatch: # Run manually
Expand Down
1 change: 1 addition & 0 deletions ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ ChangeLog
- `pos sync failed: fork choice update failure: status=5, validationErr=''` - should be fixed
- `external rpc daemon getting stuck` - should be fixed
- `process not exiting in a clean way (getting stuck) upon astrid errs` - should be fixed
- `very rare chance of bridge deadlock while at chain tip due to forking` - should be fixed

### TODO

Expand Down
4 changes: 2 additions & 2 deletions accounts/abi/bind/backends/simulated.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import (
ethereum "github.com/erigontech/erigon"
"github.com/erigontech/erigon-lib/chain"
libcommon "github.com/erigontech/erigon-lib/common"
"github.com/erigontech/erigon-lib/common/hexutility"
"github.com/erigontech/erigon-lib/common/hexutil"
"github.com/erigontech/erigon-lib/common/math"
"github.com/erigontech/erigon-lib/common/u256"
"github.com/erigontech/erigon-lib/kv"
Expand Down Expand Up @@ -529,7 +529,7 @@ func newRevertError(result *evmtypes.ExecutionResult) *revertError {
}
return &revertError{
error: err,
reason: hexutility.Encode(result.Revert()),
reason: hexutil.Encode(result.Revert()),
}
}

Expand Down
13 changes: 12 additions & 1 deletion cl/beacon/handler/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,22 @@ import (

libcommon "github.com/erigontech/erigon-lib/common"
"github.com/erigontech/erigon/cl/beacon/beaconhttp"
"github.com/erigontech/erigon/cl/clparams"
"github.com/erigontech/erigon/cl/cltypes"
)

func (a *ApiHandler) getSpec(w http.ResponseWriter, r *http.Request) (*beaconhttp.BeaconResponse, error) {
return newBeaconResponse(a.beaconChainCfg), nil
outSpec := struct {
*clparams.BeaconChainConfig
*clparams.NetworkConfig
MinEpochsForBlockRequests uint64 `json:"MIN_EPOCHS_FOR_BLOCK_REQUESTS,string"`
}{
BeaconChainConfig: a.beaconChainCfg,
NetworkConfig: a.netConfig,
MinEpochsForBlockRequests: a.beaconChainCfg.MinEpochsForBlockRequests(),
}

return newBeaconResponse(outSpec), nil
}

func (a *ApiHandler) getDepositContract(w http.ResponseWriter, r *http.Request) (*beaconhttp.BeaconResponse, error) {
Expand Down
4 changes: 2 additions & 2 deletions cl/beacon/handler/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ func (a *ApiHandler) init() {
r.Get("/bls_to_execution_changes", beaconhttp.HandleEndpointFunc(a.GetEthV1BeaconPoolBLSExecutionChanges))
r.Post("/bls_to_execution_changes", a.PostEthV1BeaconPoolBlsToExecutionChanges)
r.Get("/attestations", beaconhttp.HandleEndpointFunc(a.GetEthV1BeaconPoolAttestations))
r.Post("/attestations", a.PostEthV1BeaconPoolAttestations)
r.Post("/attestations", a.PostEthV1BeaconPoolAttestations) // deprecate after electra fork
r.Post("/sync_committees", a.PostEthV1BeaconPoolSyncCommittees)
})
r.Route("/light_client", func(r chi.Router) {
Expand Down Expand Up @@ -349,7 +349,7 @@ func (a *ApiHandler) init() {
})
r.Route("/pool", func(r chi.Router) {
r.Get("/attestations", beaconhttp.HandleEndpointFunc(a.GetEthV2BeaconPoolAttestations))
r.Post("/attestations", a.PostEthV1BeaconPoolAttestations) // reuse
r.Post("/attestations", a.PostEthV2BeaconPoolAttestations)
r.Get("/attester_slashings", beaconhttp.HandleEndpointFunc(a.GetEthV1BeaconPoolAttesterSlashings)) // reuse
r.Post("/attester_slashings", a.PostEthV1BeaconPoolAttesterSlashings) // resue
})
Expand Down
3 changes: 0 additions & 3 deletions cl/beacon/handler/headers.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,13 +126,10 @@ func (a *ApiHandler) getHeader(w http.ResponseWriter, r *http.Request) (*beaconh
return nil, err
}

version := a.beaconChainCfg.GetCurrentStateVersion(signedHeader.Header.Slot / a.beaconChainCfg.SlotsPerEpoch)

return newBeaconResponse(&headerResponse{
Root: root,
Canonical: canonicalRoot == root,
Header: signedHeader,
}).WithFinalized(canonicalRoot == root && signedHeader.Header.Slot <= a.forkchoiceStore.FinalizedSlot()).
WithVersion(version).
WithOptimistic(a.forkchoiceStore.IsRootOptimistic(root)), nil
}
Loading

0 comments on commit 69dba2c

Please sign in to comment.