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