// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import {Script, console} from "forge-std/Script.sol"; import {Chain138MainnetCheckpoint} from "../../contracts/mainnet-checkpoint/Chain138MainnetCheckpoint.sol"; /// @notice Replay aggregator calldata on a mainnet fork to surface revert reason. contract SimulateSubmitFromCalldata is Script { function run() external { address hub = vm.envAddress("CHAIN138_MAINNET_CHECKPOINT_PROXY"); bytes memory data = vm.envBytes("CHECKPOINT_SUBMIT_CALLDATA"); vm.prank(vm.envAddress("CHECKPOINT_SUBMIT_FROM")); (bool ok, bytes memory ret) = hub.call(data); if (!ok) { if (ret.length > 0) { console.logBytes(ret); } revert("submit simulation failed"); } console.log("ok, latest", Chain138MainnetCheckpoint(hub).getLatestBatchId()); } }