Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/test-e2e-multi_pp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ on:
workflow_dispatch: {}

jobs:

test-e2e-multi_pp:
strategy:
fail-fast: false
Expand Down
106 changes: 106 additions & 0 deletions .github/workflows/test-e2e-pp.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: Test e2e pp
on:
push:
branches:
- '**'
workflow_dispatch: {}


jobs:
build-cdk-image:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: actions/setup-go@v5
with:
go-version: 1.23.x

- name: Build cdk docker image
run: make build-docker

- name: Save cdk image to archive
run: docker save --output /tmp/cdk.tar cdk

- name: Upload archive
uses: actions/upload-artifact@v4
with:
name: cdk
path: /tmp/cdk.tar

test-e2e:
runs-on: ubuntu-latest
timeout-minutes: 30
needs: build-cdk-image
strategy:
fail-fast: false
matrix:
e2e-group:
- "fork12-pessimistic"
steps:
- name: Checkout Code
uses: actions/checkout@v4

- name: Checkout Kurtosis CDK
uses: actions/checkout@v4
with:
repository: 0xPolygon/kurtosis-cdk
path: kurtosis-cdk
ref: v0.2.31

- name: Install Kurtosis CDK tools
uses: ./kurtosis-cdk/.github/actions/setup-kurtosis-cdk

- name: Install polycli
run: |
POLYCLI_VERSION="${{ vars.POLYCLI_VERSION }}"
tmp_dir=$(mktemp -d)
curl -L "https://github.com/0xPolygon/polygon-cli/releases/download/${POLYCLI_VERSION}/polycli_${POLYCLI_VERSION}_linux_amd64.tar.gz" | tar -xz -C "$tmp_dir"
mv "$tmp_dir"/* /usr/local/bin/polycli
rm -rf "$tmp_dir"
sudo chmod +x /usr/local/bin/polycli
/usr/local/bin/polycli version

- name: Setup Bats and bats libs
uses: bats-core/bats-action@2.0.0

- name: Download cdk archive
uses: actions/download-artifact@v4
with:
name: cdk
path: /tmp

- name: Load cdk image
run: |
docker load --input /tmp/cdk.tar
docker image ls -a

- name: Run e2e tests
run: make test-e2e-${{ matrix.e2e-group }}
working-directory: test
env:
KURTOSIS_FOLDER: ${{ github.workspace }}/kurtosis-cdk
BATS_LIB_PATH: /usr/lib/
agglayer_prover_sp1_key: ${{ secrets.SP1_PRIVATE_KEY }}


- name: Dump enclave logs
if: failure()
run: kurtosis dump ./dump

- name: Generate archive name
if: failure()
run: |
archive_name="dump_run_with_args_${{matrix.e2e-group}}_${{ github.run_id }}"
echo "ARCHIVE_NAME=${archive_name}" >> "$GITHUB_ENV"
echo "Generated archive name: ${archive_name}"
kurtosis service exec cdk cdk-node-001 'cat /etc/cdk/cdk-node-config.toml' > ./dump/cdk-node-config.toml

- name: Upload logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARCHIVE_NAME }}
path: ./dump
3 changes: 1 addition & 2 deletions .github/workflows/test-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ jobs:
- "fork11-rollup"
- "fork12-validium"
- "fork12-rollup"
- "fork12-pessimistic"
steps:
- name: Checkout Code
uses: actions/checkout@v4
Expand All @@ -52,7 +51,7 @@ jobs:
with:
repository: 0xPolygon/kurtosis-cdk
path: kurtosis-cdk
ref: v0.2.31
ref: v0.3.3

- name: Install Kurtosis CDK tools
uses: ./kurtosis-cdk/.github/actions/setup-kurtosis-cdk
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-resequence.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
with:
repository: 0xPolygon/kurtosis-cdk
path: kurtosis-cdk
ref: v0.2.24
ref: v0.2.31

- name: Install Kurtosis CDK tools
uses: ./kurtosis-cdk/.github/actions/setup-kurtosis-cdk
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ require (
github.com/0xPolygon/cdk-contracts-tooling v0.0.2-0.20241225094934-1d381f5703ef
github.com/0xPolygon/cdk-data-availability v0.0.12
github.com/0xPolygon/cdk-rpc v0.0.0-20241004114257-6c3cb6eebfb6
github.com/0xPolygon/zkevm-ethtx-manager v0.2.5
github.com/0xPolygon/zkevm-ethtx-manager v0.2.7
github.com/0xPolygonHermez/zkevm-synchronizer-l1 v1.0.7
github.com/ethereum/go-ethereum v1.15.5
github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ github.com/0xPolygon/cdk-data-availability v0.0.12 h1:nI3TnYpBHg/VhGQ9XGFSe1atWq
github.com/0xPolygon/cdk-data-availability v0.0.12/go.mod h1:Qmi6eFHVBNp5nlWZHp2tc8ci/3Mb0IGVKA52lADTIz0=
github.com/0xPolygon/cdk-rpc v0.0.0-20241004114257-6c3cb6eebfb6 h1:FXL/rcO7/GtZ3kRFw+C7J6vmGnl8gcazg+Gh/NVmnas=
github.com/0xPolygon/cdk-rpc v0.0.0-20241004114257-6c3cb6eebfb6/go.mod h1:2scWqMMufrQXu7TikDgQ3BsyaKoX8qP26D6E262vSOg=
github.com/0xPolygon/zkevm-ethtx-manager v0.2.5 h1:t6vLS597OjPcoZzvpGXooIy+ANQEX6LoxYBenRmu15I=
github.com/0xPolygon/zkevm-ethtx-manager v0.2.5/go.mod h1:xuLx/9KDv5wO8mnkiiX5pZHyTWQZXyHjmBRBGEzNGXo=
github.com/0xPolygon/zkevm-ethtx-manager v0.2.7 h1:eS2ewz4z+S16ZWQRyci6Y3U9YSR+sx1opB0/NxhmKlQ=
github.com/0xPolygon/zkevm-ethtx-manager v0.2.7/go.mod h1:xuLx/9KDv5wO8mnkiiX5pZHyTWQZXyHjmBRBGEzNGXo=
github.com/0xPolygonHermez/zkevm-synchronizer-l1 v1.0.7 h1:KJM1QlNZdZjNRS+ajPauD4uG+uaYgItaL+96Om3f8aI=
github.com/0xPolygonHermez/zkevm-synchronizer-l1 v1.0.7/go.mod h1:exl+KHnTN6Y8HG4nSUXni4qKbAug0HjJqpebMSgl72k=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
Expand Down
24 changes: 23 additions & 1 deletion sequencesender/ethtx.go
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,9 @@ func (s *SequenceSender) syncAllEthTxResults(ctx context.Context) (time.Time, er
numResults := len(results)
s.mutexEthTx.Lock()
for _, result := range results {
for txHash := range result.Txs {
log.Debugf("syncAllEthTxResults: id: %s tx:%s", result.ID.String(), txHash.String())
}
txSequence, exists := s.ethTransactions[result.ID]
if !exists {
log.Debugf("transaction %v missing in memory structure. Adding it", result.ID)
Expand Down Expand Up @@ -306,7 +309,7 @@ func (s *SequenceSender) getResultAndUpdateEthTx(ctx context.Context, txHash com

txResult, err := s.ethTxManager.Result(ctx, txHash)
switch {
case errors.Is(err, ethtxmanager.ErrNotFound):
case isEthTxManagerErrNotFound(err):
s.logger.Infof("transaction %v does not exist in ethtxmanager. Marking it", txHash)
txData.OnMonitor = false
// Resend tx
Expand All @@ -326,6 +329,25 @@ func (s *SequenceSender) getResultAndUpdateEthTx(ctx context.Context, txHash com
return nil
}

// this function is use instead of
// errors.Is(err, ethtxmanager.ErrNotFound)
func isEthTxManagerErrNotFound(err error) bool {
if err == nil {
return false
}
if errors.Is(err, ethtxmanager.ErrNotFound) {
return true
}
// Check all wrapped errors looking for the same message
for err != nil {
if err.Error() == ethtxmanager.ErrNotFound.Error() {
return true
}
err = errors.Unwrap(err)
}
return false
}

// loadSentSequencesTransactions loads the file into the memory structure
func (s *SequenceSender) loadSentSequencesTransactions() error {
// Check if file exists
Expand Down
9 changes: 9 additions & 0 deletions sequencesender/ethtx_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"encoding/json"
"errors"
"fmt"
"math/big"
"os"
"testing"
Expand All @@ -18,6 +19,14 @@ import (
"github.com/stretchr/testify/require"
)

func TestIsEthTxManagerErrNotFound(t *testing.T) {
require.False(t, isEthTxManagerErrNotFound(nil))
require.True(t, isEthTxManagerErrNotFound(ethtxmanager.ErrNotFound))
require.True(t, isEthTxManagerErrNotFound(fmt.Errorf("not found")))
require.True(t, isEthTxManagerErrNotFound(fmt.Errorf("wrapper: %w", ethtxmanager.ErrNotFound)))
require.False(t, isEthTxManagerErrNotFound(errors.New("another error")))
}

func Test_sendTx(t *testing.T) {
t.Parallel()

Expand Down
2 changes: 1 addition & 1 deletion sequencesender/sequencesender.go
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ func (s *SequenceSender) batchRetrieval(ctx context.Context) error {
// Try to retrieve batch from RPC
rpcBatch, err := s.rpcClient.GetBatch(currentBatchNumber)
if err != nil {
if errors.Is(err, ethtxmanager.ErrNotFound) {
if isEthTxManagerErrNotFound(err) {
s.logger.Infof("batch %d not found in RPC", currentBatchNumber)
} else {
s.logger.Errorf("error getting batch %d from RPC: %v", currentBatchNumber, err)
Expand Down
8 changes: 3 additions & 5 deletions test/combinations/fork11-rollup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,12 @@ deployment_stages:
deploy_l2_contracts: true

args:
agglayer_image: ghcr.io/agglayer/agglayer:0.2.0-rc.19
zkevm_contracts_image: leovct/zkevm-contracts:v7.0.0-rc.2-fork.11-patch.1
zkevm_prover_image: hermeznetwork/zkevm-prover:v7.0.2-fork.11
zkevm_node_image: hermeznetwork/zkevm-node:v0.7.0-fork11-RC1
agglayer_image: ghcr.io/agglayer/agglayer:0.2.0-rc.19
zkevm_prover_image: hermeznetwork/zkevm-prover:v7.0.4-hotfix.2-fork.11
zkevm_node_image: hermeznetwork/zkevm-node:v0.7.0-fork11
cdk_node_image: cdk:latest
gas_token_enabled: true
gas_token_address: ""
consensus_contract_type: rollup
sequencer_type: erigon
# This is just a workaround, since the Kurtosis is deploying the agglayer even in the FEP setup
agglayer_prover_sp1_key: {{.agglayer_prover_sp1_key}}
7 changes: 2 additions & 5 deletions test/combinations/fork12-cdk-validium.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,10 @@ deployment_stages:
deploy_l2_contracts: true

args:
zkevm_contracts_image: leovct/zkevm-contracts:v8.0.0-rc.4-fork.12-patch.1
zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC12-fork.12
cdk_erigon_node_image: hermeznetwork/cdk-erigon:v2.61.14-RC1-amd64
zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12
zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12
cdk_node_image: cdk:latest
gas_token_enabled: true
gas_token_address: ""
consensus_contract_type: cdk-validium
sequencer_type: erigon
# This is just a workaround, since the Kurtosis is deploying the agglayer even in the FEP setup
agglayer_prover_sp1_key: {{.agglayer_prover_sp1_key}}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ args:
zkevm_l2_proofsigner_address: "0xf1a661D7b601Ec46a040f57193cC99aB8c4132FA"
zkevm_l2_proofsigner_private_key: "0xc7fe3a006d75ba9326d9792523385abb49057c66aee0b8b4248821a89713f975"


cdk_node_image: cdk:latest
cdk_erigon_node_image: hermeznetwork/cdk-erigon:v2.61.14-RC1-amd64
zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.5-pp-fork.12
Expand All @@ -37,4 +36,3 @@ args:
zkevm_use_real_verifier: false
enable_normalcy: true
verifier_program_vkey: 0x00766aa16a6efe4ac05c0fe21d4b50f9631dbd1a2663a982da861427085ea2ea

12 changes: 5 additions & 7 deletions test/combinations/fork12-pessimistic-multi.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
args:
verbosity: debug
cdk_node_image: cdk:latest
agglayer_image: ghcr.io/agglayer/agglayer:main
cdk_erigon_node_image: hermeznetwork/cdk-erigon:v2.61.9-RC1
zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.5-pp-fork.12
agglayer_image: ghcr.io/agglayer/agglayer@sha256:5715855f2cc6834bd84a99a33937915164648547d21bfb55198948b0ae4e0fad
cdk_erigon_node_image: hermeznetwork/cdk-erigon:v2.61.16-hotfix2
zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12
additional_services: []
consensus_contract_type: pessimistic
sequencer_type: erigon
Expand All @@ -11,7 +12,4 @@ args:
zkevm_use_real_verifier: false
enable_normalcy: true
verifier_program_vkey: 0x00766aa16a6efe4ac05c0fe21d4b50f9631dbd1a2663a982da861427085ea2ea
agglayer_prover_sp1_key: {{.agglayer_prover_sp1_key}}



agglayer_prover_sp1_key: {{.agglayer_prover_sp1_key}}
16 changes: 8 additions & 8 deletions test/combinations/fork12-pessimistic.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
args:
agglayer_image: ghcr.io/agglayer/agglayer:main
cdk_erigon_node_image: hermeznetwork/cdk-erigon:v2.61.14-RC1-amd64
zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.5-pp-fork.12
verbosity: debug
cdk_node_image: cdk:latest
zkevm_bridge_proxy_image: haproxy:3.1-bookworm
zkevm_bridge_service_image: hermeznetwork/zkevm-bridge-service:v0.6.0-RC5
zkevm_bridge_ui_image: leovct/zkevm-bridge-ui:multi-network
agglayer_image: ghcr.io/agglayer/agglayer@sha256:5715855f2cc6834bd84a99a33937915164648547d21bfb55198948b0ae4e0fad
cdk_erigon_node_image: hermeznetwork/cdk-erigon:v2.61.16-hotfix2
zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.5-pp-fork.12
zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12
additional_services: []
consensus_contract_type: pessimistic
sequencer_type: erigon
erigon_strict_mode: false
gas_token_enabled: true
gas_token_address: ""
gas_token_address: ''
zkevm_use_real_verifier: false
agglayer_prover_primary_prover: mock-prover
enable_normalcy: true
agglayer_prover_sp1_key: {{.agglayer_prover_sp1_key}}
verifier_program_vkey: 0x00766aa16a6efe4ac05c0fe21d4b50f9631dbd1a2663a982da861427085ea2ea

4 changes: 1 addition & 3 deletions test/combinations/fork12-rollup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@ deployment_stages:
deploy_l2_contracts: true

args:
zkevm_contracts_image: leovct/zkevm-contracts:v8.0.0-rc.4-fork.12-patch.1
zkevm_contracts_image: leovct/zkevm-contracts:v9.0.0-rc.6-pp-fork.12
zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12
cdk_erigon_node_image: hermeznetwork/cdk-erigon:v2.61.14-RC1-amd64
cdk_node_image: cdk:latest
gas_token_enabled: true
gas_token_address: ""
consensus_contract_type: rollup
sequencer_type: erigon
agglayer_prover_sp1_key: {{.agglayer_prover_sp1_key}}
9 changes: 3 additions & 6 deletions test/combinations/fork9-cdk-validium.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,14 @@ deployment_stages:
deploy_l2_contracts: true

args:
agglayer_image: ghcr.io/agglayer/agglayer:0.2.0-rc.19
zkevm_contracts_image: leovct/zkevm-contracts:v6.0.0-rc.1-fork.9-patch.1
zkevm_prover_image: hermeznetwork/zkevm-prover:v6.0.6
zkevm_node_image: hermeznetwork/zkevm-node:v0.7.3-RC1
agglayer_image: ghcr.io/agglayer/agglayer:0.2.0-rc.19
zkevm_prover_image: hermeznetwork/zkevm-prover:v6.0.8
zkevm_node_image: hermeznetwork/zkevm-node:v0.7.3
cdk_validium_node_image: 0xpolygon/cdk-validium-node:0.7.0-cdk
consensus_contract_type: cdk-validium
cdk_node_image: cdk:latest
gas_token_enabled: true
gas_token_address: ""
additional_services:
- pless_zkevm_node
sequencer_type: erigon
# This is just a workaround, since the Kurtosis is deploying the agglayer even in the FEP setup
agglayer_prover_sp1_key: {{.agglayer_prover_sp1_key}}
2 changes: 1 addition & 1 deletion test/config/kurtosis-cdk-node-config.toml.template
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PathRWData = "{{.zkevm_path_rw_data}}/"
L1URL="{{.l1_rpc_url}}"
L2URL="http://{{.l2_rpc_name}}{{.deployment_suffix}}:{{.zkevm_rpc_http_port}}"
AggLayerURL="{{.agglayer_url}}"
AggLayerURL="{{.agglayer_readrpc_url}}"

ForkId = {{.zkevm_rollup_fork_id}}
IsValidiumMode = {{.is_cdk_validium}}
Expand Down
Loading
Loading