您正在查看: 2024年11月

polygon cdk aggregator 报execution reverted (0x09bde339)

错误信息

2024-11-18T08:36:32.892Z        ERROR   ethtxmanager/ethtxmanager.go:270        failed to estimate gas: execution reverted (0x09bde339), data: 1489ed1000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000000000cbec6bce507ef87ba7cb1adaca9d65f2791bfc03cc77c6602c4e6f7be7eb23e100000000000000000000000047ce1498ae40c634d60314f447816a2184602a7a20227cbcef731b6cbdc0edd5850c63dc7fbc27fb58d12cd4d08298799cf66a0512c230867d3375a1f4669e7267dad2c31ebcddbaccea6abd67798ceae35ae7611c665b6069339e6812d015e239594aa71c4e217288e374448c358f6459e057c91ad2ef514570b5dea21508e214430daadabdd23433820000fe98b1c6fa81d5c512b86fbf87bd7102775f8ef1da7e8014dc7aab225503237c7927c032e589e9a01a0eab9fda82ffe834c2a4977f36cc9bcb1f2327bdac5fb48ffbeb9656efcdf70d2656c328903e9fb96e4e3f470c447b3053cc68d68cf0ad317fe10aa7f254222e47ea07f3c1c3aacb74e5926a67262f261c1ed3120576ab877b49a81fb8aac51431858662af6b1a8138a44e9d0812d032340369459ccc98b109347cc874c7202dceecc3dbb09d7f9e5658f1ca3a92d22be1fa28f9945205d853e2c866d9b649301ac9857b07b92e4865283d3d5e2b711ea5f85cb2da71965382ece050508d3d008bbe4df5458f70bd3e1bfcc50b34222b43cd28cbe39a3bab6e464664a742161df99c607638e415ced49d0cd719518539ed5f561f81d07fe40d3ce85508e0332465313e60ad9ae271d580022ffca4fbe4d72d38d18e7a6e20d020a1d1e5a8f411291ab95521386fa538ddfe6a391d4a3669cc64c40f07895f031550b32f7d73205a69c214a8ef3cdf996c495e3fd24c00873f30ea6b2bfabfd38de1c3da357d1fefe203573fdad22f675cb5cfabbec0a041b1b31274f70193da8e90cfc4d6dc054c7cd26d09c1dadd064ec52b6ddcfa0cb144d65d9e131c0c88f8004f90d363034d839aa7760167b5302c36d2c2f6714b41782070b10c51c178bd923182d28502f36e19b079b190008c46d19c399331fd60b6b6bde898bd1dd0a71ee7ec7ff7124cc3d374846614389e7b5975b77c4059bc42b810673dbb6f8b951e5b636bdf24afd2a3cbe96ce8600e8a79731b4a56c697596e0bff7b73f413bdbc75069b002b00d713fae8d6450428246f1b794d56717050fdb77bbe094ac2ee6af54a153e2fb8ce1d31a86c4fdd523783b910bedf7db58a46ba6ce48ac3ca194f3cf2275e        {"pid": 40}
github.com/0xPolygon/zkevm-ethtx-manager/ethtxmanager.(*Client).add
        /go/pkg/mod/github.com/0x!polygon/zkevm-ethtx-manager@v0.2.1/ethtxmanager/ethtxmanager.go:270
github.com/0xPolygon/zkevm-ethtx-manager/ethtxmanager.(*Client).Add
        /go/pkg/mod/github.com/0x!polygon/zkevm-ethtx-manager@v0.2.1/ethtxmanager/ethtxmanager.go:177
github.com/0xPolygon/cdk/aggregator.(*Aggregator).settleDirect
        /go/src/github.com/0xPolygon/cdk/aggregator/aggregator.go:587
github.com/0xPolygon/cdk/aggregator.(*Aggregator).sendFinalProof
        /go/src/github.com/0xPolygon/cdk/aggregator/aggregator.go:508
2024-11-18T08:36:32.892Z        ERROR   aggregator/aggregator.go:589    Error Adding TX to ethTxManager: failed to estimate gas: execution reverted (0x09bde339), data: 1489ed1000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000000000cbec6bce507ef87ba7cb1adaca9d65f2791bfc03cc77c6602c4e6f7be7eb23e100000000000000000000000047ce1498ae40c634d60314f447816a2184602a7a20227cbcef731b6cbdc0edd5850c63dc7fbc27fb58d12cd4d08298799cf66a0512c230867d3375a1f4669e7267dad2c31ebcddbaccea6abd67798ceae35ae7611c665b6069339e6812d015e239594aa71c4e217288e374448c358f6459e057c91ad2ef514570b5dea21508e214430daadabdd23433820000fe98b1c6fa81d5c512b86fbf87bd7102775f8ef1da7e8014dc7aab225503237c7927c032e589e9a01a0eab9fda82ffe834c2a4977f36cc9bcb1f2327bdac5fb48ffbeb9656efcdf70d2656c328903e9fb96e4e3f470c447b3053cc68d68cf0ad317fe10aa7f254222e47ea07f3c1c3aacb74e5926a67262f261c1ed3120576ab877b49a81fb8aac51431858662af6b1a8138a44e9d0812d032340369459ccc98b109347cc874c7202dceecc3dbb09d7f9e5658f1ca3a92d22be1fa28f9945205d853e2c866d9b649301ac9857b07b92e4865283d3d5e2b711ea5f85cb2da71965382ece050508d3d008bbe4df5458f70bd3e1bfcc50b34222b43cd28cbe39a3bab6e464664a742161df99c607638e415ced49d0cd719518539ed5f561f81d07fe40d3ce85508e0332465313e60ad9ae271d580022ffca4fbe4d72d38d18e7a6e20d020a1d1e5a8f411291ab95521386fa538ddfe6a391d4a3669cc64c40f07895f031550b32f7d73205a69c214a8ef3cdf996c495e3fd24c00873f30ea6b2bfabfd38de1c3da357d1fefe203573fdad22f675cb5cfabbec0a041b1b31274f70193da8e90cfc4d6dc054c7cd26d09c1dadd064ec52b6ddcfa0cb144d65d9e131c0c88f8004f90d363034d839aa7760167b5302c36d2c2f6714b41782070b10c51c178bd923182d28502f36e19b079b190008c46d19c399331fd60b6b6bde898bd1dd0a71ee7ec7ff7124cc3d374846614389e7b5975b77c4059bc42b810673dbb6f8b951e5b636bdf24afd2a3cbe96ce8600e8a79731b4a56c697596e0bff7b73f413bdbc75069b002b00d713fae8d6450428246f1b794d56717050fdb77bbe094ac2ee6af54a153e2fb8ce1d31a86c4fdd523783b910bedf7db58a46ba6ce48ac3ca194f3cf2275e      {"pid": 40, "version": "v0.4.0-beta5", "module": "aggregator"}
github.com/0xPolygon/cdk/aggregator.(*Aggregator).settleDirect
        /go/src/github.com/0xPolygon/cdk/aggregator/aggregator.go:589
github.com/0xPolygon/cdk/aggregator.(*Aggregator).sendFinalProof
        /go/src/github.com/0xPolygon/cdk/aggregator/aggregator.go:508
2024-11-18T08:36:32.892Z        ERROR   aggregator/aggregator.go:591    Error to add batch verification tx to eth tx manager: failed to estimate gas: execution reverted (0x09bde339), data: 1489ed1000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000520000000000000000000000000000000000000000000000000000000000000000cbec6bce507ef87ba7cb1adaca9d65f2791bfc03cc77c6602c4e6f7be7eb23e100000000000000000000000047ce1498ae40c634d60314f447816a2184602a7a20227cbcef731b6cbdc0edd5850c63dc7fbc27fb58d12cd4d08298799cf66a0512c230867d3375a1f4669e7267dad2c31ebcddbaccea6abd67798ceae35ae7611c665b6069339e6812d015e239594aa71c4e217288e374448c358f6459e057c91ad2ef514570b5dea21508e214430daadabdd23433820000fe98b1c6fa81d5c512b86fbf87bd7102775f8ef1da7e8014dc7aab225503237c7927c032e589e9a01a0eab9fda82ffe834c2a4977f36cc9bcb1f2327bdac5fb48ffbeb9656efcdf70d2656c328903e9fb96e4e3f470c447b3053cc68d68cf0ad317fe10aa7f254222e47ea07f3c1c3aacb74e5926a67262f261c1ed3120576ab877b49a81fb8aac51431858662af6b1a8138a44e9d0812d032340369459ccc98b109347cc874c7202dceecc3dbb09d7f9e5658f1ca3a92d22be1fa28f9945205d853e2c866d9b649301ac9857b07b92e4865283d3d5e2b711ea5f85cb2da71965382ece050508d3d008bbe4df5458f70bd3e1bfcc50b34222b43cd28cbe39a3bab6e464664a742161df99c607638e415ced49d0cd719518539ed5f561f81d07fe40d3ce85508e0332465313e60ad9ae271d580022ffca4fbe4d72d38d18e7a6e20d020a1d1e5a8f411291ab95521386fa538ddfe6a391d4a3669cc64c40f07895f031550b32f7d73205a69c214a8ef3cdf996c495e3fd24c00873f30ea6b2bfabfd38de1c3da357d1fefe203573fdad22f675cb5cfabbec0a041b1b31274f70193da8e90cfc4d6dc054c7cd26d09c1dadd064ec52b6ddcfa0cb144d65d9e131c0c88f8004f90d363034d839aa7760167b5302c36d2c2f6714b41782070b10c51c178bd923182d28502f36e19b079b190008c46d19c399331fd60b6b6bde898bd1dd0a71ee7ec7ff7124cc3d374846614389e7b5975b77c4059bc42b810673dbb6f8b951e5b636bdf24afd2a3cbe96ce8600e8a79731b4a56c697596e0bff7b73f413bdbc75069b002b00d713fae8d6450428246f1b794d56717050fdb77bbe094ac2ee6af54a153e2fb8ce1d31a86c4fdd523783b910bedf7db58a46ba6ce48ac3ca194f3cf2275e {"pid": 40, "monitoredTxId": "0x0000000000000000000000000000000000000000000000000000000000000000", "from": "0x47ce1498Ae40c634D60314F447816a2184602A7a", "to": "0x12dF12067fcCf1830424b419E338101E8FC09d41"}
github.com/0xPolygon/cdk/aggregator.(*Aggregator).settleDirect
        /go/src/github.com/0xPolygon/cdk/aggregator/aggregator.go:591
github.com/0xPolygon/cdk/aggregator.(*Aggregator).sendFinalProof
        /go/src/github.com/0xPolygon/cdk/aggregator/aggregator.go:508

链代码分析

// settleDirect sends the final proof to the L1 smart contract directly.
func (a *Aggregator) settleDirect(
    ctx context.Context,
    proof *state.Proof,
    inputs ethmanTypes.FinalProofInputs) bool {
    // add batch verification to be monitored
    sender := common.HexToAddress(a.cfg.SenderAddress)
    to, data, err := a.etherman.BuildTrustedVerifyBatchesTxData( 
func (etherMan *Client) BuildTrustedVerifyBatchesTxData(
    lastVerifiedBatch, newVerifiedBatch uint64, inputs *ethmanTypes.FinalProofInputs, beneficiary common.Address,
) (to *common.Address, data []byte, err error) {
opts, err := etherMan.generateRandomAuth()
    if err != nil {
        return nil, nil, fmt.Errorf("failed to build trusted verify batches, err: %w", err)
    }
    opts.NoSend = true
    // force nonce, gas limit and gas price to avoid querying it from the chain
    opts.Nonce = big.NewInt(1)
    opts.GasLimit = uint64(1)
    opts.GasPrice = big.NewInt(1)

    var newLocalExitRoot [32]byte
    copy(newLocalExitRoot[:], inputs.NewLocalExitRoot)

    var newStateRoot [32]byte
    copy(newStateRoot[:], inputs.NewStateRoot)

    proof, err := convertProof(inputs.FinalProof.Proof)
    if err != nil {
        log.Errorf("error converting proof. Error: %v, Proof: %s", err, inputs.FinalProof.Proof)

        return nil, nil, err
    }

    const pendStateNum = 0 // TODO hardcoded for now until we implement the pending state feature

    tx, err := etherMan.Contracts.Banana.RollupManager.VerifyBatchesTrustedAggregator(
        &opts,
        etherMan.RollupID,
        pendStateNum,
        lastVerifiedBatch,
        newVerifiedBatch,
        newLocalExitRoot,
        newStateRoot,
        beneficiary,
        proof,
    )
    if err != nil {
        if parsedErr, ok := TryParseError(err); ok {
            err = parsedErr
        }

        return nil, nil, err
    }

    return tx.To(), tx.Data(), nil
}

调用的合约为 Banana.RollupManager.VerifyBatchesTrustedAggregator

函数选择器->函数名

https://chaintool.tech/querySelector
0x09bde339->InvalidProof()

合约代码

function verifyBatchesTrustedAggregator(
        uint32 rollupID,
        uint64 pendingStateNum,
        uint64 initNumBatch,
        uint64 finalNewBatch,
        bytes32 newLocalExitRoot,
        bytes32 newStateRoot,
        address beneficiary,
        bytes32[24] calldata proof
    ) external onlyRole(_TRUSTED_AGGREGATOR_ROLE) {
        RollupData storage rollup = rollupIDToRollupData[rollupID];

        _verifyAndRewardBatches(
            rollup,
            pendingStateNum,
            initNumBatch,
            finalNewBatch,
            newLocalExitRoot,
            newStateRoot,
            beneficiary,
            proof
        );

        // Consolidate state
        rollup.lastVerifiedBatch = finalNewBatch;
        rollup.batchNumToStateRoot[finalNewBatch] = newStateRoot;
        rollup.lastLocalExitRoot = newLocalExitRoot;

        // Clean pending state if any
        if (rollup.lastPendingState > 0) {
            rollup.lastPendingState = 0;
            rollup.lastPendingStateConsolidated = 0;
        }

        // Interact with globalExitRootManager
        globalExitRootManager.updateExitRoot(getRollupExitRoot());

        emit VerifyBatchesTrustedAggregator(
            rollupID,
            finalNewBatch,
            newStateRoot,
            newLocalExitRoot,
            msg.sender
        );
    }
function _verifyAndRewardBatches(
        RollupData storage rollup,
        uint64 pendingStateNum,
        uint64 initNumBatch,
        uint64 finalNewBatch,
        bytes32 newLocalExitRoot,
        bytes32 newStateRoot,
        address beneficiary,
        bytes32[24] calldata proof
    ) internal virtual {
        bytes32 oldStateRoot;
        uint64 currentLastVerifiedBatch = _getLastVerifiedBatch(rollup);

        if (initNumBatch < rollup.lastVerifiedBatchBeforeUpgrade) {
            revert InitBatchMustMatchCurrentForkID();
        }

        // Use pending state if specified, otherwise use consolidated state
        if (pendingStateNum != 0) {
            // Check that pending state exist
            // Already consolidated pending states can be used aswell
            if (pendingStateNum > rollup.lastPendingState) {
                revert PendingStateDoesNotExist();
            }

            // Check choosen pending state
            PendingState storage currentPendingState = rollup
                .pendingStateTransitions[pendingStateNum];

            // Get oldStateRoot from pending batch
            oldStateRoot = currentPendingState.stateRoot;

            // Check initNumBatch matches the pending state
            if (initNumBatch != currentPendingState.lastVerifiedBatch) {
                revert InitNumBatchDoesNotMatchPendingState();
            }
        } else {
            // Use consolidated state
            oldStateRoot = rollup.batchNumToStateRoot[initNumBatch];

            if (oldStateRoot == bytes32(0)) {
                revert OldStateRootDoesNotExist();
            }

            // Check initNumBatch is inside the range, sanity check
            if (initNumBatch > currentLastVerifiedBatch) {
                revert InitNumBatchAboveLastVerifiedBatch();
            }
        }

        // Check final batch
        if (finalNewBatch <= currentLastVerifiedBatch) {
            revert FinalNumBatchBelowLastVerifiedBatch();
        }

        // Get snark bytes
        bytes memory snarkHashBytes = _getInputSnarkBytes(
            rollup,
            initNumBatch,
            finalNewBatch,
            newLocalExitRoot,
            oldStateRoot,
            newStateRoot
        );

        // Calulate the snark input
        uint256 inputSnark = uint256(sha256(snarkHashBytes)) % _RFIELD;

        // Verify proof
        if (!rollup.verifier.verifyProof(proof, [inputSnark])) {
            revert InvalidProof(); // 这里报错
        }

        // Pay POL rewards
        uint64 newVerifiedBatches = finalNewBatch - currentLastVerifiedBatch;

        pol.safeTransfer(
            beneficiary,
            calculateRewardPerBatch() * newVerifiedBatches
        );

        // Update aggregation parameters
        totalVerifiedBatches += newVerifiedBatches;
        lastAggregationTimestamp = uint64(block.timestamp);

        // Callback to the rollup address
        rollup.rollupContract.onVerifyBatches(
            finalNewBatch,
            newStateRoot,
            msg.sender
        );
    }

contracts/verifiers/FflonkVerifier_12.sol

function verifyProof(
        bytes32[24] calldata proof,
        uint256[1] calldata pubSignals
    ) public view returns (bool) {
    .....

合约验证电路,细节不用展开了

对于电路,当前合约中包含了10 ,11,12 三种电路,排除下是否是电路版本不对应

排除合约版本是否为fork12

contracts/PolygonZkEVM.sol

constructor(
        IPolygonZkEVMGlobalExitRoot _globalExitRootManager,
        IERC20Upgradeable _matic,
        IVerifierRollup _rollupVerifier, // 构造时传入对应版本FflonkVerifier
        IPolygonZkEVMBridge _bridgeAddress,
        uint64 _chainID,
        uint64 _forkID
    ) {
        globalExitRootManager = _globalExitRootManager;
        matic = _matic;
        rollupVerifier = _rollupVerifier;
        bridgeAddress = _bridgeAddress;
        chainID = _chainID;
        forkID = _forkID;
    }

deployment/v2/4_createRollup.ts

let verifierContract;
    if (realVerifier === true) {
        let verifierName = `FflonkVerifier_${forkID}`;

        const VerifierRollup = await ethers.getContractFactory(verifierName, deployer);
        verifierContract = await VerifierRollup.deploy();
        await verifierContract.waitForDeployment();
    } else 

deployment/v2/create_rollup_parameters.json

{
 "realVerifier": true,
...
 "forkID": 12,
...
}

合约内版本是正确的,fork12

确认prover和电路keys版本

https://hub.docker.com/r/hermeznetwork/zkevm-prover/tags?name=v8.0.0

从官方信息https://github.com/0xPolygon/kurtosis-cdk/blob/60f6e4cdbe0c218d14eb443fb7c8618a06c485b5/CDK_VERSION_MATRIX.MD
Fork12 对应的 ZkEVM Prover:v8.0.0-RC14-fork.12

看一下Prover Key https://storage.googleapis.com/zkevm/ 在fork12版本下,只有一个

<Contents>
<Key>zkproverc/v8.0.0-rc.9-fork.12.tgz</Key>
<Generation>1725622722765425</Generation>
<MetaGeneration>1</MetaGeneration>
<LastModified>2024-09-06T11:38:42.770Z</LastModified>
<ETag>"93c4e4ea1755059d9e1f6325c089472c"</ETag>
<Size>45066205192</Size>
</Contents>

目前怀疑ZkEVM Proverv8.0.0-RC14-fork.12与 key v8.0.0-rc.9-fork.12.tgz存在不兼容
由于目前只有v8.0.0-rc.9-fork.12.tgz版本的key,所以目前将ZkEVM Prover降级为v8.0.0-RC9-fork.12

docker pull hermeznetwork/zkevm-prover:v8.0.0-RC9-fork.12

降级完测试,问题依旧存在,排除版本不一致问题
继续分析日志

2024-11-18T10:02:05.927Z        WARN    aggregator/aggregator.go:653    NewLocalExitRoot and NewStateRoot look like a mock values, using values from executor instead: LER: 000000..000000, SR: 959a88..208620  {"pid": 39, "version": "v0.4.0-beta5", "module": "aggregator", "prover": "PROVER-2", "proverId": "7f32fd37-7b07-43de-b0e8-b7a861d5f495", "proverAddr": "172.18.34.135:60064", "recursiveProofId": "b47f3cf8-42d8-43b3-a529-7c37ebd7351a", "batches": "1-368", "finalProofId": "40ac43d6-7a7b-498e-b083-30d1a0656596"}
github.com/0xPolygon/cdk/aggregator.(*Aggregator).buildFinalProof
        /go/src/github.com/0xPolygon/cdk/aggregator/aggregator.go:653
github.com/0xPolygon/cdk/aggregator.(*Aggregator).tryBuildFinalProof
        /go/src/github.com/0xPolygon/cdk/aggregator/aggregator.go:730
github.com/0xPolygon/cdk/aggregator.(*Aggregator).Channel
        /go/src/github.com/0xPolygon/cdk/aggregator/aggregator.go:442
github.com/0xPolygon/cdk/aggregator/prover._AggregatorService_Channel_Handler
        /go/src/github.com/0xPolygon/cdk/aggregator/prover/aggregator_grpc.pb.go:109
google.golang.org/grpc.(*Server).processStreamingRPC
        /go/pkg/mod/google.golang.org/grpc@v1.64.0/server.go:1673
google.golang.org/grpc.(*Server).handleStream
        /go/pkg/mod/google.golang.org/grpc@v1.64.0/server.go:1794
google.golang.org/grpc.(*Server).serveStreams.func2.1
        /go/pkg/mod/google.golang.org/grpc@v1.64.0/server.go:1029

从mock关键词分析,当前prover配置是否开始mock配置

{
  "runAggregatorClient": false,
  "runAggregatorClientMock": true,
  ...

确实开始了mock配置,导致没有生成真实的证明,修改配置如下

{
  "runAggregatorClient": true,
  "runAggregatorClientMock": false,
  ...

重启后,提示如下错误

20241118_104820_282634 5781eab 010bc40     c12aGenericCHelpers=config/c12a/c12a.chelpers_generic.bin
20241118_104820_282636 5781eab 010bc40     recursive1GenericCHelpers=config/recursive1/recursive1.chelpers_generic.bin
20241118_104820_282638 5781eab 010bc40     recursive2GenericCHelpers=config/recursive2/recursive2.chelpers_generic.bin
20241118_104820_282639 5781eab 010bc40     recursivefGenericCHelpers=config/recursivef/recursivef.chelpers_generic.bin
20241118_104820_282641 5781eab 010bc40     publicsOutput=public.json
20241118_104820_282643 5781eab 010bc40     proofFile=proof.json
20241118_104820_282645 5781eab 010bc40     keccakScriptFile=config/scripts/keccak_script.json
20241118_104820_282647 5781eab 010bc40     sha256ScriptFile=config/scripts/sha256_script.json
20241118_104820_282649 5781eab 010bc40     keccakPolsFile=keccak_pols.json
20241118_104820_282745 5781eab 010bc40 zkError: required file config.zkevmConstPols=config/zkevm/zkevm.const does not exist
20241118_104820_282754 5781eab 010bc40 zkError: required file config.c12aConstPols=config/c12a/c12a.const does not exist
20241118_104820_282759 5781eab 010bc40 zkError: required file config.recursive1ConstPols=config/recursive1/recursive1.const does not exist
20241118_104820_282764 5781eab 010bc40 zkError: required file config.recursive2ConstPols=config/recursive2/recursive2.const does not exist
20241118_104820_282768 5781eab 010bc40 zkError: required file config.recursivefConstPols=config/recursivef/recursivef.const does not exist
20241118_104820_282773 5781eab 010bc40 zkError: required file config.zkevmVerifier=config/zkevm/zkevm.verifier.dat does not exist
20241118_104820_282776 5781eab 010bc40 zkError: required file config.zkevmVerkey=config/zkevm/zkevm.verkey.json does not exist
20241118_104820_282780 5781eab 010bc40 zkError: required file config.c12aVerkey=config/c12a/c12a.verkey.json does not exist
20241118_104820_282784 5781eab 010bc40 zkError: required file config.recursive1Verifier=config/recursive1/recursive1.verifier.dat does not exist
20241118_104820_282788 5781eab 010bc40 zkError: required file config.recursive1Verkey=config/recursive1/recursive1.verkey.json does not exist
20241118_104820_282793 5781eab 010bc40 zkError: required file config.recursive2Verifier=config/recursive2/recursive2.verifier.dat does not exist
20241118_104820_282652 5781eab 010bc40     sha256PolsFile=sha256_connections.json
20241118_104820_282653 5781eab 010bc40     keccakConnectionsFile=keccak_connections.json
20241118_104820_282656 5781eab 010bc40     storageRomFile=config/scripts/storage_sm_rom.json
20241118_104820_282658 5781eab 010bc40     zkevmStarkInfo=config/zkevm/zkevm.starkinfo.json
20241118_104820_282660 5781eab 010bc40     c12aStarkInfo=config/c12a/c12a.starkinfo.json
20241118_104820_282662 5781eab 010bc40     databaseURL=postg...
20241118_104820_282664 5781eab 010bc40     dbNodesTableName=state.nodes
20241118_104820_282796 5781eab 010bc40 zkError: required file config.recursive2Verkey=config/recursive2/recursive2.verkey.json does not exist
20241118_104820_282802 5781eab 010bc40 zkError: required file config.finalVerifier=config/final/final.verifier.dat does not exist
20241118_104820_282805 5781eab 010bc40 zkError: required file config.recursivefVerifier=config/recursivef/recursivef.verifier.dat does not exist
20241118_104820_282810 5781eab 010bc40 zkError: required file config.recursivefVerkey=config/recursivef/recursivef.verkey.json does not exist
20241118_104820_282814 5781eab 010bc40 zkError: required file config.finalStarkZkey=config/final/final.fflonk.zkey does not exist
20241118_104820_282832 5781eab 010bc40 zkError: required file config.zkevmStarkInfo=config/zkevm/zkevm.starkinfo.json does not exist
20241118_104820_282837 5781eab 010bc40 zkError: required file config.c12aStarkInfo=config/c12a/c12a.starkinfo.json does not exist
20241118_104820_282841 5781eab 010bc40 zkError: required file config.recursive1StarkInfo=config/recursive1/recursive1.starkinfo.json does not exist
20241118_104820_282846 5781eab 010bc40 zkError: required file config.recursive2StarkInfo=config/recursive2/recursive2.starkinfo.json does not exist
20241118_104820_282850 5781eab 010bc40 zkError: required file config.recursivefStarkInfo=config/recursivef/recursivef.starkinfo.json does not exist
20241118_104820_282853 5781eab 010bc40 zkError: required file config.zkevmCHelpers=config/zkevm/zkevm.chelpers.bin does not exist
20241118_104820_282857 5781eab 010bc40 zkError: required file config.c12aCHelpers=config/c12a/c12a.chelpers.bin does not exist
20241118_104820_282666 5781eab 010bc40     dbProgramTableName=state.program
20241118_104820_282861 5781eab 010bc40 zkError: required file config.recursive1CHelpers=config/recursive1/recursive1.chelpers.bin does not exist
20241118_104820_282668 5781eab 010bc40     dbMultiWrite=1
20241118_104820_282865 5781eab 010bc40 zkError: required file config.recursive2CHelpers=config/recursive2/recursive2.chelpers.bin does not exist
20241118_104820_282670 5781eab 010bc40     dbMultiWriteSingleQuerySize=20971520
20241118_104820_282869 5781eab 010bc40 zkError: required file config.recursivefCHelpers=config/recursivef/recursivef.chelpers.bin does not exist
20241118_104820_282672 5781eab 010bc40     dbConnectionsPool=1
20241118_104820_282872 5781eab 010bc40 zkError: required file config.zkevmGenericCHelpers=config/zkevm/zkevm.chelpers_generic.bin does not exist
20241118_104820_282674 5781eab 010bc40     dbNumberOfPoolConnections=30
20241118_104820_282876 5781eab 010bc40 zkError: required file config.c12aGenericCHelpers=config/c12a/c12a.chelpers_generic.bin does not exist
20241118_104820_282676 5781eab 010bc40     dbMetrics=1
20241118_104820_282880 5781eab 010bc40 zkError: required file config.recursive1GenericCHelpers=config/recursive1/recursive1.chelpers_generic.bin does not exist
20241118_104820_282677 5781eab 010bc40     dbClearCache=0
20241118_104820_282883 5781eab 010bc40 zkError: required file config.recursive2GenericCHelpers=config/recursive2/recursive2.chelpers_generic.bin does not exist
20241118_104820_282679 5781eab 010bc40     dbGetTree=1
20241118_104820_282886 5781eab 010bc40 zkError: required file config.recursivefGenericCHelpers=config/recursivef/recursivef.chelpers_generic.bin does not exist
20241118_104820_282681 5781eab 010bc40     dbReadOnly=0
20241118_104820_282890 5781eab 010bc40 zkError: required file config.c12aExec=config/c12a/c12a.exec does not exist
20241118_104820_282682 5781eab 010bc40     dbReadRetryCounter=10
20241118_104820_282894 5781eab 010bc40 zkError: required file config.recursive1Exec=config/recursive1/recursive1.exec does not exist
20241118_104820_282684 5781eab 010bc40     dbReadRetryDelay=100000
20241118_104820_282898 5781eab 010bc40 zkError: required file config.recursive2Exec=config/recursive2/recursive2.exec does not exist
20241118_104820_282687 5781eab 010bc40     stateManager=1
20241118_104820_282688 5781eab 010bc40     stateManagerPurge=1
20241118_104820_282690 5781eab 010bc40     cleanerPollingPeriod=600
20241118_104820_282902 5781eab 010bc40 zkError: required file config.recursivefExec=config/recursivef/recursivef.exec does not exist
20241118_104820_282692 5781eab 010bc40     requestsPersistence=3600
20241118_104820_282905 5781eab 010bc40 zkError: main() failed calling config.check()
20241118_104820_282693 5781eab 010bc40     maxExecutorThreads=20
20241118_104820_282696 5781eab 010bc40     maxExecutorReceiveMessageSize=1073741824
20241118_104820_282698 5781eab 010bc40     maxExecutorSendMessageSize=0
20241118_104820_282700 5781eab 010bc40     maxHashDBThreads=8
20241118_104820_282702 5781eab 010bc40     dbMTCacheSize=1024
20241118_104820_282703 5781eab 010bc40     dbProgramCacheSize=1024
20241118_104820_282705 5781eab 010bc40     fullTracerTraceReserveSize=262144
20241118_104820_282717 5781eab 010bc40 --> WHOLE_PROCESS starting...
20241118_104820_283857 5781eab 010bc40 CALL STACK
20241118_104820_283862 5781eab 010bc40 0: call=zkProver(_Z14printCallStackv+0x45) [0x55aedb76ded5]
20241118_104820_283864 5781eab 010bc40 1: call=zkProver(_Z11exitProcessv+0x16) [0x55aedb792dd6]
20241118_104820_283865 5781eab 010bc40 2: call=zkProver(main+0x16f1) [0x55aec780c661]
20241118_104820_283867 5781eab 010bc40 3: call=/lib/x86_64-linux-gnu/libc.so.6(+0x29d90) [0x7f7b80d09d90]
20241118_104820_283868 5781eab 010bc40 4: call=/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x80) [0x7f7b80d09e40]
20241118_104820_283869 5781eab 010bc40 5: call=zkProver(_start+0x25) [0x55aec785e115]
20241118_104820_284026 5781eab 010bc40 MEMORY INFO 
    MemTotal: 1027509.960938 MB
    MemFree: 765092.031250 MB
    MemAvailable: 1012630.906250 MB
    Buffers: 1117.746094 MB
    Cached: 251721.140625 MB
    SwapCached: 0.000000 MB
    SwapTotal: 0.000000 MB
    SwapFree: 0.000000 MB
    VM: 504.105469 MB
    RSS: 0.006591 MB
20241118_104820_284047 5781eab 010bc40 PROCESS INFO
    Pid: 1
    User time: 0.010000 s
    Kernel time: 0.010000 s
    Total time: 0.020000 s
    Num threads: 1
    Virtual mem: 504 MB

从错误分析,当前配置没有正确加载对应目录,增加以下参数

{
  "outputPath": "runtime/output",
  "configPath": "/usr/src/app/config"
}

结束

prover正确运行,并开始计算证明,且cpu利用率拉满

20241118_110311_263112 06517aa 4b83640 <-- SAVE_PUBLICS_JSON_BATCH_PROOF done: 0.000241 s
20241118_110311_263114 06517aa 4b83640 --> STARK_PROOF_BATCH_PROOF starting...
20241118_110311_263212 06517aa 4b83640 --> STARK_INITIALIZATION starting...
20241118_110311_263248 06517aa 4b83640 <-- STARK_INITIALIZATION done: 0.000035 s
20241118_110311_263249 06517aa 4b83640 --> STARK_STEP_1 starting...
20241118_110311_263251 06517aa 4b83640 --> STARK_STEP_1_LDE_AND_MERKLETREE starting...
20241118_110311_263252 06517aa 4b83640 --> STARK_STEP_1_LDE starting...
20241118_110534_424148 06517aa 4b83640 <-- STARK_STEP_1_LDE done: 143.160871 s
20241118_110534_424181 06517aa 4b83640 --> STARK_STEP_1_MERKLETREE starting...

verifyBatchesTrustedAggregator 交易已上链

https://sepolia.etherscan.io/address/0x47ce1498Ae40c634D60314F447816a2184602A7a

polygon cdk Aggregator使用SequencerPrivateKey的时机

在Aggregator中有如下配置,需要配置Sequencer的私钥

[Aggregator.SequencerPrivateKey]
Path = "/etc/cdk/sequencer.keystore"
Password = "password"

查看链代码

if !cfg.SyncModeOnlyEnabled && cfg.SettlementBackend == AggLayer {
        aggLayerClient = agglayer.NewAggLayerClient(cfg.AggLayerURL)

        sequencerPrivateKey, err = cdkcommon.NewKeyFromKeystore(cfg.SequencerPrivateKey)
        if err != nil {
            return nil, err
        }
    }

以下条件时被设置

  1. cfg.SyncModeOnlyEnabled == false
  2. cfg.SettlementBackend == AggLayer

查看SequencerPrivateKey使用逻辑

func (a *Aggregator) settleWithAggLayer(
    ctx context.Context,
    proof *state.Proof,
    inputs ethmanTypes.FinalProofInputs) bool {
    proofStrNo0x := strings.TrimPrefix(inputs.FinalProof.Proof, "0x")
    proofBytes := common.Hex2Bytes(proofStrNo0x)
    tx := agglayer.Tx{
        LastVerifiedBatch: cdkTypes.ArgUint64(proof.BatchNumber - 1),
        NewVerifiedBatch:  cdkTypes.ArgUint64(proof.BatchNumberFinal),
        ZKP: agglayer.ZKP{
            NewStateRoot:     common.BytesToHash(inputs.NewStateRoot),
            NewLocalExitRoot: common.BytesToHash(inputs.NewLocalExitRoot),
            Proof:            cdkTypes.ArgBytes(proofBytes),
        },
        RollupID: a.etherman.GetRollupId(),
    }
    signedTx, err := tx.Sign(a.sequencerPrivateKey)
    if err != nil {
        a.logger.Errorf("failed to sign tx: %v", err)
        a.handleFailureToAddVerifyBatchToBeMonitored(ctx, proof)

        return false
    }
switch a.cfg.SettlementBackend {
            case AggLayer:
                if success := a.settleWithAggLayer(ctx, proof, inputs); !success {
                    continue
                }
            default:
                if success := a.settleDirect(ctx, proof, inputs); !success {
                    continue
                }
            }

SettlementBackend 配置选项

  • agglayer
  • l1 (默认)

总结
当使用agglayer结算时,才需要设置SequencerPrivateKey,所以独立部署时Aggregator不需要配置Aggregator.SequencerPrivateKey

polygon da 判断DA服务是否正常

查询DA数据库最新存储的batch高度

select batch_num from data_node.offchain_data ORDER BY batch_num DESC Limit 1;

例如返回

batch_num 
-----------
       335

再查看最新提交的交易->SequenceBatches时间
https://sepolia.etherscan.io/tx/0x9edf5c7c7a87ca47fd85e3002361d1266028e2f2a08d1bfd4cf1e483f6c19104#eventlog

numBatch:335
与数据库中高度一致,则代表DA服务正常

polygon cdk sequence sender 发送 sequenceBatchesValidium的时机

问题

sequencesender长时间未向L1提交batch->sequenceBatchesValidium
与sequencesender模块有关的日志只看到如下

2024-11-18T04:04:13.436Z        INFO    sequencesender/sequencesender.go:187    batch 312 is not closed yet     {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}

未看到类似日志

2024-11-18T04:04:13.434Z        INFO    sequencesender/sequencesender.go:282    updating virtual batch  {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}

临时重启

重启sequencesender服务后,开始提交

2024-11-18T03:41:32.219Z        INFO    sequencesender/sequencesender.go:352    sending sequences to L1. From batch 83 to batch 318     {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:41:32.555Z        DEBUG   ethtxmanager/ethtxmanager.go:482        found 0 monitored tx to process {"pid": 40}
2024-11-18T03:41:32.555Z        DEBUG   ethtxmanager/ethtxmanager.go:512        found 0 mined monitored tx to process   {"pid": 40}
2024-11-18T03:41:33.434Z        DEBUG   ethtxmanager/ethtxmanager.go:555        found 0 safe monitored tx to process    {"pid": 40}
2024-11-18T03:41:33.434Z        INFO    rpc/batch.go:46 Getting batch 319 from RPC      {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:41:33.435Z        INFO    rpc/batch.go:93 Getting l2 block timestamp from RPC. Block hash: 0x84fb8a0d5f14d5e0871f6c1488de02c0404ef40724eca3878917631f097a4c51     {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:41:33.436Z        INFO    sequencesender/sequencesender.go:187    batch 319 is not closed yet     {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:41:35.554Z        DEBUG   ethtxmanager/ethtxmanager.go:482        found 0 monitored tx to process {"pid": 40}
2024-11-18T03:41:35.554Z        DEBUG   ethtxmanager/ethtxmanager.go:512        found 0 mined monitored tx to process   {"pid": 40}
2024-11-18T03:41:36.567Z        DEBUG   ethtxmanager/ethtxmanager.go:555        found 0 safe monitored tx to process    {"pid": 40}
2024-11-18T03:41:38.557Z        DEBUG   sync/evmdownloader.go:96        getting events from blocks 7099833 to  7099833  {"pid": 40, "version": "v0.4.0-beta5", "syncer": "l1infotreesync"}
2024-11-18T03:41:39.058Z        DEBUG   ethtxmanager/ethtxmanager.go:482        found 0 monitored tx to process {"pid": 40}
2024-11-18T03:41:39.058Z        DEBUG   ethtxmanager/ethtxmanager.go:512        found 0 mined monitored tx to process   {"pid": 40}
2024-11-18T03:41:39.437Z        DEBUG   sync/evmdownloader.go:104       sending block 7099833 to the driver (without events)    {"pid": 40, "version": "v0.4.0-beta5", "syncer": "l1infotreesync"}
2024-11-18T03:41:39.935Z        DEBUG   ethtxmanager/ethtxmanager.go:555        found 0 safe monitored tx to process    {"pid": 40}
2024-11-18T03:41:40.450Z        INFO    datacommittee/datacommittee.go:310      sending request to sign the sequence to 0xe492566270951f0630E5f3665900264f1E9232b1 at http://172.18.39.103:8444 {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:41:40.450Z        INFO    datacommittee/datacommittee.go:310      sending request to sign the sequence to 0x3DC4c719718A34B36765A9691B9D72acc0da4737 at http://172.18.36.175:8444 {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:41:40.450Z        INFO    datacommittee/datacommittee.go:310      sending request to sign the sequence to 0x003d77dE9535385942629B182eeB104e82ac3FBa at http://172.18.39.162:8444 {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:41:40.450Z        INFO    datacommittee/datacommittee.go:310      sending request to sign the sequence to 0x78fE7a1Cc51c84a61cC172c4Fb8c666e84d930c0 at http://172.18.36.185:8444 {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:41:40.450Z        INFO    datacommittee/datacommittee.go:310      sending request to sign the sequence to 0x9e07d72b16BDBF8870b79c2421912d677Ccf1F0F at http://172.18.36.16:8444  {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:41:40.553Z        DEBUG   sync/evmdownloader.go:89        waiting for new blocks, last block processed 7099833, last block seen on L1 7099833     {"pid": 40, "version": "v0.4.0-beta5", "syncer": "l1infotreesync"}
2024-11-18T03:41:40.553Z        DEBUG   sync/evmdriver.go:100   handleNewBlock blockNum: 7099833 blockHash: 0x8a6d757fe377f87c170f999db6ece324cdea0068ac839e4db6c5d7a7cdf21bcc  {"pid": 40, "version": "v0.4.0-beta5", "syncer": "l1infotreesync"}
2024-11-18T03:41:40.553Z        INFO    l1infotreesync/processor.go:343 block 7099833 processed with 0 events   {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:41:40.710Z        INFO    datacommittee/datacommittee.go:283      received signature from 0xe492566270951f0630E5f3665900264f1E9232b1      {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:41:40.714Z        INFO    datacommittee/datacommittee.go:283      received signature from 0x78fE7a1Cc51c84a61cC172c4Fb8c666e84d930c0      {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:41:40.714Z        DEBUG   datacommittee/datacommittee.go:354      adding signature 0165779f9f39f6ce7f77ba7af88178ce181cca3850d46c75d418616d69b45a6a19944e19becc922655464dd688b0ab2274d244a542fcc18e3d53ea3f1fd8d61d1b from 0x78fE7a1Cc51c84a61cC172c4Fb8c666e84d930c0    {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:41:40.714Z        DEBUG   datacommittee/datacommittee.go:354      adding signature 1835e219ef55788ccd705d53703b6546be93e42b4d6e6d579fdd1129bbc1e33e5781922eb6d4180388095532b13ede5dde551195174f5acf0bb7e694e49b5acf1b from 0xe492566270951f0630E5f3665900264f1E9232b1    {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:41:40.714Z        DEBUG   datacommittee/datacommittee.go:358      adding addr 003d77de9535385942629b182eeb104e82ac3fba    {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:41:40.714Z        DEBUG   datacommittee/datacommittee.go:358      adding addr 3dc4c719718a34b36765a9691b9d72acc0da4737    {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:41:40.714Z        DEBUG   datacommittee/datacommittee.go:358      adding addr 78fe7a1cc51c84a61cc172c4fb8c666e84d930c0    {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:41:40.714Z        DEBUG   datacommittee/datacommittee.go:358      adding addr 9e07d72b16bdbf8870b79c2421912d677ccf1f0f    {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:41:40.714Z        DEBUG   datacommittee/datacommittee.go:358      adding addr e492566270951f0630e5f3665900264f1e9232b1    {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:41:40.714Z        DEBUG   datacommittee/datacommittee.go:361      full res 0165779f9f39f6ce7f77ba7af88178ce181cca3850d46c75d418616d69b45a6a19944e19becc922655464dd688b0ab2274d244a542fcc18e3d53ea3f1fd8d61d1b1835e219ef55788ccd705d53703b6546be93e42b4d6e6d579fdd1129bbc1e33e5781922eb6d4180388095532b13ede5dde551195174f5acf0bb7e694e49b5acf1b003d77de9535385942629b182eeb104e82ac3fba3dc4c719718a34b36765a9691b9d72acc0da473778fe7a1cc51c84a61cc172c4fb8c666e84d930c09e07d72b16bdbf8870b79c2421912d677ccf1f0fe492566270951f0630e5f3665900264f1e9232b1 {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:41:40.720Z        INFO    txbuilder/banana_validium.go:137        building banana sequence tx. AccInputHash: 0xc269d41773879024f823014826ff411750d4e40d11ab39368274ff02a4677af8   {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:41:41.434Z        INFO    sequencesender/sequencesender.go:523    latest virtual batch is 82      {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:41:42.054Z        DEBUG   ethtxmanager/ethtxmanager.go:482        found 0 monitored tx to process {"pid": 40}
2024-11-18T03:41:42.054Z        DEBUG   ethtxmanager/ethtxmanager.go:512        found 0 mined monitored tx to process   {"pid": 40}
2024-11-18T03:41:42.933Z        DEBUG   etherman/etherman.go:133        gasPrice chose: 1000068 {"pid": 40}
2024-11-18T03:41:42.934Z        INFO    ethtxmanager/ethtxmanager.go:327        created {"pid": 40, "types.MonitoredTx": "0xa87929898f4cc6ceb7f04839c84dfd49ac4cbabf65f464c6e85bc23bfbb8ca71", "createdAt": "0001-01-01T00:00:00.000Z"}
2024-11-18T03:41:42.934Z        INFO    sequencesender/ethtx.go:270     update transaction 0xa87929898f4cc6ceb7f04839c84dfd49ac4cbabf65f464c6e85bc23bfbb8ca71 to state created  {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:41:43.056Z        DEBUG   ethtxmanager/ethtxmanager.go:555        found 0 safe monitored tx to process    {"pid": 40}
2024-11-18T03:41:43.434Z        INFO    rpc/batch.go:46 Getting batch 319 from RPC      {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:41:43.434Z        INFO    sequencesender/sequencesender.go:282    updating virtual batch  {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:41:43.435Z        INFO    rpc/batch.go:93 Getting l2 block timestamp from RPC. Block hash: 0x3f9d3b97570bb1a765830ef53a9325e4ed26cd50213ac19296d78da11c6bfc77     {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:41:43.436Z        INFO    sequencesender/sequencesender.go:187    batch 319 is not closed yet     {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:41:44.554Z        INFO    sequencesender/sequencesender.go:523    latest virtual batch is 82      {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:41:44.554Z        INFO    sequencesender/sequencesender.go:295    updating tx results     {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:41:44.554Z        INFO    sequencesender/ethtx.go:201     1 tx results synchronized (1 in pending state)  {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:41:44.554Z        INFO    sequencesender/sequencesender.go:303    max number of pending txs (1) reached. Waiting for some to be completed {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:41:46.053Z        DEBUG   ethtxmanager/ethtxmanager.go:482        found 1 monitored tx to process {"pid": 40}
2024-11-18T03:41:46.053Z        INFO    ethtxmanager/ethtxmanager.go:592        processing      {"pid": 40, "monitoredTxId": "0xa87929898f4cc6ceb7f04839c84dfd49ac4cbabf65f464c6e85bc23bfbb8ca71", "createdAt": "2024-11-18T03:41:42.000Z", "from": "0x85472577b11837bC157F45643047Cb86136985f2", "to": "0x0d08b6F2f6c45a2EA67000C28b08D4591D2090ab"}
2024-11-18T03:41:46.053Z        DEBUG   ethtxmanager/ethtxmanager.go:607        unsigned tx 0xe329b68510423c2cc99fcf10b2b6b6a03de07422568d9ae744d71d9fd7e319ca created  {"pid": 40, "monitoredTxId": "0xa87929898f4cc6ceb7f04839c84dfd49ac4cbabf65f464c6e85bc23bfbb8ca71", "createdAt": "2024-11-18T03:41:42.000Z", "from": "0x85472577b11837bC157F45643047Cb86136985f2", "to": "0x0d08b6F2f6c45a2EA67000C28b08D4591D2090ab"}
2024-11-18T03:41:46.054Z        DEBUG   ethtxmanager/ethtxmanager.go:615        signed tx 0x7b50580b6256d80ac085d1964dde9dad0383d9850019124f9cd6c428e18bf515 created    {"pid": 40, "monitoredTxId": "0xa87929898f4cc6ceb7f04839c84dfd49ac4cbabf65f464c6e85bc23bfbb8ca71", "createdAt": "2024-11-18T03:41:42.000Z", "from": "0x85472577b11837bC157F45643047Cb86136985f2", "to": "0x0d08b6F2f6c45a2EA67000C28b08D4591D2090ab"}
2024-11-18T03:41:46.054Z        DEBUG   ethtxmanager/ethtxmanager.go:631        signed tx added to the monitored tx history     {"pid": 40, "monitoredTxId": "0xa87929898f4cc6ceb7f04839c84dfd49ac4cbabf65f464c6e85bc23bfbb8ca71", "createdAt": "2024-11-18T03:41:42.000Z", "from": "0x85472577b11837bC157F45643047Cb86136985f2", "to": "0x0d08b6F2f6c45a2EA67000C28b08D4591D2090ab"}
2024-11-18T03:41:46.933Z        DEBUG   ethtxmanager/ethtxmanager.go:638        signed tx not found in the network      {"pid": 40, "monitoredTxId": "0xa87929898f4cc6ceb7f04839c84dfd49ac4cbabf65f464c6e85bc23bfbb8ca71", "createdAt": "2024-11-18T03:41:42.000Z", "from": "0x85472577b11837bC157F45643047Cb86136985f2", "to": "0x0d08b6F2f6c45a2EA67000C28b08D4591D2090ab"}
2024-11-18T03:41:48.055Z        INFO    ethtxmanager/ethtxmanager.go:644        signed tx sent to the network: 0x7b50580b6256d80ac085d1964dde9dad0383d9850019124f9cd6c428e18bf515       {"pid": 40, "monitoredTxId": "0xa87929898f4cc6ceb7f04839c84dfd49ac4cbabf65f464c6e85bc23bfbb8ca71", "createdAt": "2024-11-18T03:41:42.000Z", "from": "0x85472577b11837bC157F45643047Cb86136985f2", "to": "0x0d08b6F2f6c45a2EA67000C28b08D4591D2090ab"}
2024-11-18T03:41:48.055Z        DEBUG   ethtxmanager/ethtxmanager.go:648        status changed to sent  {"pid": 40, "monitoredTxId": "0xa87929898f4cc6ceb7f04839c84dfd49ac4cbabf65f464c6e85bc23bfbb8ca71", "createdAt": "2024-11-18T03:41:42.000Z", "from": "0x85472577b11837bC157F45643047Cb86136985f2", "to": "0x0d08b6F2f6c45a2EA67000C28b08D4591D2090ab"}
2024-11-18T03:41:48.055Z        INFO    ethtxmanager/ethtxmanager.go:660        waiting signedTx to be mined... {"pid": 40}

https://sepolia.etherscan.io/tx/0x7b50580b6256d80ac085d1964dde9dad0383d9850019124f9cd6c428e18bf515

首次分析

交易发送完会经过 LatestBlock->SafeBlock->PendingBlock->FinalizedBlock 检查,等交易到达Finalized后,L2可以查到最新virtualBatchNumber

curl http://172.18.39.103:8123/ \
  -X POST \
  -H "Content-Type: application/json" \
  --data '{"method":"zkevm_virtualBatchNumber","params":[],"id":1,"jsonrpc":"2.0"}'

再次等待下一batch提交

2024-11-18T03:52:30.561Z        DEBUG   sync/evmdriver.go:100   handleNewBlock blockNum: 7099887 blockHash: 0x7ff38ef69691014544d333637710eec45028bcce01bb499eae2a90fe7fad234f  {"pid": 40, "version": "v0.4.0-beta5", "syncer": "l1infotreesync"}
2024-11-18T03:52:30.561Z        INFO    l1infotreesync/processor.go:343 block 7099887 processed with 0 events   {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:52:32.558Z        DEBUG   ethtxmanager/ethtxmanager.go:482        found 0 monitored tx to process {"pid": 40}
2024-11-18T03:52:32.558Z        DEBUG   ethtxmanager/ethtxmanager.go:512        found 0 mined monitored tx to process   {"pid": 40}
2024-11-18T03:52:32.641Z        DEBUG   ethtxmanager/ethtxmanager.go:555        found 1 safe monitored tx to process    {"pid": 40}
2024-11-18T03:52:33.434Z        INFO    rpc/batch.go:46 Getting batch 321 from RPC      {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:52:33.435Z        INFO    rpc/batch.go:93 Getting l2 block timestamp from RPC. Block hash: 0xbe0ad523b194365a43f235349d06694872a3993985e012b16ce5bbaa6fb61446     {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:52:33.436Z        INFO    sequencesender/sequencesender.go:187    batch 321 is not closed yet     {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.140Z        DEBUG   ethtxmanager/ethtxmanager.go:482        found 0 monitored tx to process {"pid": 40}
2024-11-18T03:52:34.140Z        DEBUG   ethtxmanager/ethtxmanager.go:512        found 0 mined monitored tx to process   {"pid": 40}
2024-11-18T03:52:34.556Z        DEBUG   common/common.go:88     OldAccInputHash: 0xc269d41773879024f823014826ff411750d4e40d11ab39368274ff02a4677af8     {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.556Z        DEBUG   common/common.go:89     BatchHashData: 6ee24005ef15f2a20eb634ae9015d296f9c6e62aee35f572eb6bbb77a99169ff {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.556Z        DEBUG   common/common.go:90     L1InfoRoot: 0xc2e6e638276e241489b75cb361086e808b996349c06895a9a31e821c23205313  {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.556Z        DEBUG   common/common.go:91     TimeStampLimit: 1731901795      {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.557Z        DEBUG   common/common.go:92     Sequencer Address: 0x85472577b11837bC157F45643047Cb86136985f2   {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.557Z        DEBUG   common/common.go:93     Forced BlockHashL1: 0x0000000000000000000000000000000000000000000000000000000000000000  {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.557Z        DEBUG   common/common.go:94     CalculatedAccInputHash: 0x0714950ffe5325d32e0e8ac405b254baef3ba8641e986bbd4bb80562dc82b5e6      {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.557Z        DEBUG   common/common.go:88     OldAccInputHash: 0x0714950ffe5325d32e0e8ac405b254baef3ba8641e986bbd4bb80562dc82b5e6     {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.557Z        DEBUG   common/common.go:89     BatchHashData: 2b5ef3310d5a0ce9e89a84ea9a18be3b2632f77964fbdb85e82cec09a5a9c6a9 {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.557Z        DEBUG   common/common.go:90     L1InfoRoot: 0xc2e6e638276e241489b75cb361086e808b996349c06895a9a31e821c23205313  {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.557Z        DEBUG   common/common.go:91     TimeStampLimit: 1731901795      {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.557Z        DEBUG   common/common.go:92     Sequencer Address: 0x85472577b11837bC157F45643047Cb86136985f2   {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.557Z        DEBUG   common/common.go:93     Forced BlockHashL1: 0x0000000000000000000000000000000000000000000000000000000000000000  {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.557Z        DEBUG   common/common.go:94     CalculatedAccInputHash: 0x23a7726c7ae88735622bc47e3b107a7f24ad6eb100aeeb95a14b0b7954537216      {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.558Z        DEBUG   sequencesender/sequencesender.go:321    Seq/Banana: L2Coinbase: 0x85472577b11837bC157F45643047Cb86136985f2, OldAccInputHash: 307863323639643431373733383739303234663832333031343832366666343131373530643465343064313161623339333638323734666630326134363737616638, AccInputHash: 307832336137373236633761653838373335363232626334376533623130376137663234616436656231303061656562393561313462306237393534353337323136, L1InfoRoot: 307863326536653633383237366532343134383962373563623336313038366538303862393936333439633036383935613961333165383231633233323035333133, MaxSequenceTimestamp: 1731901795, IndexL1InfoRoot: 5
        Batch 0: Batch/Banana: LastCoinbase: 0x85472577b11837bC157F45643047Cb86136985f2, ForcedBatchTimestamp: 0, ForcedGlobalExitRoot: 307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030, ForcedBlockHashL1: 307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030, L2Data: 0b00000006000000000b0000000600000000ef8293a3843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808069017e8b83586de1f92e4b3ead48d9da0b54bd8bf64482b5cb59b3c6a21e85a021b1812696389e3e50426b7d86c08baf311c5134a589f08d3500fd0d16f834451bff0b0000000600000000ef8293a4843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080e0ac417a131546b6a1ecfb3652645060e471ab401245eeb4e40e306cd83d145e18b8ed06b2728eda6c1efc7ac63b0695cb88b11557f6ea5c972880f5ad6cf19e1cff0b00000006000000000b0000000700000000ef8293a5843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808058750ab1ce1db175f887b9e11751f6c72288e49bf63801521a8b48b525febae16183692faec3bf817cd287833ffaa488c2f3dbf212e3eb245f19ee5a619ae3201cff0b00000006000000000b0000000600000000ef8293a6843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808073ca1459a40914dff9d51d354456b46812c8f74644592f3a66ef994c805015ef59eafec8e95954b4ce467ba0d9baf08dbe1656ed69a9132fb506a0811b9ad40e1bff0b0000000600000000ef8293a7843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080706ae50515290b5767adc5f0e59cdeda5528e7d0eefb2b545deca4c9deaabf3e4fbb71c069307d6a4f632ca39aaa4b45956eb4bdc73fee542e2257156557a65a1cff0b00000006000000000b0000000600000000ef8293a8843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808071b79be4e078ea12c3025250d136f4554beed52ae9742f9b677e8c279e2ac265649aa65c8685ff15b4e5881c05edfd34f548bdc0df2a7de01c92a250818116871bff0b00000006000000000b0000000600000000ef8293a9843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280804577dc26ef239736cd8db636c94fb5bfcc0a935df9e84a61c1b3fa0212ac7ba6285500fd95db9738815e702ac1ce1fb1e9410050cf5e71046ea970ab31c594da1bff0b0000000600000000ef8293aa843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280800ea637c9c98c865aa943e3b5b0b612c053d8e0107788c60e8ca4a2430677b29c0e05a9143bcd68d29f923ff312badc7ee99d7e09e2f4d1a1e5398e734bfab3611bff0b00000006000000000b0000000600000000ef8293ab843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080396772ecfb3593a798533eb9e7f5a0fcf5922fe35c6e10e53de1ac88a40345f03571289a5053eb5c333f8af9893cf1303160b164ae1b780fe4a3cdb5d45870ec1cff0b00000006000000000b0000000600000000ef8293ac843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080e854f278a2b1cfbf244ca15280916ea17910a1c1ec00e25f8fc780dda6a9b0ec2bd8d59b9785d918d2efe83fa58d2cc9cbafd5bc39ca218848d58b1101d0b1111bff0b0000000600000000ef8293ad843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080a64d69b613b2cd99c9524b3d08b54715611b746a70e3d0966fc3e971a97f1e8376de45f6d9c88da9c878067b0edde1ad686f032d89a2eed6ac04ec58f308c53a1cff0b00000006000000000b0000000600000000ef8293ae843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080fdcc0e1b66b76a6496068ec3e7cdd38bca154f80327662d2a7411155805b1ff00c936b42418e1e094f030b9e299c62fdc48f4430e5cef06e708f04e47da74fd91bff0b00000006000000000b0000000600000000ef8293af843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080e0ac5b427be39d12ca0469a438a9e58840131889b8d1454f70f5deaed47d5f132d28440328156356cdb9752b7074403d49e99d63b90a56e857b8308a31da570e1cff0b0000000700000000ef8293b0843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080a3ee7c52446b770e0570cb540e97e5711391cd507fbabf173073ba95d1178c602026fd0ed2d3a1cfa622ca3bebf04c4cdec240fa1e5f867f6f684c9e8165da241cff0b00000006000000000b0000000600000000ef8293b1843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808086207dc67674698d2b825023b83edafff9e268c2b2c58ce8bfda58d6faca64ce77b55de14f8cf8ec30595e66ea19fbf938d2e568b7a29f640d8ae8c033c0fba51cff0b00000006000000000b0000000600000000ef8293b2843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808057c0ca3249580c4c606f330785e881df27c16d19ee1da20e2289692a75ebeff547d5b27aa0788eafe99ba080e7961b14b9eef4b406b97dc2414af79be3342b911bff0b0000000600000000ef8293b3843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280801e23b08c620995e9806946380de701a26f55f16b8e33713d1b8ea759d559f7f956c6142519267bf599138b27a531b3b28e846e7a58a28b25d054bcd68d8fc89c1bff0b00000006000000000b0000000600000000ef8293b4843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080b6fec13a96a1dee1f9ce460edd1b148aca811c376d0fee2e0fe163cfc2765d417ff159a37efd4839bda12896f4fb9b17a85fffa1784742026537ffec182ba8751cff0b00000006000000000b0000000600000000ef8293b5843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080f8bedcff7fc014bc0c0dd8963e3b46c66af1abc0e564d19f6460c1f8ca09d83f19a97829cb80b6c94706654c66c55454999747f7d0e401d7a6f9c11cb4f1d6401cff0b0000000600000000ef8293b6843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080dc5fc3da1f709be5b98cd8603126b70be35000d2f65b356f7a6c80463192d61300954908bd08255c829d365e1b980aba6d83a43d4023d2674ce3fdf1c3b7ca8c1bff0b00000006000000000b0000000600000000ef8293b7843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280809e6b05e760b5253763691f38dee1cf48844adbd46fca61797e838cd9ae376ef44accce44fac3d3e1d7e30a88cbe369e1cda1a1d86dd4f59c7bd77eed7ab225da1cff0b0000000600000000ef8293b8843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280800bc46c0670576daf044a50d535a3cb11af63b01c4852ebc20dcbfb2eb29ae66e7d977a76ce143107cd960e65c465c3a17bc254fff2a4934af4ed30c86d2b62bb1cff0b00000006000000000b0000000600000000ef8293b9843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080fbaa855ed1b4a0e59cccfe263e32e42776744f00f3714d7191e6f37e36883c415fe9f3d49f30892a91f18f4d300414e0f4157e93b4dc34fb9445d7bd730c094b1cff0b00000006000000000b0000000600000000ef8293ba843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280801f7e8bb1ad4fbe099840310709429b3c552edc4c5b6d3573be429d0b1bd276a254ba9ffc235c52786a08c88b323894c3a4997f4f166a0fc3717406e69a11790e1cff0b0000000600000000ef8293bb843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080c7d7468951132f2e0f0c0acc6fa850a1d7b652ee01a2e81fd9c37ebc7b85157a14d00931ec3d551eea4c014efb44937ee9d189ca71745f42f454c1f59e4837781cff0b00000007000000000b0000000600000000ef8293bc843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808075ce0f990f2c260931b2b5ec4206f94b5cc6e4a2e4a2618885e9a3d199c1e42b058ec6d40cc617b6f123104d8ee3d993c2aceb9f56a402e1df3b4d3d0f36ea931bff0b00000006000000000b0000000600000000ef8293bd843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080ebb31eb9d202b6a1f0aa4c6bdb68bf18332c832161ca515e4fd22b23f48b59d5363c9ca2ac7c4e8085d884b5bd84b4c2e79cc5b0410afce6be35d35ee4edfca81bff0b0000000600000000ef8293be843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080f7cbd4319cf256d2b79670c2ff3686d56c85c1f7a265a37f3985c91f3a3472030430a82b92751521822c16556dd473e17029d7200a19b6b95b9ff62d7c941aad1bff0b00000006000000000b0000000600000000ef8293bf843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808059f78f4e1aca1b48e929251838777278f4576ed666c2727e3c9d12b131d05c0d23fb54fda6d61b40d397bcc4129059879de3c03486bdc6bcfe8e179fe08468a41bff0b00000006000000000b0000000600000000ef8293c0843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280807e7d29e278a369ee74217d7d17f7706976797eb6cd913c7206b29748f31486404ec6c3f60a9567e276d6efb2021b11dcb391065a9e154cafae16cc21b79829a11bff, LastL2BLockTimestamp: 1731901492, BatchNumber: 319, GlobalExitRoot: 307834373430386264326665353162393139343033643066376338663633303433636464303434633162353231313930616266636230306466656436343937396430, L1InfoTreeIndex: 0
        Batch 1: Batch/Banana: LastCoinbase: 0x85472577b11837bC157F45643047Cb86136985f2, ForcedBatchTimestamp: 0, ForcedGlobalExitRoot: 307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030, ForcedBlockHashL1: 307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030, L2Data: 0b0000000600000000ef8293c1843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280800fb523f872127c34c4fd52642a9a3ec151aed913874df68cf0d7b5b99d6faa0d2889322e8cafe90a55f9854f525f3cfcded603888d2f39d8b3308eb75c5ecf501bff0b00000006000000000b0000000600000000ef8293c2843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080111a9733f105d513eb7236077be87c8010f28c2df58b1e9df8a7a4eb56272a4e31b5cd2144e9981d4f7dbc25ab1f1e9eee37fdf6fb66d1d60410b834fcb5cefc1cff0b00000006000000000b0000000700000000ef8293c3843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080db03fb0c3d24e8d2703f5092ce435517aaecb9d69bce43b829683849affce6ed285773e2ad783deea2ccabb0c0cb8432efc681ff21811ff640b029fdac5787b11bff0b0000000600000000ef8293c4843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080e61e08e8e3639b1bb0701a20edff04b3507e866ad18512201f436d7847c816d75353a34853685f2fa3d8e4cc6ac6b11948b3466e1e7ba9ff68333fdd9479a8b01cff0b00000006000000000b0000000600000000ef8293c5843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280804000e7ccac1b5fa8bbebf22ae8d857c58f7c2e1a0da2c4abd8c6a2db3b48e3cc21b666a752a1c6127c96ad9eebeaf0b97103ce54c97b5b99ee5d8530a2c7b7401bff0b00000006000000000b0000000600000000ef8293c6843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808045182bc184181e851845e2d493a3fad5048b3bbf521cc21d7bfd7df1b30e20f61b91f1a39faebb01f00444ccab92e2e0ea0ff3c300c3f382b11755aeee4b31d71cff0b0000000600000000ef8293c7843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280808bc79fa6149be9d5c7cdd44fe0011850e72e6db5d441ff5983f280e61bdd1b5e5d9caa95d1844f8a2aa88599e038811fbd94e48e68d3a2603a49a7e479b648df1cff0b00000006000000000b0000000600000000ef8293c8843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080d2957b80e7a27d3cf61d97580844689d6178f2a3990e5857ba35b9a369c720092c7f0f649e8db13aa3b0929fdfa40a5446de87ce7ec49459f0256605e4ab37161bff0b00000006000000000b0000000600000000ef8293c9843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280808c5e1d826473c625a5dbd2233e2e0fea4b1aba50abc22f50ef70f426dceefdc2022533a53e268460ab33dc71750d8895d4ee42fd9fcfdf5c358c57af84149b7d1cff0b0000000600000000ef8293ca843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280802cff0a3927fe8d1823d6dede5419424eb6882d289456152a6b235950affe273f657c9353671f9797be8180cd4adb92c7a8e3c33e2905d0f0213be2febf8cd8f81bff0b00000006000000000b0000000600000000ef8293cb843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808005f57fbd41a2fe48d1969d92f2a3f5348d7f6122f9b5d48ed81305267809064b78516c58db32183073dc29c1f423259b7baf856b2208d8c180c37ffabdfe8e7a1cff0b0000000600000000ef8293cc843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080648e50c93f4200dfcb255b725038603e1c3fde7293e79c5396a1be9392f0b4653a682aa6d273cbb276c5703c34c113e9063bb96c16bbc378859e731a5bcc47f91bff0b00000006000000000b0000000600000000ef8293cd843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080f9d20f1ac0f2b8d03560a579298145d87712a7c1f549b2f8de2b1bb61dd36ea11217c1e141bd544c362939388c8c4f41c15917fd2806583f250f4001736d75121bff0b00000006000000000b0000000600000000ef8293ce843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080e8a7139f82f089f3dd0f07d7d581a2122ad5f84f4c9fc459a568dfc3ab6f3db54745e904b88303ab0dcfb91c52794470fd3f5581ae1b791ffb1fa1d33cb44dfd1bff0b0000000700000000ef8293cf843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080d321295243c825bb84afdb6093578da892c94bfa75613b52664b38d7910b73571c4e927f7258e8796d46c94dd2c867795514c6510333af2bd7dd7645c37664511bff0b00000006000000000b0000000600000000ef8293d0843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080d8b690a26c82c0516ae074ae8644327a6ab686ea1cb2bfc45f25a01528256ca67feb033e64417034b20b3301723abee6d279280ae571ac709dccafa6be8e43081cff0b00000006000000000b0000000600000000ef8293d1843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808084b1225e57976e55f7574a076a41947a3d7a540eec860645294281dc20860df91e62c80b2e9ea786562377521128334878388cd065be53fe03eb8df40646b96b1cff0b0000000600000000ef8293d2843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280808b0c04ceab5920a87962bb901ec87b4281c59cb9b67a2c2149dd349bbbddafbc387303a953ef01f2de803387338e5d997539f36d9d32f8521561a6565d4b0e0b1bff0b00000006000000000b0000000600000000ef8293d3843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280801414a699b2175ff01421fead4580cf3e8448325760140657f20de529eb2bbace2bc2108e52fb6cc9c6df86888d8cc5f89ca0cc14fda6b492064c0b9fffdf4ed81cff0b00000006000000000b0000000600000000ef8293d4843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808055987366b3d002555d69c3fdcc3b3bf18210cc4bc46fde2ef5a22121debf76bb450f9c4e3cbb49b778b05257565c366bd0d96e2869db71c79c7ed701298bbc871bff0b0000000600000000ef8293d5843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080447ff0953d8d1802daf71ea45813b4106021effe36385f94017c0f081a8a2f652dd74dd4b782877e069e265e1ab409544a7f5f0ea579703be7b77e1af1e286451cff0b00000006000000000b0000000600000000ef8293d6843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080db6d636cb3274b47a260710356ce5188e9d1b5fadd5d33b7761d9d207a22a567185612f41d744ab80619626389d84adbf2674a9d4a7d6c194e224885b31df1b61bff0b00000006000000000b0000000600000000ef8293d7843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808054369061659795879f067682b40414f595039ddf08fd0b592c8764ccb9990ac751c05b67758a2b8aea20fdd4dcb2ecf85cccdfb3ffc21643184a210591d3d6971bff0b0000000600000000ef8293d8843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808059a93e010411a723c9addd5859af11d2dbda304b2b912118d92d58cd1e5cebd96a45600016404a55cd3828e679c5c37cfa73c91824b24286b703176ab58ebdf51bff0b00000006000000000b0000000700000000ef8293d9843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080679f461633bb779c9f1eb7ac5830e317b5469045cdc4d5f2dd721b793e3980115a0579c067c3ef430fd24558fd0e83c547a6ca6eac4e7ddbd6b4e2968913dcb31bff0b00000006000000000b0000000600000000ef8293da843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080103fb9e491a22e600ae3e0c0f33ad31a9a0e462eff7e80fdbddb4801ba07bce71869d24af24ee0073ddbe9a3a28c77b6b151a7d5767cbffd18ac05c1d3a5f6c51cff0b0000000600000000ef8293db843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080138c13e8702d8f87dab6c2519cb822dd48a1c93dd099735837679e08f7ca06651eee060546906f03769f3965b1682c5a02f0e1e8b647a0c45d446323becaf9881cff0b00000006000000000b0000000600000000ef8293dc843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080be1411793b75b664f102890913e63c3461d51d857d57a34e6cce45b2d6cebe182d1b410cbb5a6f23b74c3184f092dad358f9394ba05516cd1c4b93e01caddac71cff0b00000006000000000b0000000600000000ef8293dd843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080f69f581e0baf6b19245cab4ab153c74b55ba9a014abd99a1141794b11f40fcc31fb21a0ef19ba58c41d2ef6940c0a1a34f4c7e82a83ff640a00ba8783fa23e6a1cff0b0000000600000000ef8293de843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080d955debda7e36c4fff6ea74f39bcc0d34bbc07df4319b6b65e23251a7feedce659ff3fbefa599db1f3f76bb4b54e30fc6a158c2c8f0a6472c82da4505e9c94881bff0b0000000600000000, LastL2BLockTimestamp: 1731901795, BatchNumber: 320, GlobalExitRoot: 307834373430386264326665353162393139343033643066376338663633303433636464303434633162353231313930616266636230306466656436343937396430, L1InfoTreeIndex: 0        {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.558Z        INFO    sequencesender/sequencesender.go:322    sending sequences to L1. From batch 319 to batch 320    {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.634Z        INFO    sequencesender/sequencesender.go:404    time difference for L1 block block timestamp exceeds 30 seconds, proceeding (batch number: 320, last l2 block ts: 1731901795)   {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.634Z        INFO    sequencesender/sequencesender.go:404    time difference for current time exceeds 30 seconds, proceeding (batch number: 320, last l2 block ts: 1731901795)       {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.634Z        DEBUG   sequencesender/sequencesender.go:351    Seq/Banana: L2Coinbase: 0x85472577b11837bC157F45643047Cb86136985f2, OldAccInputHash: 307863323639643431373733383739303234663832333031343832366666343131373530643465343064313161623339333638323734666630326134363737616638, AccInputHash: 307832336137373236633761653838373335363232626334376533623130376137663234616436656231303061656562393561313462306237393534353337323136, L1InfoRoot: 307863326536653633383237366532343134383962373563623336313038366538303862393936333439633036383935613961333165383231633233323035333133, MaxSequenceTimestamp: 1731901795, IndexL1InfoRoot: 5
        Batch 0: Batch/Banana: LastCoinbase: 0x85472577b11837bC157F45643047Cb86136985f2, ForcedBatchTimestamp: 0, ForcedGlobalExitRoot: 307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030, ForcedBlockHashL1: 307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030, L2Data: 0b00000006000000000b0000000600000000ef8293a3843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808069017e8b83586de1f92e4b3ead48d9da0b54bd8bf64482b5cb59b3c6a21e85a021b1812696389e3e50426b7d86c08baf311c5134a589f08d3500fd0d16f834451bff0b0000000600000000ef8293a4843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080e0ac417a131546b6a1ecfb3652645060e471ab401245eeb4e40e306cd83d145e18b8ed06b2728eda6c1efc7ac63b0695cb88b11557f6ea5c972880f5ad6cf19e1cff0b00000006000000000b0000000700000000ef8293a5843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808058750ab1ce1db175f887b9e11751f6c72288e49bf63801521a8b48b525febae16183692faec3bf817cd287833ffaa488c2f3dbf212e3eb245f19ee5a619ae3201cff0b00000006000000000b0000000600000000ef8293a6843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808073ca1459a40914dff9d51d354456b46812c8f74644592f3a66ef994c805015ef59eafec8e95954b4ce467ba0d9baf08dbe1656ed69a9132fb506a0811b9ad40e1bff0b0000000600000000ef8293a7843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080706ae50515290b5767adc5f0e59cdeda5528e7d0eefb2b545deca4c9deaabf3e4fbb71c069307d6a4f632ca39aaa4b45956eb4bdc73fee542e2257156557a65a1cff0b00000006000000000b0000000600000000ef8293a8843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808071b79be4e078ea12c3025250d136f4554beed52ae9742f9b677e8c279e2ac265649aa65c8685ff15b4e5881c05edfd34f548bdc0df2a7de01c92a250818116871bff0b00000006000000000b0000000600000000ef8293a9843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280804577dc26ef239736cd8db636c94fb5bfcc0a935df9e84a61c1b3fa0212ac7ba6285500fd95db9738815e702ac1ce1fb1e9410050cf5e71046ea970ab31c594da1bff0b0000000600000000ef8293aa843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280800ea637c9c98c865aa943e3b5b0b612c053d8e0107788c60e8ca4a2430677b29c0e05a9143bcd68d29f923ff312badc7ee99d7e09e2f4d1a1e5398e734bfab3611bff0b00000006000000000b0000000600000000ef8293ab843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080396772ecfb3593a798533eb9e7f5a0fcf5922fe35c6e10e53de1ac88a40345f03571289a5053eb5c333f8af9893cf1303160b164ae1b780fe4a3cdb5d45870ec1cff0b00000006000000000b0000000600000000ef8293ac843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080e854f278a2b1cfbf244ca15280916ea17910a1c1ec00e25f8fc780dda6a9b0ec2bd8d59b9785d918d2efe83fa58d2cc9cbafd5bc39ca218848d58b1101d0b1111bff0b0000000600000000ef8293ad843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080a64d69b613b2cd99c9524b3d08b54715611b746a70e3d0966fc3e971a97f1e8376de45f6d9c88da9c878067b0edde1ad686f032d89a2eed6ac04ec58f308c53a1cff0b00000006000000000b0000000600000000ef8293ae843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080fdcc0e1b66b76a6496068ec3e7cdd38bca154f80327662d2a7411155805b1ff00c936b42418e1e094f030b9e299c62fdc48f4430e5cef06e708f04e47da74fd91bff0b00000006000000000b0000000600000000ef8293af843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080e0ac5b427be39d12ca0469a438a9e58840131889b8d1454f70f5deaed47d5f132d28440328156356cdb9752b7074403d49e99d63b90a56e857b8308a31da570e1cff0b0000000700000000ef8293b0843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080a3ee7c52446b770e0570cb540e97e5711391cd507fbabf173073ba95d1178c602026fd0ed2d3a1cfa622ca3bebf04c4cdec240fa1e5f867f6f684c9e8165da241cff0b00000006000000000b0000000600000000ef8293b1843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808086207dc67674698d2b825023b83edafff9e268c2b2c58ce8bfda58d6faca64ce77b55de14f8cf8ec30595e66ea19fbf938d2e568b7a29f640d8ae8c033c0fba51cff0b00000006000000000b0000000600000000ef8293b2843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808057c0ca3249580c4c606f330785e881df27c16d19ee1da20e2289692a75ebeff547d5b27aa0788eafe99ba080e7961b14b9eef4b406b97dc2414af79be3342b911bff0b0000000600000000ef8293b3843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280801e23b08c620995e9806946380de701a26f55f16b8e33713d1b8ea759d559f7f956c6142519267bf599138b27a531b3b28e846e7a58a28b25d054bcd68d8fc89c1bff0b00000006000000000b0000000600000000ef8293b4843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080b6fec13a96a1dee1f9ce460edd1b148aca811c376d0fee2e0fe163cfc2765d417ff159a37efd4839bda12896f4fb9b17a85fffa1784742026537ffec182ba8751cff0b00000006000000000b0000000600000000ef8293b5843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080f8bedcff7fc014bc0c0dd8963e3b46c66af1abc0e564d19f6460c1f8ca09d83f19a97829cb80b6c94706654c66c55454999747f7d0e401d7a6f9c11cb4f1d6401cff0b0000000600000000ef8293b6843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080dc5fc3da1f709be5b98cd8603126b70be35000d2f65b356f7a6c80463192d61300954908bd08255c829d365e1b980aba6d83a43d4023d2674ce3fdf1c3b7ca8c1bff0b00000006000000000b0000000600000000ef8293b7843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280809e6b05e760b5253763691f38dee1cf48844adbd46fca61797e838cd9ae376ef44accce44fac3d3e1d7e30a88cbe369e1cda1a1d86dd4f59c7bd77eed7ab225da1cff0b0000000600000000ef8293b8843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280800bc46c0670576daf044a50d535a3cb11af63b01c4852ebc20dcbfb2eb29ae66e7d977a76ce143107cd960e65c465c3a17bc254fff2a4934af4ed30c86d2b62bb1cff0b00000006000000000b0000000600000000ef8293b9843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080fbaa855ed1b4a0e59cccfe263e32e42776744f00f3714d7191e6f37e36883c415fe9f3d49f30892a91f18f4d300414e0f4157e93b4dc34fb9445d7bd730c094b1cff0b00000006000000000b0000000600000000ef8293ba843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280801f7e8bb1ad4fbe099840310709429b3c552edc4c5b6d3573be429d0b1bd276a254ba9ffc235c52786a08c88b323894c3a4997f4f166a0fc3717406e69a11790e1cff0b0000000600000000ef8293bb843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080c7d7468951132f2e0f0c0acc6fa850a1d7b652ee01a2e81fd9c37ebc7b85157a14d00931ec3d551eea4c014efb44937ee9d189ca71745f42f454c1f59e4837781cff0b00000007000000000b0000000600000000ef8293bc843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808075ce0f990f2c260931b2b5ec4206f94b5cc6e4a2e4a2618885e9a3d199c1e42b058ec6d40cc617b6f123104d8ee3d993c2aceb9f56a402e1df3b4d3d0f36ea931bff0b00000006000000000b0000000600000000ef8293bd843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080ebb31eb9d202b6a1f0aa4c6bdb68bf18332c832161ca515e4fd22b23f48b59d5363c9ca2ac7c4e8085d884b5bd84b4c2e79cc5b0410afce6be35d35ee4edfca81bff0b0000000600000000ef8293be843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080f7cbd4319cf256d2b79670c2ff3686d56c85c1f7a265a37f3985c91f3a3472030430a82b92751521822c16556dd473e17029d7200a19b6b95b9ff62d7c941aad1bff0b00000006000000000b0000000600000000ef8293bf843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808059f78f4e1aca1b48e929251838777278f4576ed666c2727e3c9d12b131d05c0d23fb54fda6d61b40d397bcc4129059879de3c03486bdc6bcfe8e179fe08468a41bff0b00000006000000000b0000000600000000ef8293c0843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280807e7d29e278a369ee74217d7d17f7706976797eb6cd913c7206b29748f31486404ec6c3f60a9567e276d6efb2021b11dcb391065a9e154cafae16cc21b79829a11bff, LastL2BLockTimestamp: 1731901492, BatchNumber: 319, GlobalExitRoot: 307834373430386264326665353162393139343033643066376338663633303433636464303434633162353231313930616266636230306466656436343937396430, L1InfoTreeIndex: 0
        Batch 1: Batch/Banana: LastCoinbase: 0x85472577b11837bC157F45643047Cb86136985f2, ForcedBatchTimestamp: 0, ForcedGlobalExitRoot: 307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030, ForcedBlockHashL1: 307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030, L2Data: 0b0000000600000000ef8293c1843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280800fb523f872127c34c4fd52642a9a3ec151aed913874df68cf0d7b5b99d6faa0d2889322e8cafe90a55f9854f525f3cfcded603888d2f39d8b3308eb75c5ecf501bff0b00000006000000000b0000000600000000ef8293c2843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080111a9733f105d513eb7236077be87c8010f28c2df58b1e9df8a7a4eb56272a4e31b5cd2144e9981d4f7dbc25ab1f1e9eee37fdf6fb66d1d60410b834fcb5cefc1cff0b00000006000000000b0000000700000000ef8293c3843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080db03fb0c3d24e8d2703f5092ce435517aaecb9d69bce43b829683849affce6ed285773e2ad783deea2ccabb0c0cb8432efc681ff21811ff640b029fdac5787b11bff0b0000000600000000ef8293c4843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080e61e08e8e3639b1bb0701a20edff04b3507e866ad18512201f436d7847c816d75353a34853685f2fa3d8e4cc6ac6b11948b3466e1e7ba9ff68333fdd9479a8b01cff0b00000006000000000b0000000600000000ef8293c5843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280804000e7ccac1b5fa8bbebf22ae8d857c58f7c2e1a0da2c4abd8c6a2db3b48e3cc21b666a752a1c6127c96ad9eebeaf0b97103ce54c97b5b99ee5d8530a2c7b7401bff0b00000006000000000b0000000600000000ef8293c6843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808045182bc184181e851845e2d493a3fad5048b3bbf521cc21d7bfd7df1b30e20f61b91f1a39faebb01f00444ccab92e2e0ea0ff3c300c3f382b11755aeee4b31d71cff0b0000000600000000ef8293c7843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280808bc79fa6149be9d5c7cdd44fe0011850e72e6db5d441ff5983f280e61bdd1b5e5d9caa95d1844f8a2aa88599e038811fbd94e48e68d3a2603a49a7e479b648df1cff0b00000006000000000b0000000600000000ef8293c8843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080d2957b80e7a27d3cf61d97580844689d6178f2a3990e5857ba35b9a369c720092c7f0f649e8db13aa3b0929fdfa40a5446de87ce7ec49459f0256605e4ab37161bff0b00000006000000000b0000000600000000ef8293c9843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280808c5e1d826473c625a5dbd2233e2e0fea4b1aba50abc22f50ef70f426dceefdc2022533a53e268460ab33dc71750d8895d4ee42fd9fcfdf5c358c57af84149b7d1cff0b0000000600000000ef8293ca843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280802cff0a3927fe8d1823d6dede5419424eb6882d289456152a6b235950affe273f657c9353671f9797be8180cd4adb92c7a8e3c33e2905d0f0213be2febf8cd8f81bff0b00000006000000000b0000000600000000ef8293cb843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808005f57fbd41a2fe48d1969d92f2a3f5348d7f6122f9b5d48ed81305267809064b78516c58db32183073dc29c1f423259b7baf856b2208d8c180c37ffabdfe8e7a1cff0b0000000600000000ef8293cc843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080648e50c93f4200dfcb255b725038603e1c3fde7293e79c5396a1be9392f0b4653a682aa6d273cbb276c5703c34c113e9063bb96c16bbc378859e731a5bcc47f91bff0b00000006000000000b0000000600000000ef8293cd843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080f9d20f1ac0f2b8d03560a579298145d87712a7c1f549b2f8de2b1bb61dd36ea11217c1e141bd544c362939388c8c4f41c15917fd2806583f250f4001736d75121bff0b00000006000000000b0000000600000000ef8293ce843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080e8a7139f82f089f3dd0f07d7d581a2122ad5f84f4c9fc459a568dfc3ab6f3db54745e904b88303ab0dcfb91c52794470fd3f5581ae1b791ffb1fa1d33cb44dfd1bff0b0000000700000000ef8293cf843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080d321295243c825bb84afdb6093578da892c94bfa75613b52664b38d7910b73571c4e927f7258e8796d46c94dd2c867795514c6510333af2bd7dd7645c37664511bff0b00000006000000000b0000000600000000ef8293d0843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080d8b690a26c82c0516ae074ae8644327a6ab686ea1cb2bfc45f25a01528256ca67feb033e64417034b20b3301723abee6d279280ae571ac709dccafa6be8e43081cff0b00000006000000000b0000000600000000ef8293d1843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808084b1225e57976e55f7574a076a41947a3d7a540eec860645294281dc20860df91e62c80b2e9ea786562377521128334878388cd065be53fe03eb8df40646b96b1cff0b0000000600000000ef8293d2843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280808b0c04ceab5920a87962bb901ec87b4281c59cb9b67a2c2149dd349bbbddafbc387303a953ef01f2de803387338e5d997539f36d9d32f8521561a6565d4b0e0b1bff0b00000006000000000b0000000600000000ef8293d3843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b2280801414a699b2175ff01421fead4580cf3e8448325760140657f20de529eb2bbace2bc2108e52fb6cc9c6df86888d8cc5f89ca0cc14fda6b492064c0b9fffdf4ed81cff0b00000006000000000b0000000600000000ef8293d4843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808055987366b3d002555d69c3fdcc3b3bf18210cc4bc46fde2ef5a22121debf76bb450f9c4e3cbb49b778b05257565c366bd0d96e2869db71c79c7ed701298bbc871bff0b0000000600000000ef8293d5843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080447ff0953d8d1802daf71ea45813b4106021effe36385f94017c0f081a8a2f652dd74dd4b782877e069e265e1ab409544a7f5f0ea579703be7b77e1af1e286451cff0b00000006000000000b0000000600000000ef8293d6843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080db6d636cb3274b47a260710356ce5188e9d1b5fadd5d33b7761d9d207a22a567185612f41d744ab80619626389d84adbf2674a9d4a7d6c194e224885b31df1b61bff0b00000006000000000b0000000600000000ef8293d7843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808054369061659795879f067682b40414f595039ddf08fd0b592c8764ccb9990ac751c05b67758a2b8aea20fdd4dcb2ecf85cccdfb3ffc21643184a210591d3d6971bff0b0000000600000000ef8293d8843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b22808059a93e010411a723c9addd5859af11d2dbda304b2b912118d92d58cd1e5cebd96a45600016404a55cd3828e679c5c37cfa73c91824b24286b703176ab58ebdf51bff0b00000006000000000b0000000700000000ef8293d9843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080679f461633bb779c9f1eb7ac5830e317b5469045cdc4d5f2dd721b793e3980115a0579c067c3ef430fd24558fd0e83c547a6ca6eac4e7ddbd6b4e2968913dcb31bff0b00000006000000000b0000000600000000ef8293da843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080103fb9e491a22e600ae3e0c0f33ad31a9a0e462eff7e80fdbddb4801ba07bce71869d24af24ee0073ddbe9a3a28c77b6b151a7d5767cbffd18ac05c1d3a5f6c51cff0b0000000600000000ef8293db843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080138c13e8702d8f87dab6c2519cb822dd48a1c93dd099735837679e08f7ca06651eee060546906f03769f3965b1682c5a02f0e1e8b647a0c45d446323becaf9881cff0b00000006000000000b0000000600000000ef8293dc843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080be1411793b75b664f102890913e63c3461d51d857d57a34e6cce45b2d6cebe182d1b410cbb5a6f23b74c3184f092dad358f9394ba05516cd1c4b93e01caddac71cff0b00000006000000000b0000000600000000ef8293dd843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080f69f581e0baf6b19245cab4ab153c74b55ba9a014abd99a1141794b11f40fcc31fb21a0ef19ba58c41d2ef6940c0a1a34f4c7e82a83ff640a00ba8783fa23e6a1cff0b0000000600000000ef8293de843b9aca0082520894c2df13b6ad0753e0547a318f65f99ac62aec6e2b87038d7ea4c680008083015b228080d955debda7e36c4fff6ea74f39bcc0d34bbc07df4319b6b65e23251a7feedce659ff3fbefa599db1f3f76bb4b54e30fc6a158c2c8f0a6472c82da4505e9c94881bff0b0000000600000000, LastL2BLockTimestamp: 1731901795, BatchNumber: 320, GlobalExitRoot: 307834373430386264326665353162393139343033643066376338663633303433636464303434633162353231313930616266636230306466656436343937396430, L1InfoTreeIndex: 0        {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:34.634Z        INFO    sequencesender/sequencesender.go:352    sending sequences to L1. From batch 319 to batch 320    {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:35.562Z        DEBUG   ethtxmanager/ethtxmanager.go:555        found 1 safe monitored tx to process    {"pid": 40}
2024-11-18T03:52:38.112Z        DEBUG   ethtxmanager/ethtxmanager.go:482        found 0 monitored tx to process {"pid": 40}
2024-11-18T03:52:38.112Z        DEBUG   ethtxmanager/ethtxmanager.go:512        found 0 mined monitored tx to process   {"pid": 40}
2024-11-18T03:52:39.132Z        DEBUG   sync/evmdownloader.go:96        getting events from blocks 7099888 to  7099888  {"pid": 40, "version": "v0.4.0-beta5", "syncer": "l1infotreesync"}
2024-11-18T03:52:39.561Z        DEBUG   ethtxmanager/ethtxmanager.go:555        found 1 safe monitored tx to process    {"pid": 40}
2024-11-18T03:52:39.639Z        DEBUG   sync/evmdownloader.go:104       sending block 7099888 to the driver (without events)    {"pid": 40, "version": "v0.4.0-beta5", "syncer": "l1infotreesync"}
2024-11-18T03:52:40.134Z        DEBUG   sync/evmdownloader.go:89        waiting for new blocks, last block processed 7099888, last block seen on L1 7099888     {"pid": 40, "version": "v0.4.0-beta5", "syncer": "l1infotreesync"}
2024-11-18T03:52:40.135Z        DEBUG   sync/evmdriver.go:100   handleNewBlock blockNum: 7099888 blockHash: 0x770d6da1c6d3e05688cbb2f91f1a6433ff2ce49f5b5890c8a18e0c2fa7be7310  {"pid": 40, "version": "v0.4.0-beta5", "syncer": "l1infotreesync"}
2024-11-18T03:52:40.135Z        INFO    l1infotreesync/processor.go:343 block 7099888 processed with 0 events   {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:52:41.558Z        INFO    datacommittee/datacommittee.go:310      sending request to sign the sequence to 0xe492566270951f0630E5f3665900264f1E9232b1 at http://172.18.39.103:8444 {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:52:41.558Z        INFO    datacommittee/datacommittee.go:310      sending request to sign the sequence to 0x3DC4c719718A34B36765A9691B9D72acc0da4737 at http://172.18.36.175:8444 {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:52:41.558Z        INFO    datacommittee/datacommittee.go:310      sending request to sign the sequence to 0x003d77dE9535385942629B182eeB104e82ac3FBa at http://172.18.39.162:8444 {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:52:41.558Z        INFO    datacommittee/datacommittee.go:310      sending request to sign the sequence to 0x78fE7a1Cc51c84a61cC172c4Fb8c666e84d930c0 at http://172.18.36.185:8444 {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:52:41.558Z        INFO    datacommittee/datacommittee.go:310      sending request to sign the sequence to 0x9e07d72b16BDBF8870b79c2421912d677Ccf1F0F at http://172.18.36.16:8444  {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:52:41.562Z        INFO    datacommittee/datacommittee.go:283      received signature from 0x3DC4c719718A34B36765A9691B9D72acc0da4737      {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:52:41.562Z        INFO    datacommittee/datacommittee.go:283      received signature from 0xe492566270951f0630E5f3665900264f1E9232b1      {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:52:41.562Z        DEBUG   datacommittee/datacommittee.go:354      adding signature 7f729d16848dd7790de313f58aae0d7256f343af77933299d44426a7f7aa75ba24a43e10275ec3a73c9de23bfe9f0cf91bd5b99e183322db0302e758266c0baa1b from 0x3DC4c719718A34B36765A9691B9D72acc0da4737    {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:52:41.562Z        DEBUG   datacommittee/datacommittee.go:354      adding signature 9a40e6a054ffe939644330a53cac8b3e97faf9cc3ab28ca46fc234210e1027ea71d619a6bb75b608c607ab49ad064b953ebcfaf7193bb46ad34d4836c92270021c from 0xe492566270951f0630E5f3665900264f1E9232b1    {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:52:41.562Z        DEBUG   datacommittee/datacommittee.go:358      adding addr 003d77de9535385942629b182eeb104e82ac3fba    {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:52:41.562Z        DEBUG   datacommittee/datacommittee.go:358      adding addr 3dc4c719718a34b36765a9691b9d72acc0da4737    {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:52:41.562Z        DEBUG   datacommittee/datacommittee.go:358      adding addr 78fe7a1cc51c84a61cc172c4fb8c666e84d930c0    {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:52:41.562Z        DEBUG   datacommittee/datacommittee.go:358      adding addr 9e07d72b16bdbf8870b79c2421912d677ccf1f0f    {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:52:41.562Z        DEBUG   datacommittee/datacommittee.go:358      adding addr e492566270951f0630e5f3665900264f1e9232b1    {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:52:41.562Z        DEBUG   datacommittee/datacommittee.go:361      full res 7f729d16848dd7790de313f58aae0d7256f343af77933299d44426a7f7aa75ba24a43e10275ec3a73c9de23bfe9f0cf91bd5b99e183322db0302e758266c0baa1b9a40e6a054ffe939644330a53cac8b3e97faf9cc3ab28ca46fc234210e1027ea71d619a6bb75b608c607ab49ad064b953ebcfaf7193bb46ad34d4836c92270021c003d77de9535385942629b182eeb104e82ac3fba3dc4c719718a34b36765a9691b9d72acc0da473778fe7a1cc51c84a61cc172c4fb8c666e84d930c09e07d72b16bdbf8870b79c2421912d677ccf1f0fe492566270951f0630e5f3665900264f1e9232b1 {"pid": 40, "version": "v0.4.0-beta5", "module": "da-committee"}
2024-11-18T03:52:41.562Z        INFO    txbuilder/banana_validium.go:137        building banana sequence tx. AccInputHash: 0x23a7726c7ae88735622bc47e3b107a7f24ad6eb100aeeb95a14b0b7954537216   {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:41.617Z        INFO    sequencesender/sequencesender.go:523    latest virtual batch is 318     {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:42.064Z        DEBUG   ethtxmanager/ethtxmanager.go:482        found 0 monitored tx to process {"pid": 40}
2024-11-18T03:52:42.064Z        DEBUG   ethtxmanager/ethtxmanager.go:512        found 0 mined monitored tx to process   {"pid": 40}
2024-11-18T03:52:42.109Z        DEBUG   ethtxmanager/ethtxmanager.go:555        found 1 safe monitored tx to process    {"pid": 40}
2024-11-18T03:52:43.118Z        DEBUG   etherman/etherman.go:133        gasPrice chose: 1000037 {"pid": 40}
2024-11-18T03:52:43.118Z        INFO    ethtxmanager/ethtxmanager.go:327        created {"pid": 40, "types.MonitoredTx": "0x965c884cd4128e2efb5a81b5ffbf60689e5d061536c1087245b8d45a0ede0804", "createdAt": "0001-01-01T00:00:00.000Z"}
2024-11-18T03:52:43.119Z        INFO    sequencesender/ethtx.go:270     update transaction 0x965c884cd4128e2efb5a81b5ffbf60689e5d061536c1087245b8d45a0ede0804 to state created  {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:52:43.119Z        INFO    sequencesender/sequencesender.go:275    batches purged count: 236, fromBatch: 83, toBatch: 318  {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:43.434Z        INFO    rpc/batch.go:46 Getting batch 321 from RPC      {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:52:43.434Z        INFO    sequencesender/sequencesender.go:282    updating virtual batch  {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:43.435Z        INFO    rpc/batch.go:93 Getting l2 block timestamp from RPC. Block hash: 0xed474f23d41fa067d7da4f232afde3a50e43408d0a7f49bd6a4fb9c2d3be06e7     {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:52:43.436Z        INFO    sequencesender/sequencesender.go:187    batch 321 is not closed yet     {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}

2024-11-18T03:52:44.558Z        INFO    sequencesender/sequencesender.go:523    latest virtual batch is 318     {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:44.558Z        INFO    sequencesender/sequencesender.go:295    updating tx results     {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:45.058Z        DEBUG   ethtxmanager/ethtxmanager.go:482        found 1 monitored tx to process {"pid": 40}
2024-11-18T03:52:45.058Z        INFO    ethtxmanager/ethtxmanager.go:592        processing      {"pid": 40, "monitoredTxId": "0x965c884cd4128e2efb5a81b5ffbf60689e5d061536c1087245b8d45a0ede0804", "createdAt": "2024-11-18T03:52:43.000Z", "from": "0x85472577b11837bC157F45643047Cb86136985f2", "to": "0x0d08b6F2f6c45a2EA67000C28b08D4591D2090ab"}
2024-11-18T03:52:45.058Z        DEBUG   ethtxmanager/ethtxmanager.go:607        unsigned tx 0x30ae0cceb8e8a986905030d7b0962e74a169a5ebbcf7b8c36c87d9a77b1e488c created  {"pid": 40, "monitoredTxId": "0x965c884cd4128e2efb5a81b5ffbf60689e5d061536c1087245b8d45a0ede0804", "createdAt": "2024-11-18T03:52:43.000Z", "from": "0x85472577b11837bC157F45643047Cb86136985f2", "to": "0x0d08b6F2f6c45a2EA67000C28b08D4591D2090ab"}
2024-11-18T03:52:45.058Z        DEBUG   ethtxmanager/ethtxmanager.go:615        signed tx 0x3af59cf181ccd16d12e99e32402e5c15d1fabed209a6fd0968bd2a6870c6517b created    {"pid": 40, "monitoredTxId": "0x965c884cd4128e2efb5a81b5ffbf60689e5d061536c1087245b8d45a0ede0804", "createdAt": "2024-11-18T03:52:43.000Z", "from": "0x85472577b11837bC157F45643047Cb86136985f2", "to": "0x0d08b6F2f6c45a2EA67000C28b08D4591D2090ab"}
2024-11-18T03:52:45.058Z        DEBUG   ethtxmanager/ethtxmanager.go:631        signed tx added to the monitored tx history     {"pid": 40, "monitoredTxId": "0x965c884cd4128e2efb5a81b5ffbf60689e5d061536c1087245b8d45a0ede0804", "createdAt": "2024-11-18T03:52:43.000Z", "from": "0x85472577b11837bC157F45643047Cb86136985f2", "to": "0x0d08b6F2f6c45a2EA67000C28b08D4591D2090ab"}
2024-11-18T03:52:46.560Z        DEBUG   ethtxmanager/ethtxmanager.go:638        signed tx not found in the network      {"pid": 40, "monitoredTxId": "0x965c884cd4128e2efb5a81b5ffbf60689e5d061536c1087245b8d45a0ede0804", "createdAt": "2024-11-18T03:52:43.000Z", "from": "0x85472577b11837bC157F45643047Cb86136985f2", "to": "0x0d08b6F2f6c45a2EA67000C28b08D4591D2090ab"}
2024-11-18T03:52:47.119Z        INFO    ethtxmanager/ethtxmanager.go:644        signed tx sent to the network: 0x3af59cf181ccd16d12e99e32402e5c15d1fabed209a6fd0968bd2a6870c6517b       {"pid": 40, "monitoredTxId": "0x965c884cd4128e2efb5a81b5ffbf60689e5d061536c1087245b8d45a0ede0804", "createdAt": "2024-11-18T03:52:43.000Z", "from": "0x85472577b11837bC157F45643047Cb86136985f2", "to": "0x0d08b6F2f6c45a2EA67000C28b08D4591D2090ab"}
2024-11-18T03:52:47.119Z        DEBUG   ethtxmanager/ethtxmanager.go:648        status changed to sent  {"pid": 40, "monitoredTxId": "0x965c884cd4128e2efb5a81b5ffbf60689e5d061536c1087245b8d45a0ede0804", "createdAt": "2024-11-18T03:52:43.000Z", "from": "0x85472577b11837bC157F45643047Cb86136985f2", "to": "0x0d08b6F2f6c45a2EA67000C28b08D4591D2090ab"}
2024-11-18T03:52:47.119Z        INFO    ethtxmanager/ethtxmanager.go:660        waiting signedTx to be mined... {"pid": 40}
2024-11-18T03:52:51.558Z        INFO    sequencesender/ethtx.go:270     update transaction 0x965c884cd4128e2efb5a81b5ffbf60689e5d061536c1087245b8d45a0ede0804 to state sent     {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:52:51.559Z        INFO    sequencesender/ethtx.go:201     2 tx results synchronized (1 in pending state)  {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:52:51.559Z        INFO    sequencesender/sequencesender.go:303    max number of pending txs (1) reached. Waiting for some to be completed {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:52.562Z        DEBUG   etherman/wait.go:96     Transaction successfully mined: 0x3af59cf181ccd16d12e99e32402e5c15d1fabed209a6fd0968bd2a6870c6517b      {"pid": 40}
2024-11-18T03:52:53.059Z        DEBUG   sync/evmdownloader.go:96        getting events from blocks 7099889 to  7099889  {"pid": 40, "version": "v0.4.0-beta5", "syncer": "l1infotreesync"}
2024-11-18T03:52:53.434Z        INFO    rpc/batch.go:46 Getting batch 321 from RPC      {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:52:53.436Z        INFO    rpc/batch.go:93 Getting l2 block timestamp from RPC. Block hash: 0x7c525112f6a113ebef74c6612cf1bccd38d9d90da7eee5cdbea8d71905448459     {"pid": 40, "version": "v0.4.0-beta5"}
2024-11-18T03:52:53.437Z        INFO    sequencesender/sequencesender.go:187    batch 321 is not closed yet     {"pid": 40, "version": "v0.4.0-beta5", "module": "sequence-sender"}
2024-11-18T03:52:53.564Z        INFO    ethtxmanager/ethtxmanager.go:703        mined   {"pid": 40, "monitoredTxId": "0x965c884cd4128e2efb5a81b5ffbf60689e5d061536c1087245b8d45a0ede0804", "createdAt": "2024-11-18T03:52:43.000Z", "from": "0x85472577b11837bC157F45643047Cb86136985f2", "to": "0x0d08b6F2f6c45a2EA67000C28b08D4591D2090ab"}
2024-11-18T03:52:53.565Z        DEBUG   ethtxmanager/ethtxmanager.go:512        found 1 mined monitored tx to process   {"pid": 40}
2024-11-18T03:52:54.058Z        DEBUG   sync/evmdownloader.go:104       sending block 7099889 to the driver (without events)    {"pid": 40, "version": "v0.4.0-beta5", "syncer": "l1infotreesync"}
2024-11-18T03:52:54.558Z        DEBUG   ethtxmanager/ethtxmanager.go:555        found 1 safe monitored tx to process    {"pid": 40}
2024-11-18T03:52:55.057Z        DEBUG   sync/evmdownloader.go:89        waiting for new blocks, last block processed 7099889, last block seen on L1 7099889     {"pid": 40, "version": "v0.4.0-beta5", "syncer": "l1infotreesync"}

临时总结

该笔提交逻辑正常,说明确实存在逻辑卡住的问题,并且可以通过重启sequencesender恢复,
TODO 忙完继续跟进下,再做补充

注:当前提交batch时间间隔等于配置cfg.WaitPeriodSendSequence检查间隔,加上交易到达Finalized后的时间总和,交易为单笔发送,上一笔Finalized后才会发起下一笔。
对于sepolia测试网目前需要大约15-20分钟

TODO

首先SequenceSender会经过cfg.WaitPeriodSendSequence(默认15s)时间检查一次

func (s *SequenceSender) sequenceSending(ctx context.Context) {
..
    ticker := time.NewTicker(s.cfg.WaitPeriodSendSequence.Duration)
...
        case <-ticker.C:
            // Trigger the sequence sending when the ticker fires
            s.tryToSendSequence(ctx)
        }
    }
}

先看最终发送的逻辑

func (s *SequenceSender) tryToSendSequence(ctx context.Context) {
    // Update latest virtual batch
    s.logger.Infof("updating virtual batch")
    err := s.updateLatestVirtualBatch() // 获取RollupManager合约,通过RollupIDToRollupData获取rollupData->LastBatchSequenced,然后更新本地的latestVirtualBatchNumber存储
    if err != nil {
        return
    }

    // Check if the sequence sending is stopped
    if s.IsStopped() {
        s.logger.Warnf("sending is stopped!")
        return
    }

    // Update state of transactions
    s.logger.Infof("updating tx results")
    pendingTxsCount, err := s.syncEthTxResults(ctx)
    if err != nil {
        return
    }

    // Check if reached the maximum number of pending transactions
    if pendingTxsCount >= s.cfg.MaxPendingTx {
        s.logger.Infof("max number of pending txs (%d) reached. Waiting for some to be completed", pendingTxsCount)
        return
    }

    // Check if should send sequence to L1
    s.logger.Infof("getting sequences to send")
    sequence, err := s.getSequencesToSend(ctx)
    if err != nil || sequence == nil || sequence.Len() == 0 {
        if err != nil {
            s.logger.Errorf("error getting sequences: %v", err)
        }
        return
    }

    // Send sequences to L1
    firstBatch := sequence.FirstBatch()
    lastBatch := sequence.LastBatch()

    s.logger.Debugf(sequence.String())
    s.logger.Infof("sending sequences to L1. From batch %d to batch %d", firstBatch.BatchNumber(), lastBatch.BatchNumber())

    // Wait until last L1 block timestamp is L1BlockTimestampMargin seconds above the timestamp
    // of the last L2 block in the sequence
    timeMargin := int64(s.cfg.L1BlockTimestampMargin.Seconds())

    err = s.waitForMargin(ctx, lastBatch, timeMargin, "L1 block block timestamp",
        func() (uint64, error) {
            lastL1BlockHeader, err := s.etherman.GetLatestBlockHeader(ctx)
            if err != nil {
                return 0, err
            }

            return lastL1BlockHeader.Time, nil
        })
    if err != nil {
        s.logger.Errorf("error waiting for L1 block time margin: %v", err)
        return
    }

    // Sanity check: Wait until the current time is also L1BlockTimestampMargin seconds above the last L2 block timestamp
    err = s.waitForMargin(ctx, lastBatch, timeMargin, "current time",
        func() (uint64, error) { return uint64(time.Now().Unix()), nil })
    if err != nil {
        s.logger.Errorf("error waiting for current time margin: %v", err)
        return
    }

    // Send sequences to L1
    s.logger.Debugf(sequence.String())
    s.logger.Infof("sending sequences to L1. From batch %d to batch %d", firstBatch.BatchNumber(), lastBatch.BatchNumber())

    tx, err := s.TxBuilder.BuildSequenceBatchesTx(ctx, sequence) // 组装sequenceBatchesValidium交易
    if err != nil {
        s.logger.Errorf("error building sequenceBatches tx: %v", err)
        return
    }

    // Get latest virtual state batch from L1
    err = s.updateLatestVirtualBatch()
    if err != nil {
        s.logger.Fatalf("error getting latest sequenced batch, error: %v", err)
    }

    sequence.SetLastVirtualBatchNumber(atomic.LoadUint64(&s.latestVirtualBatchNumber))

    gas, err := s.etherman.EstimateGas(ctx, s.cfg.SenderAddress, tx.To(), nil, tx.Data())
    if err != nil {
        s.logger.Errorf("error estimating gas: ", err)
        return
    }

    // Add sequence tx
    err = s.sendTx(ctx, false, nil, tx.To(), firstBatch.BatchNumber(), lastBatch.BatchNumber(), tx.Data(), gas) // 发送sequenceBatchesValidium交易
    if err != nil {
        return
    }

    // Purge sequences data from memory
    s.purgeSequences()
}

polygon cdk 查看最新提交L1batch num

通过RPC

curl http://L2RPC访问地址/ \
  -X POST \
  -H "Content-Type: application/json" \
  --data '{"method":"zkevm_virtualBatchNumber","params":[],"id":1,"jsonrpc":"2.0"}'

例如返回

 curl http://172.18.39.103:8123/ \
>   -X POST \
>   -H "Content-Type: application/json" \
>   --data '{"method":"zkevm_virtualBatchNumber","params":[],"id":1,"jsonrpc":"2.0"}'
{"jsonrpc":"2.0","id":1,"result":"0x52"}

0x52对应10进制为82
https://tool.lu/hexconvert/

合约逻辑

function sequenceBatchesValidium(
        ValidiumBatchData[] calldata batches,
        uint32 l1InfoTreeLeafCount,
        uint64 maxSequenceTimestamp,
        bytes32 expectedFinalAccInputHash,
        address l2Coinbase,
        bytes calldata dataAvailabilityMessage
    ) external onlyTrustedSequencer {
        uint256 batchesNum = batches.length;
        if (batchesNum == 0) {
            revert SequenceZeroBatches();
        }

        if (batchesNum > _MAX_VERIFY_BATCHES) {
            revert ExceedMaxVerifyBatches();
        }

        // Check max sequence timestamp inside of range
        if (
            uint256(maxSequenceTimestamp) > (block.timestamp + TIMESTAMP_RANGE)
        ) {
            revert MaxTimestampSequenceInvalid();
        }

        // Update global exit root if there are new deposits
        bridgeAddress.updateGlobalExitRoot();

        // Get global batch variables
        bytes32 l1InfoRoot = globalExitRootManager.l1InfoRootMap(
            l1InfoTreeLeafCount
        );

        if (l1InfoRoot == bytes32(0)) {
            revert L1InfoTreeLeafCountInvalid();
        }

        // Store storage variables in memory, to save gas, because will be overrided multiple times
        uint64 currentLastForceBatchSequenced = lastForceBatchSequenced;
        bytes32 currentAccInputHash = lastAccInputHash;

        // Store in a temporal variable, for avoid access again the storage slot
        uint64 initLastForceBatchSequenced = currentLastForceBatchSequenced;

        for (uint256 i = 0; i < batchesNum; i++) {
            // Load current sequence
            ValidiumBatchData memory currentBatch = batches[i];

            // Check if it's a forced batch
            if (currentBatch.forcedTimestamp > 0) {
                currentLastForceBatchSequenced++;

                // Check forced data matches
                bytes32 hashedForcedBatchData = keccak256(
                    abi.encodePacked(
                        currentBatch.transactionsHash,
                        currentBatch.forcedGlobalExitRoot,
                        currentBatch.forcedTimestamp,
                        currentBatch.forcedBlockHashL1
                    )
                );

                if (
                    hashedForcedBatchData !=
                    forcedBatches[currentLastForceBatchSequenced]
                ) {
                    revert ForcedDataDoesNotMatch();
                }

                // Calculate next accumulated input hash
                currentAccInputHash = keccak256(
                    abi.encodePacked(
                        currentAccInputHash,
                        currentBatch.transactionsHash,
                        currentBatch.forcedGlobalExitRoot,
                        currentBatch.forcedTimestamp,
                        l2Coinbase,
                        currentBatch.forcedBlockHashL1
                    )
                );

                // Delete forceBatch data since won't be used anymore
                delete forcedBatches[currentLastForceBatchSequenced];
            } else {
                // Note that forcedGlobalExitRoot and forcedBlockHashL1 remain unused and unchecked in this path
                // The synchronizer should be aware of that

                // Calculate next accumulated input hash
                currentAccInputHash = keccak256(
                    abi.encodePacked(
                        currentAccInputHash,
                        currentBatch.transactionsHash,
                        l1InfoRoot,
                        maxSequenceTimestamp,
                        l2Coinbase,
                        bytes32(0)
                    )
                );
            }
        }

        // Sanity check, should be unreachable
        if (currentLastForceBatchSequenced > lastForceBatch) {
            revert ForceBatchesOverflow();
        }

        // Store back the storage variables
        lastAccInputHash = currentAccInputHash;

        uint256 nonForcedBatchesSequenced = batchesNum;

        // Check if there has been forced batches
        if (currentLastForceBatchSequenced != initLastForceBatchSequenced) {
            uint64 forcedBatchesSequenced = currentLastForceBatchSequenced -
                initLastForceBatchSequenced;
            // substract forced batches
            nonForcedBatchesSequenced -= forcedBatchesSequenced;

            // Transfer pol for every forced batch submitted
            pol.safeTransfer(
                address(rollupManager),
                calculatePolPerForceBatch() * (forcedBatchesSequenced)
            );

            // Store new last force batch sequenced
            lastForceBatchSequenced = currentLastForceBatchSequenced;
        }

        // Pay collateral for every non-forced batch submitted
        if (nonForcedBatchesSequenced != 0) {
            pol.safeTransferFrom(
                msg.sender,
                address(rollupManager),
                rollupManager.getBatchFee() * nonForcedBatchesSequenced
            );

            // Validate that the data availability protocol accepts the dataAvailabilityMessage
            // note This is a view function, so there's not much risk even if this contract was vulnerable to reentrant attacks
            dataAvailabilityProtocol.verifyMessage(
                expectedFinalAccInputHash,
                dataAvailabilityMessage
            );
        }

        uint64 currentBatchSequenced = rollupManager.onSequenceBatches(
            uint64(batchesNum),
            currentAccInputHash
        );

        // Check expectedFinalAccInputHash
        if (currentAccInputHash != expectedFinalAccInputHash) {
            revert FinalAccInputHashDoesNotMatch();
        }

        emit SequenceBatches(currentBatchSequenced, l1InfoRoot);
    }

查看举例交易:https://sepolia.etherscan.io/tx/0xdb8636d8853348d4d48df1d602a3ce6fe8c37c6be3c30ea9d83f2568e7562fa1#eventlog
对应事件:SequenceBatches

最新提交batch num: 82 与RPC 查询数据一致