From c16b8c10dd3e2c45b2c6b6e698b95ad33d78fa49 Mon Sep 17 00:00:00 2001 From: smtmfft Date: Mon, 24 Mar 2025 11:09:47 +0800 Subject: [PATCH 1/2] add 2 stress scripts --- script/stress_batch_test.py | 518 ++++++++++++++++++++++++++++++++++++ script/stress_test.py | 428 +++++++++++++++++++++++++++++ 2 files changed, 946 insertions(+) create mode 100644 script/stress_batch_test.py create mode 100644 script/stress_test.py diff --git a/script/stress_batch_test.py b/script/stress_batch_test.py new file mode 100644 index 000000000..8b291ac37 --- /dev/null +++ b/script/stress_batch_test.py @@ -0,0 +1,518 @@ +import requests +import time +from datetime import datetime +import json +import logging +from typing import Optional, Dict, Any, Tuple +from collections import deque +import asyncio +import argparse +from dataclasses import dataclass +from random import random +import web3 +from web3 import Web3 +from web3.middleware import ExtraDataToPOAMiddleware + + +@dataclass +class RaikoResponse: + status: str + data: Optional[Dict[str, Any]] = None + message: Optional[str] = None + + +class BatchMonitor: + def __init__( + self, + l1_rpc: str, + abi_file: str, + evt_address: str, + raiko_rpc: str, + log_file: str = "block_monitor.log", + polling_interval: int = 3, + max_retries: int = 3, + block_running_ratio: float = 0.1, + block_range: Optional[Tuple[int, int]] = None, + timeout: int = 3600, # 1 hour + prove_type: str = "native", + watch_mode: bool = False, + ): + self.l1_rpc = l1_rpc + self.raiko_rpc = raiko_rpc + self.log_file = log_file + self.block_polling_interval = polling_interval + self.task_polling_interval = polling_interval + self.max_retries = max_retries + self.timeout = timeout + self.last_block = None + self.batchs_in_last_block = deque() + self.block_running_ratio = block_running_ratio + self.block_range = block_range + self.ts_offset: Optional[int] = None + self.running_count = 0 + self.prove_type = prove_type + self.watch_mode = watch_mode + # logger + logging.basicConfig( + level=logging.INFO, + format="%(asctime)s - %(levelname)s - %(message)s", + handlers=[logging.FileHandler(log_file), logging.StreamHandler()], + ) + self.logger = logging.getLogger(__name__) + self.__init_contract_event(l1_rpc, abi_file, evt_address) + + def __init_contract_event(self, l1_rpc, abi_file, evt_address): + print(f"l1_rpc = {l1_rpc}, abi_file = {abi_file}, evt_address = {evt_address}") + with open(abi_file) as f: + abi = json.load(f) + l1_w3 = Web3(Web3.HTTPProvider(l1_rpc, {"timeout": 10})) + l1_w3.middleware_onion.inject(ExtraDataToPOAMiddleware, layer=0) + if l1_w3.is_connected(): + self.logger.info(f"Connected to l1 node {l1_rpc}") + self.evt_contract = l1_w3.eth.contract(address=evt_address, abi=abi["abi"]) + + def parse_batch_proposed_meta(self, log): + try: + parsed_log = self.evt_contract.events.BatchProposed().process_log(log) + meta = parsed_log.args.meta + return meta.batchId + except Exception as e: + return None + + def get_batch_events_in_block(self, block_number) -> list[int]: + try: + logs = self.evt_contract.events.BatchProposed().get_logs( + from_block=block_number, to_block=block_number + ) + return [log.args.meta.batchId for log in logs] + except Exception as e: + return [] + + async def get_next_batches(self) -> Optional[tuple[int, list[int]]]: + """get latest block number""" + if self.block_range is not None: + return await self.get_in_range_next_batch() + else: + return await self.get_latest_block_batchs() + + async def get_block(self, block_number) -> Optional[Dict[str, Any]]: + """get block by number""" + try: + response = requests.post( + self.l1_rpc, + json={ + "jsonrpc": "2.0", + "method": "eth_getBlockByNumber", + "params": [hex(block_number), False], + "id": 1, + }, + timeout=10, + ) + result = response.json() + return result.get("result") + except Exception as e: + self.logger.error(f"Failed to get block {block_number}: {e}") + + async def align_ts_offset(self, first_block: int) -> bool: + # query block timestamp + try: + block = await self.get_block(first_block) + timestamp = int(block["timestamp"], 16) + current_timestamp = int(time.time()) + self.ts_offset = current_timestamp - timestamp + self.logger.info( + f"Begin timestamp: {timestamp}, timestamp offset: {self.ts_offset}" + ) + return True + except Exception as e: + self.logger.error(f"align_ts_offset from {first_block} failed: {e}") + return False + + async def get_in_range_next_batch(self) -> Optional[tuple[int, list[int]]]: + """get latest block number""" + start_block, end_block = self.block_range + + if self.last_block is None: + next_block = start_block + else: + next_block = self.last_block + 1 + # align block timestamp offset after first block gets processed + if self.ts_offset is None: + if not await self.align_ts_offset(start_block): + return None + + while True: + if next_block >= end_block: + self.logger.info(f"Block range {self.block_range} finished") + if self.running_count == 0: + self.logger.info("All blocks finished, exiting") + exit(0) + return None + else: + # check if events exist in this block + batch_ids = self.get_batch_events_in_block(next_block) + if len(batch_ids) == 0: + self.logger.info(f"No batch events in block {next_block}") + next_block += 1 + continue + + if self.ts_offset is None: + if not await self.align_ts_offset(next_block): + return None + + # check if next block timestamp reached + block = await self.get_block(next_block) + timestamp = int(block["timestamp"], 16) + self.ts_offset + current_timestamp = int(time.time()) + if current_timestamp >= timestamp: + self.last_block = next_block + return self.last_block, batch_ids + else: + self.logger.info( + f"Block {next_block} timestamp:{timestamp} is not reached, current:{current_timestamp}" + ) + self.last_block = next_block - 1 + await asyncio.sleep(timestamp - current_timestamp) + return None + + async def get_latest_block_batchs(self) -> Optional[tuple[int, list[int]]]: + """get latest block number""" + logs = self.evt_contract.events.BatchProposed().get_logs( + from_block="latest", to_block="latest" + ) + if len(logs) == 0: + return None + return logs[0].blockNumber, [log.args.meta.batchId for log in logs] + + def generate_post_data( + self, batch_id: int, batch_proposal_height: int + ) -> Dict[str, Any]: + """generate post data""" + return { + "batches": [ + { + "batch_id": batch_id, + "l1_inclusion_block_number": batch_proposal_height, + } + ], + "prover": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", + "graffiti": "8008500000000000000000000000000000000000000000000000000000000000", + "proof_type": self.prove_type, + "blob_proof_type": "proof_of_equivalence", + "native": {}, + "l1_network": "taiko_dev_l1", + "network": "taiko_dev", + "sgx": { + "instance_id": 1234, + "setup": False, + "bootstrap": False, + "prove": True, + }, + "risc0": { + "bonsai": True, + "snark": True, + "profile": False, + "execution_po2": 20, + }, + "sp1": {"recursion": "plonk", "prover": "network", "verify": True}, + } + + async def submit_to_raiko( + self, batch_id: int, batch_inclusion_block: int + ) -> Optional[str]: + """submit batch to Raiko""" + try: + headers = {"x-api-key": "1", "Content-Type": "application/json"} + + payload = self.generate_post_data(batch_id, batch_inclusion_block) + print(f"payload = {payload}") + + response = requests.post( + f"{self.raiko_rpc}/v3/proof/batch", + headers=headers, + json=payload, + timeout=10, + ) + result = response.json() + + if result.get("status") == "ok": + self.logger.info( + f"Batch {batch_id} in block {batch_inclusion_block} submitted to Raiko with response: {result}" + ) + return None + else: + self.logger.error( + f"Failed to submit block: {result.get('message', 'Unknown error')}" + ) + return None + except Exception as e: + self.logger.error(f"Failed to submit to Raiko: {e}") + return None + + async def query_raiko_status( + self, batch_id: int, batch_inclusion_block: int + ) -> RaikoResponse: + """query Raiko status""" + try: + headers = {"x-api-key": "1", "Content-Type": "application/json"} + payload = self.generate_post_data(batch_id, batch_inclusion_block) + response = requests.post( + f"{self.raiko_rpc}/v3/proof/batch", + headers=headers, + json=payload, + timeout=10, + ) + result = response.json() + if result.get("status") == "error": + return RaikoResponse( + status="error", message=result.get("message", "Unknown error") + ) + elif result.get("status") == "ok": + return RaikoResponse(status="ok", data=result.get("data", {})) + else: + return RaikoResponse(status="error", message="Invalid response format") + except Exception as e: + self.logger.error(f"Failed to query Raiko status: {e}") + return RaikoResponse(status="error", message=str(e)) + + async def process_batch(self, batch_id: int, l1_inclusion_block: int): + """handle new batch""" + try: + if self.watch_mode: + self.logger.info(f"Watch mode, skip processing") + return + + start_time = datetime.now() + self.logger.info( + f"Starting to process batch {batch_id} @ {l1_inclusion_block} at {start_time}" + ) + + with open(self.log_file, "a") as f: + f.write( + f"\nbatch {batch_id} in block {l1_inclusion_block} processing started at {start_time}\n" + ) + + # request Raiko + await self.submit_to_raiko(batch_id, l1_inclusion_block) + + # polling + retry_count = 0 + start_polling_time = time.time() + + while True: + if time.time() - start_polling_time > self.timeout: + self.logger.error( + f"Timeout waiting for batch {batch_id} / {l1_inclusion_block}" + ) + break + + response = await self.query_raiko_status(batch_id, l1_inclusion_block) + + if response.status == "error": + self.logger.error( + f"Error processing batch {batch_id} in block {l1_inclusion_block}: {response.message}" + ) + retry_count += 1 + if retry_count >= self.max_retries: + self.logger.error( + f"Max retries reached for batch {batch_id} in block {l1_inclusion_block}" + ) + break + + if response.data: + retry_count = 0 # reset retry count + if response.data.get("status") == "registered": + self.logger.info( + f"Batch {batch_id} in Block {l1_inclusion_block} registered" + ) + elif response.data.get("status") == "work_in_progress": + self.logger.info( + f"Batch {batch_id} in Block {l1_inclusion_block} in progress" + ) + elif response.data.get("proof"): + self.logger.info( + f"Batch {batch_id} in Block {l1_inclusion_block} completed with proof {response.data['proof']['proof']}" + ) + break + else: + self.logger.warning( + f"Batch {batch_id} in Block {l1_inclusion_block} unhandled status: {response}" + ) + + await asyncio.sleep(self.task_polling_interval) + + end_time = datetime.now() + duration = (end_time - start_time).total_seconds() + + # log ending status + with open(self.log_file, "a") as f: + f.write( + f"Block {l1_inclusion_block} processed {response.status} at {end_time}, duration: {duration} seconds\n" + ) + if response.message: + f.write(f"Message: {response.message}\n") + if response.data and response.data.get("proof"): + f.write(f"Proof: {response.data['proof']['proof']}\n") + finally: + self.running_count -= 1 + self.logger.info( + f"Block {l1_inclusion_block} processed, remaining running: {self.running_count}" + ) + + async def run(self): + """main loop""" + self.logger.info("Starting block monitor") + # print start config + self.logger.info(f"Config:\n{json.dumps(self.__dict__, indent=2, default=str)}") + acc_odds = 1 + while True: + try: + result = await self.get_next_batches() + if result is not None: + current_block, batch_ids = result + for batch_id in batch_ids: + self.logger.info(f"New batch detected: {batch_id}@{current_block}") + acc_odds += self.block_running_ratio + if acc_odds >= 1.0: + self.logger.info( + f"To run batch/block: {batch_id}/{current_block}, current running tasks: {self.running_count}" + ) + self.running_count += 1 + acc_odds -= 1.0 + asyncio.create_task( + self.process_batch(batch_id, current_block) + ) + else: + self.logger.info( + f"Block {current_block} skipped due to block_running_ratio:{self.block_running_ratio}" + ) + self.last_block = current_block + await asyncio.sleep(self.block_polling_interval) + except Exception as e: + self.logger.error(f"Error in main loop: {e}") + await asyncio.sleep(self.block_polling_interval) + + +def parse_none_value(value, convert_func=str): + if value and isinstance(value, str) and value.lower() in ["none", "null"]: + return None + return convert_func(value) if value is not None else None + + +def parse_block_range(value): + """support block range in format start,end or none""" + if value and value.lower() in ["none", "null"]: + return None + try: + start_block, end_block = map(int, value.split(",")) + return (start_block, end_block) + except (ValueError, AttributeError): + raise argparse.ArgumentTypeError( + 'Block range must be in format "start,end" or "none"' + ) + + +async def main(): + parser = argparse.ArgumentParser(description="Block Monitor CLI") + + parser.add_argument( + "-e", + "--l1-rpc", + type=lambda x: parse_none_value(x, str), + default="https://l1rpc.internal.taiko.xyz", + help='Ethereum RPC endpoint (use "none" for None value)', + ) + + parser.add_argument( + "-a", + "--raiko-rpc", + type=lambda x: parse_none_value(x, str), + default="http://localhost:8080", + help='Raiko RPC endpoint (use "none" for None value)', + ) + + parser.add_argument( + "-o", + "--log-file", + type=lambda x: parse_none_value(x, str), + default="block_monitor.log", + help='Log file path (use "none" for None value)', + ) + + parser.add_argument( + "-p", + "--polling-interval", + type=lambda x: parse_none_value(x, int), + default=3, + help='Polling interval in seconds (use "none" for None value)', + ) + + parser.add_argument( + "-r", + "--block-running-ratio", + type=lambda x: parse_none_value(x, float), + default=1.0, + help='Block running ratio (use "none" for None value)', + ) + + parser.add_argument( + "-g", + "--block-range", + type=parse_block_range, + default="None", + help='Block range in format "start,end" or "none" for None value', + ) + + parser.add_argument( + "-t", + "--prove-type", + type=lambda x: parse_none_value(x, str), + default="native", + help='Prove type (use "none" for None value)', + ) + + parser.add_argument( + "-i", + "--abi-file", + type=lambda x: parse_none_value(x, str), + default="./ITaikoInbox.json", + help='Prove type (use "none" for None value)', + ) + + parser.add_argument( + "-c", + "--event-contract", + type=lambda x: parse_none_value(x, str), + default="ITaikoInbox.json", + help='Prove type (use "none" for None value)', + ) + + parser.add_argument( + "-w", + "--watch-event", + action="store_true", + default=False, + help='Watch proposal event only (use "none" for None value)', + ) + + args = parser.parse_args() + + monitor = BatchMonitor( + l1_rpc=args.l1_rpc, + abi_file=args.abi_file, + evt_address=args.event_contract, + raiko_rpc=args.raiko_rpc, + log_file=args.log_file, + polling_interval=args.polling_interval, + block_running_ratio=args.block_running_ratio, + block_range=args.block_range, + prove_type=args.prove_type, + watch_mode=args.watch_event, + ) + + await monitor.run() + + +# python stress_batch.py -t native -g 8950,8960 -p 3 -o stress_dev.log -c '0xbE71D121291517c85Ab4d3ac65d70F6b1FD57118' +if __name__ == "__main__": + asyncio.run(main()) diff --git a/script/stress_test.py b/script/stress_test.py new file mode 100644 index 000000000..061fa2bc2 --- /dev/null +++ b/script/stress_test.py @@ -0,0 +1,428 @@ +import requests +import time +from datetime import datetime +import json +import logging +from typing import Optional, Dict, Any, Tuple +import asyncio +import argparse +from dataclasses import dataclass +from random import random + + +@dataclass +class RaikoResponse: + status: str + data: Optional[Dict[str, Any]] = None + message: Optional[str] = None + + +class BlockMonitor: + def __init__( + self, + eth_rpc: str, + raiko_rpc: str, + log_file: str = "block_monitor.log", + polling_interval: int = 3, + max_retries: int = 3, + block_running_ratio: float = 0.1, + block_range: Optional[Tuple[int, int]] = None, + timeout: int = 3600, # 1 hour + prove_type: str = "native", + ): + self.eth_rpc = eth_rpc + self.raiko_rpc = raiko_rpc + self.log_file = log_file + self.block_polling_interval = polling_interval + self.task_polling_interval = polling_interval + self.max_retries = max_retries + self.timeout = timeout + self.last_block = None + self.block_running_ratio = block_running_ratio + self.block_range = block_range + self.ts_offset: Optional(int) = None + self.running_count = 0 + self.prove_type = prove_type + + # logger + logging.basicConfig( + level=logging.INFO, + format="%(asctime)s - %(levelname)s - %(message)s", + handlers=[logging.FileHandler(log_file), logging.StreamHandler()], + ) + self.logger = logging.getLogger(__name__) + + async def get_next_block(self) -> Optional[int]: + """get latest block number""" + if self.block_range is not None: + return await self.get_in_range_next_block() + else: + return await self.get_latest_block() + + async def get_block(self, block_number) -> Optional[Dict[str, Any]]: + """get block by number""" + try: + response = requests.post( + self.eth_rpc, + json={ + "jsonrpc": "2.0", + "method": "eth_getBlockByNumber", + "params": [hex(block_number), False], + "id": 1, + }, + timeout=10, + ) + result = response.json() + return result.get("result") + except Exception as e: + self.logger.error(f"Failed to get block {block_number}: {e}") + + async def align_ts_offset(self, first_block: int) -> bool: + # query block timestamp + try: + block = await self.get_block(first_block) + timestamp = int(block["timestamp"], 16) + current_timestamp = int(time.time()) + self.ts_offset = current_timestamp - timestamp + self.logger.info( + f"Begin timestamp: {timestamp}, timestamp offset: {self.ts_offset}" + ) + return True + except Exception as e: + self.logger.error(f"align_ts_offset from {first_block} failed: {e}") + return False + + async def get_in_range_next_block(self) -> Optional[int]: + """get latest block number""" + start_block, end_block = self.block_range + # align block timestamp offset + if self.ts_offset is None: + if not await self.align_ts_offset(start_block): + return None + + if self.last_block is None: + return start_block + else: + # check if next block timestamp is overdue + next_block = self.last_block + 1 + if next_block >= end_block: + self.logger.info(f"Block range {self.block_range} finished") + if self.running_count == 0: + self.logger.info("All blocks finished, exiting") + exit(0) + return None + else: + block = await self.get_block(next_block) + timestamp = int(block["timestamp"], 16) + self.ts_offset + current_timestamp = int(time.time()) + if current_timestamp > timestamp: + return next_block + else: + self.logger.info( + f"Block {next_block} timestamp:{timestamp} is not reached, current:{current_timestamp}" + ) + await asyncio.sleep(timestamp - current_timestamp) + return None + + async def get_latest_block(self) -> Optional[int]: + """get latest block number""" + try: + response = requests.post( + self.eth_rpc, + json={ + "jsonrpc": "2.0", + "method": "eth_blockNumber", + "params": [], + "id": 1, + }, + timeout=10, + ) + result = response.json() + return int(result["result"], 16) + except Exception as e: + self.logger.error(f"Failed to get latest block: {e}") + return None + + def generate_post_data(self, block_number: int) -> Dict[str, Any]: + """generate post data""" + return { + "block_numbers": [[block_number, None]], + "block_number": block_number, + "prover": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", + "graffiti": "8008500000000000000000000000000000000000000000000000000000000000", + "proof_type": self.prove_type, + "blob_proof_type": "proof_of_equivalence", + "native": {}, + "sgx": { + "instance_id": 1234, + "setup": False, + "bootstrap": False, + "prove": True, + }, + "risc0": { + "bonsai": True, + "snark": True, + "profile": False, + "execution_po2": 20, + }, + "sp1": {"recursion": "plonk", "prover": "network", "verify": True}, + } + + async def submit_to_raiko(self, block_number: int) -> Optional[str]: + """submit block to Raiko""" + try: + headers = {"x-api-key": "1", "Content-Type": "application/json"} + print(headers) + + payload = self.generate_post_data(block_number) + print(payload) + + response = requests.post( + f"{self.raiko_rpc}/v2/proof", + headers=headers, + json=payload, + timeout=10, + ) + result = response.json() + + if result.get("status") == "ok": + self.logger.info( + f"Block {block_number} submitted to Raiko with response: {result}" + ) + return None + else: + self.logger.error( + f"Failed to submit block: {result.get('message', 'Unknown error')}" + ) + return None + except Exception as e: + self.logger.error(f"Failed to submit to Raiko: {e}") + return None + + async def query_raiko_status(self, block_number: int) -> RaikoResponse: + """query Raiko status""" + try: + headers = {"x-api-key": "1", "Content-Type": "application/json"} + payload = self.generate_post_data(block_number) + response = requests.post( + f"{self.raiko_rpc}/v2/proof", + headers=headers, + json=payload, + timeout=10, + ) + result = response.json() + if result.get("status") == "error": + return RaikoResponse( + status="error", message=result.get("message", "Unknown error") + ) + elif result.get("status") == "ok": + return RaikoResponse(status="ok", data=result.get("data", {})) + else: + return RaikoResponse(status="error", message="Invalid response format") + except Exception as e: + self.logger.error(f"Failed to query Raiko status: {e}") + return RaikoResponse(status="error", message=str(e)) + + async def process_block(self, block_number: int): + """handle new block""" + try: + start_time = datetime.now() + self.logger.info( + f"Starting to process block {block_number} at {start_time}" + ) + + with open(self.log_file, "a") as f: + f.write(f"\nBlock {block_number} processing started at {start_time}\n") + + # request Raiko + await self.submit_to_raiko(block_number) + + # polling + retry_count = 0 + start_polling_time = time.time() + + while True: + if time.time() - start_polling_time > self.timeout: + self.logger.error(f"Timeout waiting for block {block_number}") + break + + response = await self.query_raiko_status(block_number) + + if response.status == "error": + self.logger.error( + f"Error processing block {block_number}: {response.message}" + ) + retry_count += 1 + if retry_count >= self.max_retries: + self.logger.error( + f"Max retries reached for block {block_number}" + ) + break + + if response.data: + retry_count = 0 # reset retry count + if response.data.get("status") == "registered": + self.logger.info(f"Block {block_number} registered") + elif response.data.get("status") == "work_in_progress": + self.logger.info(f"Block {block_number} in progress") + elif response.data.get("proof"): + self.logger.info( + f"Block {block_number} completed with proof {response.data['proof']['proof']}" + ) + break + else: + self.logger.warning( + f"Block {block_number} unhandled status: {response}" + ) + + await asyncio.sleep(self.task_polling_interval) + + end_time = datetime.now() + duration = (end_time - start_time).total_seconds() + + # log ending status + with open(self.log_file, "a") as f: + f.write( + f"Block {block_number} processed {response.status} at {end_time}, duration: {duration} seconds\n" + ) + if response.message: + f.write(f"Message: {response.message}\n") + if response.data and response.data.get("proof"): + f.write(f"Proof: {response.data['proof']['proof']}\n") + finally: + self.running_count -= 1 + self.logger.info( + f"Block {block_number} processed, remaining running: {self.running_count}" + ) + + async def run(self): + """main loop""" + self.logger.info("Starting block monitor") + # print start config + self.logger.info(f"Config:\n{json.dumps(self.__dict__, indent=2, default=str)}") + acc_odds = 1 + while True: + try: + current_block = await self.get_next_block() + + if current_block and ( + not self.last_block or current_block > self.last_block + ): + self.logger.info(f"New block detected: {current_block}") + acc_odds += self.block_running_ratio + if acc_odds >= 1.0: + self.logger.info( + f"To run block: {current_block}, current running tasks: {self.running_count}" + ) + self.running_count += 1 + acc_odds -= 1.0 + # await self.process_block(current_block) + asyncio.create_task(self.process_block(current_block)) + else: + self.logger.info( + f"Block {current_block} skipped due to block_running_ratio:{self.block_running_ratio}" + ) + self.last_block = current_block + await asyncio.sleep(self.block_polling_interval) + + except Exception as e: + self.logger.error(f"Error in main loop: {e}") + await asyncio.sleep(self.block_polling_interval) + + +def parse_none_value(value): + """support none value""" + if value and value.lower() in ["none", "null"]: + return None + return value + + +def parse_block_range(value): + """support block range in format start,end or none""" + if value and value.lower() in ["none", "null"]: + return None + try: + start_block, end_block = map(int, value.split(",")) + return (start_block, end_block) + except (ValueError, AttributeError): + raise argparse.ArgumentTypeError( + 'Block range must be in format "start,end" or "none"' + ) + + +async def main(): + parser = argparse.ArgumentParser(description="Block Monitor CLI") + + parser.add_argument( + "-e", + "--eth-rpc", + type=parse_none_value, + default="https://rpc.mainnet.taiko.xyz", + help='Ethereum RPC endpoint (use "none" for None value)', + ) + + parser.add_argument( + "-a", + "--raiko-rpc", + type=parse_none_value, + default="http://localhost:8088", + help='Raiko RPC endpoint (use "none" for None value)', + ) + + parser.add_argument( + "-o", + "--log-file", + type=parse_none_value, + default="block_monitor.log", + help='Log file path (use "none" for None value)', + ) + + parser.add_argument( + "-p", + "--polling-interval", + type=lambda x: int(x) if x.lower() not in ["none", "null"] else None, + default=3, + help='Polling interval in seconds (use "none" for None value)', + ) + + parser.add_argument( + "-r", + "--block-running-ratio", + type=lambda x: float(x) if x.lower() not in ["none", "null"] else None, + default=1.0, + help='Block running ratio (use "none" for None value)', + ) + + parser.add_argument( + "-g", + "--block-range", + type=parse_block_range, + default="None", + help='Block range in format "start,end" or "none" for None value', + ) + + parser.add_argument( + "-t", + "--prove-type", + type=parse_none_value, + default="native", + help='Prove type (use "none" for None value)', + ) + + args = parser.parse_args() + + monitor = BlockMonitor( + eth_rpc=args.eth_rpc, + raiko_rpc=args.raiko_rpc, + log_file=args.log_file, + polling_interval=args.polling_interval, + block_running_ratio=args.block_running_ratio, + block_range=args.block_range, + prove_type=args.prove_type, + ) + + await monitor.run() + + +if __name__ == "__main__": + asyncio.run(main()) From 05dad96adae9f8c2f36032b93d8c23c256edded7 Mon Sep 17 00:00:00 2001 From: smtmfft Date: Mon, 24 Mar 2025 11:30:51 +0800 Subject: [PATCH 2/2] add missing abi --- script/ITaikoInbox.json | 1 + script/{stress_batch_test.py => stress_batch.py} | 0 2 files changed, 1 insertion(+) create mode 100644 script/ITaikoInbox.json rename script/{stress_batch_test.py => stress_batch.py} (100%) diff --git a/script/ITaikoInbox.json b/script/ITaikoInbox.json new file mode 100644 index 000000000..03a625cd3 --- /dev/null +++ b/script/ITaikoInbox.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"bondBalanceOf","inputs":[{"name":"_user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"bondToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"depositBond","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getBatch","inputs":[{"name":"_batchId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"batch_","type":"tuple","internalType":"struct ITaikoInbox.Batch","components":[{"name":"metaHash","type":"bytes32","internalType":"bytes32"},{"name":"lastBlockId","type":"uint64","internalType":"uint64"},{"name":"reserved3","type":"uint96","internalType":"uint96"},{"name":"livenessBond","type":"uint96","internalType":"uint96"},{"name":"batchId","type":"uint64","internalType":"uint64"},{"name":"lastBlockTimestamp","type":"uint64","internalType":"uint64"},{"name":"anchorBlockId","type":"uint64","internalType":"uint64"},{"name":"nextTransitionId","type":"uint24","internalType":"uint24"},{"name":"reserved4","type":"uint8","internalType":"uint8"},{"name":"verifiedTransitionId","type":"uint24","internalType":"uint24"}]}],"stateMutability":"view"},{"type":"function","name":"getBatchVerifyingTransition","inputs":[{"name":"_batchId","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITaikoInbox.TransitionState","components":[{"name":"parentHash","type":"bytes32","internalType":"bytes32"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"stateRoot","type":"bytes32","internalType":"bytes32"},{"name":"prover","type":"address","internalType":"address"},{"name":"inProvingWindow","type":"bool","internalType":"bool"},{"name":"createdAt","type":"uint48","internalType":"uint48"}]}],"stateMutability":"view"},{"type":"function","name":"getLastSyncedTransition","inputs":[],"outputs":[{"name":"batchId_","type":"uint64","internalType":"uint64"},{"name":"blockId_","type":"uint64","internalType":"uint64"},{"name":"ts_","type":"tuple","internalType":"struct ITaikoInbox.TransitionState","components":[{"name":"parentHash","type":"bytes32","internalType":"bytes32"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"stateRoot","type":"bytes32","internalType":"bytes32"},{"name":"prover","type":"address","internalType":"address"},{"name":"inProvingWindow","type":"bool","internalType":"bool"},{"name":"createdAt","type":"uint48","internalType":"uint48"}]}],"stateMutability":"view"},{"type":"function","name":"getLastVerifiedTransition","inputs":[],"outputs":[{"name":"batchId_","type":"uint64","internalType":"uint64"},{"name":"blockId_","type":"uint64","internalType":"uint64"},{"name":"ts_","type":"tuple","internalType":"struct ITaikoInbox.TransitionState","components":[{"name":"parentHash","type":"bytes32","internalType":"bytes32"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"stateRoot","type":"bytes32","internalType":"bytes32"},{"name":"prover","type":"address","internalType":"address"},{"name":"inProvingWindow","type":"bool","internalType":"bool"},{"name":"createdAt","type":"uint48","internalType":"uint48"}]}],"stateMutability":"view"},{"type":"function","name":"getStats1","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct ITaikoInbox.Stats1","components":[{"name":"genesisHeight","type":"uint64","internalType":"uint64"},{"name":"__reserved2","type":"uint64","internalType":"uint64"},{"name":"lastSyncedBatchId","type":"uint64","internalType":"uint64"},{"name":"lastSyncedAt","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getStats2","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct ITaikoInbox.Stats2","components":[{"name":"numBatches","type":"uint64","internalType":"uint64"},{"name":"lastVerifiedBatchId","type":"uint64","internalType":"uint64"},{"name":"paused","type":"bool","internalType":"bool"},{"name":"lastProposedIn","type":"uint56","internalType":"uint56"},{"name":"lastUnpausedAt","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getTransitionById","inputs":[{"name":"_batchId","type":"uint64","internalType":"uint64"},{"name":"_tid","type":"uint24","internalType":"uint24"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITaikoInbox.TransitionState","components":[{"name":"parentHash","type":"bytes32","internalType":"bytes32"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"stateRoot","type":"bytes32","internalType":"bytes32"},{"name":"prover","type":"address","internalType":"address"},{"name":"inProvingWindow","type":"bool","internalType":"bool"},{"name":"createdAt","type":"uint48","internalType":"uint48"}]}],"stateMutability":"view"},{"type":"function","name":"getTransitionByParentHash","inputs":[{"name":"_batchId","type":"uint64","internalType":"uint64"},{"name":"_parentHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ITaikoInbox.TransitionState","components":[{"name":"parentHash","type":"bytes32","internalType":"bytes32"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"stateRoot","type":"bytes32","internalType":"bytes32"},{"name":"prover","type":"address","internalType":"address"},{"name":"inProvingWindow","type":"bool","internalType":"bool"},{"name":"createdAt","type":"uint48","internalType":"uint48"}]}],"stateMutability":"view"},{"type":"function","name":"pacayaConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct ITaikoInbox.Config","components":[{"name":"chainId","type":"uint64","internalType":"uint64"},{"name":"maxUnverifiedBatches","type":"uint64","internalType":"uint64"},{"name":"batchRingBufferSize","type":"uint64","internalType":"uint64"},{"name":"maxBatchesToVerify","type":"uint64","internalType":"uint64"},{"name":"blockMaxGasLimit","type":"uint32","internalType":"uint32"},{"name":"livenessBondBase","type":"uint96","internalType":"uint96"},{"name":"livenessBondPerBlock","type":"uint96","internalType":"uint96"},{"name":"stateRootSyncInternal","type":"uint8","internalType":"uint8"},{"name":"maxAnchorHeightOffset","type":"uint64","internalType":"uint64"},{"name":"baseFeeConfig","type":"tuple","internalType":"struct LibSharedData.BaseFeeConfig","components":[{"name":"adjustmentQuotient","type":"uint8","internalType":"uint8"},{"name":"sharingPctg","type":"uint8","internalType":"uint8"},{"name":"gasIssuancePerSecond","type":"uint32","internalType":"uint32"},{"name":"minGasExcess","type":"uint64","internalType":"uint64"},{"name":"maxGasIssuancePerBlock","type":"uint32","internalType":"uint32"}]},{"name":"provingWindow","type":"uint16","internalType":"uint16"},{"name":"cooldownWindow","type":"uint24","internalType":"uint24"},{"name":"maxSignalsToReceive","type":"uint8","internalType":"uint8"},{"name":"maxBlocksPerBatch","type":"uint16","internalType":"uint16"},{"name":"forkHeights","type":"tuple","internalType":"struct ITaikoInbox.ForkHeights","components":[{"name":"ontake","type":"uint64","internalType":"uint64"},{"name":"pacaya","type":"uint64","internalType":"uint64"},{"name":"shasta","type":"uint64","internalType":"uint64"},{"name":"unzen","type":"uint64","internalType":"uint64"}]}]}],"stateMutability":"view"},{"type":"function","name":"proposeBatch","inputs":[{"name":"_params","type":"bytes","internalType":"bytes"},{"name":"_txList","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"info_","type":"tuple","internalType":"struct ITaikoInbox.BatchInfo","components":[{"name":"txsHash","type":"bytes32","internalType":"bytes32"},{"name":"blocks","type":"tuple[]","internalType":"struct ITaikoInbox.BlockParams[]","components":[{"name":"numTransactions","type":"uint16","internalType":"uint16"},{"name":"timeShift","type":"uint8","internalType":"uint8"},{"name":"signalSlots","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"blobHashes","type":"bytes32[]","internalType":"bytes32[]"},{"name":"extraData","type":"bytes32","internalType":"bytes32"},{"name":"coinbase","type":"address","internalType":"address"},{"name":"proposedIn","type":"uint64","internalType":"uint64"},{"name":"blobCreatedIn","type":"uint64","internalType":"uint64"},{"name":"blobByteOffset","type":"uint32","internalType":"uint32"},{"name":"blobByteSize","type":"uint32","internalType":"uint32"},{"name":"gasLimit","type":"uint32","internalType":"uint32"},{"name":"lastBlockId","type":"uint64","internalType":"uint64"},{"name":"lastBlockTimestamp","type":"uint64","internalType":"uint64"},{"name":"anchorBlockId","type":"uint64","internalType":"uint64"},{"name":"anchorBlockHash","type":"bytes32","internalType":"bytes32"},{"name":"baseFeeConfig","type":"tuple","internalType":"struct LibSharedData.BaseFeeConfig","components":[{"name":"adjustmentQuotient","type":"uint8","internalType":"uint8"},{"name":"sharingPctg","type":"uint8","internalType":"uint8"},{"name":"gasIssuancePerSecond","type":"uint32","internalType":"uint32"},{"name":"minGasExcess","type":"uint64","internalType":"uint64"},{"name":"maxGasIssuancePerBlock","type":"uint32","internalType":"uint32"}]}]},{"name":"meta_","type":"tuple","internalType":"struct ITaikoInbox.BatchMetadata","components":[{"name":"infoHash","type":"bytes32","internalType":"bytes32"},{"name":"proposer","type":"address","internalType":"address"},{"name":"batchId","type":"uint64","internalType":"uint64"},{"name":"proposedAt","type":"uint64","internalType":"uint64"}]}],"stateMutability":"nonpayable"},{"type":"function","name":"proveBatches","inputs":[{"name":"_params","type":"bytes","internalType":"bytes"},{"name":"_proof","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawBond","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BatchProposed","inputs":[{"name":"info","type":"tuple","indexed":false,"internalType":"struct ITaikoInbox.BatchInfo","components":[{"name":"txsHash","type":"bytes32","internalType":"bytes32"},{"name":"blocks","type":"tuple[]","internalType":"struct ITaikoInbox.BlockParams[]","components":[{"name":"numTransactions","type":"uint16","internalType":"uint16"},{"name":"timeShift","type":"uint8","internalType":"uint8"},{"name":"signalSlots","type":"bytes32[]","internalType":"bytes32[]"}]},{"name":"blobHashes","type":"bytes32[]","internalType":"bytes32[]"},{"name":"extraData","type":"bytes32","internalType":"bytes32"},{"name":"coinbase","type":"address","internalType":"address"},{"name":"proposedIn","type":"uint64","internalType":"uint64"},{"name":"blobCreatedIn","type":"uint64","internalType":"uint64"},{"name":"blobByteOffset","type":"uint32","internalType":"uint32"},{"name":"blobByteSize","type":"uint32","internalType":"uint32"},{"name":"gasLimit","type":"uint32","internalType":"uint32"},{"name":"lastBlockId","type":"uint64","internalType":"uint64"},{"name":"lastBlockTimestamp","type":"uint64","internalType":"uint64"},{"name":"anchorBlockId","type":"uint64","internalType":"uint64"},{"name":"anchorBlockHash","type":"bytes32","internalType":"bytes32"},{"name":"baseFeeConfig","type":"tuple","internalType":"struct LibSharedData.BaseFeeConfig","components":[{"name":"adjustmentQuotient","type":"uint8","internalType":"uint8"},{"name":"sharingPctg","type":"uint8","internalType":"uint8"},{"name":"gasIssuancePerSecond","type":"uint32","internalType":"uint32"},{"name":"minGasExcess","type":"uint64","internalType":"uint64"},{"name":"maxGasIssuancePerBlock","type":"uint32","internalType":"uint32"}]}]},{"name":"meta","type":"tuple","indexed":false,"internalType":"struct ITaikoInbox.BatchMetadata","components":[{"name":"infoHash","type":"bytes32","internalType":"bytes32"},{"name":"proposer","type":"address","internalType":"address"},{"name":"batchId","type":"uint64","internalType":"uint64"},{"name":"proposedAt","type":"uint64","internalType":"uint64"}]},{"name":"txList","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"BatchesProved","inputs":[{"name":"verifier","type":"address","indexed":false,"internalType":"address"},{"name":"batchIds","type":"uint64[]","indexed":false,"internalType":"uint64[]"},{"name":"transitions","type":"tuple[]","indexed":false,"internalType":"struct ITaikoInbox.Transition[]","components":[{"name":"parentHash","type":"bytes32","internalType":"bytes32"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"stateRoot","type":"bytes32","internalType":"bytes32"}]}],"anonymous":false},{"type":"event","name":"BatchesVerified","inputs":[{"name":"batchId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"blockHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"BondCredited","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BondDebited","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BondDeposited","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BondWithdrawn","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ConflictingProof","inputs":[{"name":"batchId","type":"uint64","indexed":false,"internalType":"uint64"},{"name":"oldTran","type":"tuple","indexed":false,"internalType":"struct ITaikoInbox.TransitionState","components":[{"name":"parentHash","type":"bytes32","internalType":"bytes32"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"stateRoot","type":"bytes32","internalType":"bytes32"},{"name":"prover","type":"address","internalType":"address"},{"name":"inProvingWindow","type":"bool","internalType":"bool"},{"name":"createdAt","type":"uint48","internalType":"uint48"}]},{"name":"newTran","type":"tuple","indexed":false,"internalType":"struct ITaikoInbox.Transition","components":[{"name":"parentHash","type":"bytes32","internalType":"bytes32"},{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"stateRoot","type":"bytes32","internalType":"bytes32"}]}],"anonymous":false},{"type":"event","name":"Stats1Updated","inputs":[{"name":"stats1","type":"tuple","indexed":false,"internalType":"struct ITaikoInbox.Stats1","components":[{"name":"genesisHeight","type":"uint64","internalType":"uint64"},{"name":"__reserved2","type":"uint64","internalType":"uint64"},{"name":"lastSyncedBatchId","type":"uint64","internalType":"uint64"},{"name":"lastSyncedAt","type":"uint64","internalType":"uint64"}]}],"anonymous":false},{"type":"event","name":"Stats2Updated","inputs":[{"name":"stats2","type":"tuple","indexed":false,"internalType":"struct ITaikoInbox.Stats2","components":[{"name":"numBatches","type":"uint64","internalType":"uint64"},{"name":"lastVerifiedBatchId","type":"uint64","internalType":"uint64"},{"name":"paused","type":"bool","internalType":"bool"},{"name":"lastProposedIn","type":"uint56","internalType":"uint56"},{"name":"lastUnpausedAt","type":"uint64","internalType":"uint64"}]}],"anonymous":false},{"type":"error","name":"AnchorBlockIdSmallerThanParent","inputs":[]},{"type":"error","name":"AnchorBlockIdTooLarge","inputs":[]},{"type":"error","name":"AnchorBlockIdTooSmall","inputs":[]},{"type":"error","name":"ArraySizesMismatch","inputs":[]},{"type":"error","name":"BatchNotFound","inputs":[]},{"type":"error","name":"BatchVerified","inputs":[]},{"type":"error","name":"BeyondCurrentFork","inputs":[]},{"type":"error","name":"BlobNotFound","inputs":[]},{"type":"error","name":"BlobNotSpecified","inputs":[]},{"type":"error","name":"BlockNotFound","inputs":[]},{"type":"error","name":"ContractPaused","inputs":[]},{"type":"error","name":"CustomProposerMissing","inputs":[]},{"type":"error","name":"CustomProposerNotAllowed","inputs":[]},{"type":"error","name":"EtherNotPaidAsBond","inputs":[]},{"type":"error","name":"FirstBlockTimeShiftNotZero","inputs":[]},{"type":"error","name":"ForkNotActivated","inputs":[]},{"type":"error","name":"InsufficientBond","inputs":[]},{"type":"error","name":"InvalidBlobCreatedIn","inputs":[]},{"type":"error","name":"InvalidBlobParams","inputs":[]},{"type":"error","name":"InvalidGenesisBlockHash","inputs":[]},{"type":"error","name":"InvalidParams","inputs":[]},{"type":"error","name":"InvalidTransitionBlockHash","inputs":[]},{"type":"error","name":"InvalidTransitionParentHash","inputs":[]},{"type":"error","name":"InvalidTransitionStateRoot","inputs":[]},{"type":"error","name":"MetaHashMismatch","inputs":[]},{"type":"error","name":"MsgValueNotZero","inputs":[]},{"type":"error","name":"NoBlocksToProve","inputs":[]},{"type":"error","name":"NotFirstProposal","inputs":[]},{"type":"error","name":"NotInboxWrapper","inputs":[]},{"type":"error","name":"ParentMetaHashMismatch","inputs":[]},{"type":"error","name":"SameTransition","inputs":[]},{"type":"error","name":"SignalNotSent","inputs":[]},{"type":"error","name":"TimestampSmallerThanParent","inputs":[]},{"type":"error","name":"TimestampTooLarge","inputs":[]},{"type":"error","name":"TimestampTooSmall","inputs":[]},{"type":"error","name":"TooManyBatches","inputs":[]},{"type":"error","name":"TooManyBlocks","inputs":[]},{"type":"error","name":"TooManySignals","inputs":[]},{"type":"error","name":"TransitionNotFound","inputs":[]},{"type":"error","name":"ZeroAnchorBlockHash","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"bondBalanceOf(address)":"a9c2c835","bondToken()":"c28f4392","depositBond(uint256)":"4dcb05f9","getBatch(uint64)":"888775d9","getBatchVerifyingTransition(uint64)":"7e7501dc","getLastSyncedTransition()":"cee1136c","getLastVerifiedTransition()":"9c436473","getStats1()":"12ad809c","getStats2()":"26baca1c","getTransitionById(uint64,uint24)":"ff109f59","getTransitionByParentHash(uint64,bytes32)":"e8353dc0","pacayaConfig()":"b932bf2b","proposeBatch(bytes,bytes)":"47faad14","proveBatches(bytes,bytes)":"c9cc2843","withdrawBond(uint256)":"c3daab96"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AnchorBlockIdSmallerThanParent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AnchorBlockIdTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AnchorBlockIdTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ArraySizesMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchVerified\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BeyondCurrentFork\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlobNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlobNotSpecified\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BlockNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustomProposerMissing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustomProposerNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EtherNotPaidAsBond\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FirstBlockTimeShiftNotZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ForkNotActivated\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBond\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBlobCreatedIn\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBlobParams\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidGenesisBlockHash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidParams\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTransitionBlockHash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTransitionParentHash\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTransitionStateRoot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MetaHashMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueNotZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBlocksToProve\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotFirstProposal\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInboxWrapper\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ParentMetaHashMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SameTransition\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignalNotSent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampSmallerThanParent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TimestampTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyBatches\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyBlocks\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManySignals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransitionNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAnchorBlockHash\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txsHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"numTransactions\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"timeShift\",\"type\":\"uint8\"},{\"internalType\":\"bytes32[]\",\"name\":\"signalSlots\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct ITaikoInbox.BlockParams[]\",\"name\":\"blocks\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"blobHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"proposedIn\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blobCreatedIn\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blobByteOffset\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blobByteSize\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"lastBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastBlockTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"anchorBlockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"anchorBlockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"adjustmentQuotient\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"sharingPctg\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"minGasExcess\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\"}],\"internalType\":\"struct LibSharedData.BaseFeeConfig\",\"name\":\"baseFeeConfig\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct ITaikoInbox.BatchInfo\",\"name\":\"info\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"infoHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"batchId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"struct ITaikoInbox.BatchMetadata\",\"name\":\"meta\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"BatchProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"verifier\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64[]\",\"name\":\"batchIds\",\"type\":\"uint64[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct ITaikoInbox.Transition[]\",\"name\":\"transitions\",\"type\":\"tuple[]\"}],\"name\":\"BatchesProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"batchId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"BatchesVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"batchId\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"inProvingWindow\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"}],\"indexed\":false,\"internalType\":\"struct ITaikoInbox.TransitionState\",\"name\":\"oldTran\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"struct ITaikoInbox.Transition\",\"name\":\"newTran\",\"type\":\"tuple\"}],\"name\":\"ConflictingProof\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"__reserved2\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastSyncedBatchId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastSyncedAt\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"struct ITaikoInbox.Stats1\",\"name\":\"stats1\",\"type\":\"tuple\"}],\"name\":\"Stats1Updated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBatches\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBatchId\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"uint56\",\"name\":\"lastProposedIn\",\"type\":\"uint56\"},{\"internalType\":\"uint64\",\"name\":\"lastUnpausedAt\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"struct ITaikoInbox.Stats2\",\"name\":\"stats2\",\"type\":\"tuple\"}],\"name\":\"Stats2Updated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"bondBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bondToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"depositBond\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_batchId\",\"type\":\"uint64\"}],\"name\":\"getBatch\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"lastBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"reserved3\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"batchId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastBlockTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"anchorBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint24\",\"name\":\"nextTransitionId\",\"type\":\"uint24\"},{\"internalType\":\"uint8\",\"name\":\"reserved4\",\"type\":\"uint8\"},{\"internalType\":\"uint24\",\"name\":\"verifiedTransitionId\",\"type\":\"uint24\"}],\"internalType\":\"struct ITaikoInbox.Batch\",\"name\":\"batch_\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_batchId\",\"type\":\"uint64\"}],\"name\":\"getBatchVerifyingTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"inProvingWindow\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"}],\"internalType\":\"struct ITaikoInbox.TransitionState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastSyncedTransition\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"batchId_\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockId_\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"inProvingWindow\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"}],\"internalType\":\"struct ITaikoInbox.TransitionState\",\"name\":\"ts_\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastVerifiedTransition\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"batchId_\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockId_\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"inProvingWindow\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"}],\"internalType\":\"struct ITaikoInbox.TransitionState\",\"name\":\"ts_\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStats1\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"__reserved2\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastSyncedBatchId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastSyncedAt\",\"type\":\"uint64\"}],\"internalType\":\"struct ITaikoInbox.Stats1\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStats2\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBatches\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBatchId\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"uint56\",\"name\":\"lastProposedIn\",\"type\":\"uint56\"},{\"internalType\":\"uint64\",\"name\":\"lastUnpausedAt\",\"type\":\"uint64\"}],\"internalType\":\"struct ITaikoInbox.Stats2\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_batchId\",\"type\":\"uint64\"},{\"internalType\":\"uint24\",\"name\":\"_tid\",\"type\":\"uint24\"}],\"name\":\"getTransitionById\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"inProvingWindow\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"}],\"internalType\":\"struct ITaikoInbox.TransitionState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_batchId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransitionByParentHash\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"inProvingWindow\",\"type\":\"bool\"},{\"internalType\":\"uint48\",\"name\":\"createdAt\",\"type\":\"uint48\"}],\"internalType\":\"struct ITaikoInbox.TransitionState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pacayaConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxUnverifiedBatches\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"batchRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxBatchesToVerify\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"livenessBondBase\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"livenessBondPerBlock\",\"type\":\"uint96\"},{\"internalType\":\"uint8\",\"name\":\"stateRootSyncInternal\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"maxAnchorHeightOffset\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"adjustmentQuotient\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"sharingPctg\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"minGasExcess\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\"}],\"internalType\":\"struct LibSharedData.BaseFeeConfig\",\"name\":\"baseFeeConfig\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"provingWindow\",\"type\":\"uint16\"},{\"internalType\":\"uint24\",\"name\":\"cooldownWindow\",\"type\":\"uint24\"},{\"internalType\":\"uint8\",\"name\":\"maxSignalsToReceive\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"maxBlocksPerBatch\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"ontake\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"pacaya\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"shasta\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"unzen\",\"type\":\"uint64\"}],\"internalType\":\"struct ITaikoInbox.ForkHeights\",\"name\":\"forkHeights\",\"type\":\"tuple\"}],\"internalType\":\"struct ITaikoInbox.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_txList\",\"type\":\"bytes\"}],\"name\":\"proposeBatch\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txsHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"numTransactions\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"timeShift\",\"type\":\"uint8\"},{\"internalType\":\"bytes32[]\",\"name\":\"signalSlots\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct ITaikoInbox.BlockParams[]\",\"name\":\"blocks\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"blobHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"proposedIn\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blobCreatedIn\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blobByteOffset\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blobByteSize\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"lastBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastBlockTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"anchorBlockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"anchorBlockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"adjustmentQuotient\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"sharingPctg\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"gasIssuancePerSecond\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"minGasExcess\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"maxGasIssuancePerBlock\",\"type\":\"uint32\"}],\"internalType\":\"struct LibSharedData.BaseFeeConfig\",\"name\":\"baseFeeConfig\",\"type\":\"tuple\"}],\"internalType\":\"struct ITaikoInbox.BatchInfo\",\"name\":\"info_\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"infoHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"batchId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"}],\"internalType\":\"struct ITaikoInbox.BatchMetadata\",\"name\":\"meta_\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"proveBatches\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"custom:security-contact\":\"security@taiko.xyz\",\"details\":\"Registered in the address resolver as \\\"taiko\\\".\",\"events\":{\"BatchProposed((bytes32,(uint16,uint8,bytes32[])[],bytes32[],bytes32,address,uint64,uint64,uint32,uint32,uint32,uint64,uint64,uint64,bytes32,(uint8,uint8,uint32,uint64,uint32)),(bytes32,address,uint64,uint64),bytes)\":{\"params\":{\"info\":\"The info of the proposed batch.\",\"meta\":\"The metadata of the proposed batch.\",\"txList\":\"The tx list in calldata.\"}},\"BatchesProved(address,uint64[],(bytes32,bytes32,bytes32)[])\":{\"params\":{\"transitions\":\"The transitions data.\",\"verifier\":\"The address of the verifier.\"}},\"BatchesVerified(uint64,bytes32)\":{\"params\":{\"batchId\":\"The ID of the verified batch.\",\"blockHash\":\"The hash of the verified batch.\"}},\"BondCredited(address,uint256)\":{\"params\":{\"amount\":\"The amount of tokens credited.\",\"user\":\"The address of the user whose bond balance is credited.\"}},\"BondDebited(address,uint256)\":{\"params\":{\"amount\":\"The amount of tokens debited.\",\"user\":\"The address of the user whose bond balance is debited.\"}},\"BondDeposited(address,uint256)\":{\"params\":{\"amount\":\"The amount of tokens deposited.\",\"user\":\"The address of the user who deposited the tokens.\"}},\"BondWithdrawn(address,uint256)\":{\"params\":{\"amount\":\"The amount of tokens withdrawn.\",\"user\":\"The address of the user who withdrew the tokens.\"}},\"ConflictingProof(uint64,(bytes32,bytes32,bytes32,address,bool,uint48),(bytes32,bytes32,bytes32))\":{\"params\":{\"batchId\":\"The batch ID.\",\"newTran\":\"The new transition.\",\"oldTran\":\"The old transition overwritten.\"}},\"Stats1Updated((uint64,uint64,uint64,uint64))\":{\"params\":{\"stats1\":\"The Stats1 data structure.\"}},\"Stats2Updated((uint64,uint64,bool,uint56,uint64))\":{\"params\":{\"stats2\":\"The Stats2 data structure.\"}}},\"kind\":\"dev\",\"methods\":{\"bondBalanceOf(address)\":{\"params\":{\"_user\":\"The address of the user.\"},\"returns\":{\"_0\":\"The TAIKO token balance of the user.\"}},\"bondToken()\":{\"returns\":{\"_0\":\"The Bond token address.\"}},\"depositBond(uint256)\":{\"params\":{\"_amount\":\"The amount of TAIKO tokens to deposit.\"}},\"getBatch(uint64)\":{\"params\":{\"_batchId\":\"The ID of the batch to retrieve.\"},\"returns\":{\"batch_\":\"The batch data.\"}},\"getBatchVerifyingTransition(uint64)\":{\"params\":{\"_batchId\":\"The batch ID.\"},\"returns\":{\"_0\":\"The transition used for verifying the batch.\"}},\"getLastSyncedTransition()\":{\"returns\":{\"batchId_\":\"The batch ID of the last synced transition.\",\"blockId_\":\"The block ID of the last synced block.\",\"ts_\":\"The last synced transition.\"}},\"getLastVerifiedTransition()\":{\"returns\":{\"batchId_\":\"The batch ID of the last verified transition.\",\"blockId_\":\"The block ID of the last verified block.\",\"ts_\":\"The last verified transition.\"}},\"getStats1()\":{\"returns\":{\"_0\":\"Stats1 structure containing the statistics.\"}},\"getStats2()\":{\"returns\":{\"_0\":\"Stats2 structure containing the statistics.\"}},\"getTransitionById(uint64,uint24)\":{\"params\":{\"_batchId\":\"The batch ID.\",\"_tid\":\"The transition ID.\"},\"returns\":{\"_0\":\"The specified transition state.\"}},\"getTransitionByParentHash(uint64,bytes32)\":{\"params\":{\"_batchId\":\"The batch ID.\",\"_parentHash\":\"The parent hash.\"},\"returns\":{\"_0\":\"The specified transition state.\"}},\"pacayaConfig()\":{\"returns\":{\"_0\":\"The current configuration.\"}},\"proposeBatch(bytes,bytes)\":{\"params\":{\"_params\":\"ABI-encoded parameters.\",\"_txList\":\"The transaction list in calldata. If the txList is empty, blob will be used for data availability.\"},\"returns\":{\"info_\":\"The info of the proposed batch.\",\"meta_\":\"The metadata of the proposed batch.\"}},\"proveBatches(bytes,bytes)\":{\"params\":{\"_params\":\"ABI-encoded parameter containing: - metas: Array of metadata for each batch being proved. - transitions: Array of batch transitions to be proved.\",\"_proof\":\"The aggregated cryptographic proof proving the batches transitions.\"}},\"withdrawBond(uint256)\":{\"params\":{\"_amount\":\"The amount of TAIKO tokens to withdraw.\"}}},\"title\":\"TaikoInbox\",\"version\":1},\"userdoc\":{\"events\":{\"BatchProposed((bytes32,(uint16,uint8,bytes32[])[],bytes32[],bytes32,address,uint64,uint64,uint32,uint32,uint32,uint64,uint64,uint64,bytes32,(uint8,uint8,uint32,uint64,uint32)),(bytes32,address,uint64,uint64),bytes)\":{\"notice\":\"Emitted when a batch is proposed.\"},\"BatchesProved(address,uint64[],(bytes32,bytes32,bytes32)[])\":{\"notice\":\"Emitted when multiple transitions are proved.\"},\"BatchesVerified(uint64,bytes32)\":{\"notice\":\"Emitted when a batch is verified.\"},\"BondCredited(address,uint256)\":{\"notice\":\"Emitted when a token is credited back to a user's bond balance.\"},\"BondDebited(address,uint256)\":{\"notice\":\"Emitted when a token is debited from a user's bond balance.\"},\"BondDeposited(address,uint256)\":{\"notice\":\"Emitted when tokens are deposited into a user's bond balance.\"},\"BondWithdrawn(address,uint256)\":{\"notice\":\"Emitted when tokens are withdrawn from a user's bond balance.\"},\"ConflictingProof(uint64,(bytes32,bytes32,bytes32,address,bool,uint48),(bytes32,bytes32,bytes32))\":{\"notice\":\"Emitted when a transition is overwritten by a conflicting one with the same parent hash but different block hash or state root.\"},\"Stats1Updated((uint64,uint64,uint64,uint64))\":{\"notice\":\"Emitted when a batch is synced.\"},\"Stats2Updated((uint64,uint64,bool,uint56,uint64))\":{\"notice\":\"Emitted when some state variable values changed.\"}},\"kind\":\"user\",\"methods\":{\"bondBalanceOf(address)\":{\"notice\":\"Returns the TAIKO token balance of a specific user.\"},\"bondToken()\":{\"notice\":\"Retrieves the Bond token address. If Ether is used as bond, this function returns address(0).\"},\"depositBond(uint256)\":{\"notice\":\"Deposits TAIKO tokens into the contract to be used as liveness bond.\"},\"getBatch(uint64)\":{\"notice\":\"Retrieves data about a specific batch.\"},\"getBatchVerifyingTransition(uint64)\":{\"notice\":\"Retrieves the transition used for verifying a batch.\"},\"getLastSyncedTransition()\":{\"notice\":\"Retrieves the transition used for the last synced batch.\"},\"getLastVerifiedTransition()\":{\"notice\":\"Retrieves the transition used for the last verified batch.\"},\"getStats1()\":{\"notice\":\"Retrieves the first set of protocol statistics.\"},\"getStats2()\":{\"notice\":\"Retrieves the second set of protocol statistics.\"},\"getTransitionById(uint64,uint24)\":{\"notice\":\"Retrieves a specific transition by batch ID and transition ID. This function may revert if the transition is not found.\"},\"getTransitionByParentHash(uint64,bytes32)\":{\"notice\":\"Retrieves a specific transition by batch ID and parent Hash. This function may revert if the transition is not found.\"},\"pacayaConfig()\":{\"notice\":\"Retrieves the current protocol configuration.\"},\"proposeBatch(bytes,bytes)\":{\"notice\":\"Proposes a batch of blocks.\"},\"proveBatches(bytes,bytes)\":{\"notice\":\"Proves state transitions for multiple batches with a single aggregated proof.\"},\"withdrawBond(uint256)\":{\"notice\":\"Withdraws a specified amount of TAIKO tokens from the contract.\"}},\"notice\":\"Acts as the inbox for the Taiko Alethia protocol, a simplified version of the original Taiko-Based Contestable Rollup (BCR). The tier-based proof system and contestation mechanisms have been removed. Key assumptions of this protocol: - Block proposals and proofs are asynchronous. Proofs are not available at proposal time, unlike Taiko Gwyneth, which assumes synchronous composability. - Proofs are presumed error-free and thoroughly validated, with proof type management delegated to IVerifier contracts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/layer1/based/ITaikoInbox.sol\":\"ITaikoInbox\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgrades/contracts/=node_modules/@openzeppelin/contracts-upgradeable/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":@optimism/=node_modules/optimism/\",\":@p256-verifier/contracts/=node_modules/p256-verifier/src/\",\":@risc0/contracts/=node_modules/risc0-ethereum/contracts/src/\",\":@solady/=node_modules/solady/\",\":@sp1-contracts/=node_modules/sp1-contracts/contracts/\",\":ds-test/=node_modules/ds-test/src/\",\":eigenlayer-contracts/=node_modules/eigenlayer-contracts/\",\":eigenlayer-middleware/=node_modules/eigenlayer-middleware/\",\":forge-std/=node_modules/forge-std/\",\":openzeppelin/=node_modules/@openzeppelin/\",\":optimism/=node_modules/optimism/\",\":p256-verifier/=node_modules/p256-verifier/\",\":risc0-ethereum/=node_modules/risc0-ethereum/\",\":script/=script/\",\":solady/=node_modules/solady/\",\":sp1-contracts/=node_modules/sp1-contracts/\",\":src/=contracts/\",\":test/=test/\"]},\"sources\":{\"contracts/layer1/based/ITaikoInbox.sol\":{\"keccak256\":\"0xd9123101a3822ba760675b22b735883dac4a2176091c9319f786acf357eada21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://609e1e20b16b65c5d411b7728bd0ea5cea8e9a08f6048f2617efaecc00684a7c\",\"dweb:/ipfs/QmXPsmoYSbjnxy4eD9wRLZpuymQhrBJeGg7q9ZdkaxYqsK\"]},\"contracts/shared/based/LibSharedData.sol\":{\"keccak256\":\"0x68967df1d6c504e78f6e84752b855ed2fd0e1288cb2be765219b803c2df0a5a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c447c0f3b50be9310b41156e9b0f500f838109e4083ca31eefdfbd80cf1f1ff\",\"dweb:/ipfs/QmdzRwJabMHwkfKa3d6bfN6CLxLfjPuau7nVQKW8uDf1T8\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AnchorBlockIdSmallerThanParent"},{"inputs":[],"type":"error","name":"AnchorBlockIdTooLarge"},{"inputs":[],"type":"error","name":"AnchorBlockIdTooSmall"},{"inputs":[],"type":"error","name":"ArraySizesMismatch"},{"inputs":[],"type":"error","name":"BatchNotFound"},{"inputs":[],"type":"error","name":"BatchVerified"},{"inputs":[],"type":"error","name":"BeyondCurrentFork"},{"inputs":[],"type":"error","name":"BlobNotFound"},{"inputs":[],"type":"error","name":"BlobNotSpecified"},{"inputs":[],"type":"error","name":"BlockNotFound"},{"inputs":[],"type":"error","name":"ContractPaused"},{"inputs":[],"type":"error","name":"CustomProposerMissing"},{"inputs":[],"type":"error","name":"CustomProposerNotAllowed"},{"inputs":[],"type":"error","name":"EtherNotPaidAsBond"},{"inputs":[],"type":"error","name":"FirstBlockTimeShiftNotZero"},{"inputs":[],"type":"error","name":"ForkNotActivated"},{"inputs":[],"type":"error","name":"InsufficientBond"},{"inputs":[],"type":"error","name":"InvalidBlobCreatedIn"},{"inputs":[],"type":"error","name":"InvalidBlobParams"},{"inputs":[],"type":"error","name":"InvalidGenesisBlockHash"},{"inputs":[],"type":"error","name":"InvalidParams"},{"inputs":[],"type":"error","name":"InvalidTransitionBlockHash"},{"inputs":[],"type":"error","name":"InvalidTransitionParentHash"},{"inputs":[],"type":"error","name":"InvalidTransitionStateRoot"},{"inputs":[],"type":"error","name":"MetaHashMismatch"},{"inputs":[],"type":"error","name":"MsgValueNotZero"},{"inputs":[],"type":"error","name":"NoBlocksToProve"},{"inputs":[],"type":"error","name":"NotFirstProposal"},{"inputs":[],"type":"error","name":"NotInboxWrapper"},{"inputs":[],"type":"error","name":"ParentMetaHashMismatch"},{"inputs":[],"type":"error","name":"SameTransition"},{"inputs":[],"type":"error","name":"SignalNotSent"},{"inputs":[],"type":"error","name":"TimestampSmallerThanParent"},{"inputs":[],"type":"error","name":"TimestampTooLarge"},{"inputs":[],"type":"error","name":"TimestampTooSmall"},{"inputs":[],"type":"error","name":"TooManyBatches"},{"inputs":[],"type":"error","name":"TooManyBlocks"},{"inputs":[],"type":"error","name":"TooManySignals"},{"inputs":[],"type":"error","name":"TransitionNotFound"},{"inputs":[],"type":"error","name":"ZeroAnchorBlockHash"},{"inputs":[{"internalType":"struct ITaikoInbox.BatchInfo","name":"info","type":"tuple","components":[{"internalType":"bytes32","name":"txsHash","type":"bytes32"},{"internalType":"struct ITaikoInbox.BlockParams[]","name":"blocks","type":"tuple[]","components":[{"internalType":"uint16","name":"numTransactions","type":"uint16"},{"internalType":"uint8","name":"timeShift","type":"uint8"},{"internalType":"bytes32[]","name":"signalSlots","type":"bytes32[]"}]},{"internalType":"bytes32[]","name":"blobHashes","type":"bytes32[]"},{"internalType":"bytes32","name":"extraData","type":"bytes32"},{"internalType":"address","name":"coinbase","type":"address"},{"internalType":"uint64","name":"proposedIn","type":"uint64"},{"internalType":"uint64","name":"blobCreatedIn","type":"uint64"},{"internalType":"uint32","name":"blobByteOffset","type":"uint32"},{"internalType":"uint32","name":"blobByteSize","type":"uint32"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"uint64","name":"lastBlockId","type":"uint64"},{"internalType":"uint64","name":"lastBlockTimestamp","type":"uint64"},{"internalType":"uint64","name":"anchorBlockId","type":"uint64"},{"internalType":"bytes32","name":"anchorBlockHash","type":"bytes32"},{"internalType":"struct LibSharedData.BaseFeeConfig","name":"baseFeeConfig","type":"tuple","components":[{"internalType":"uint8","name":"adjustmentQuotient","type":"uint8"},{"internalType":"uint8","name":"sharingPctg","type":"uint8"},{"internalType":"uint32","name":"gasIssuancePerSecond","type":"uint32"},{"internalType":"uint64","name":"minGasExcess","type":"uint64"},{"internalType":"uint32","name":"maxGasIssuancePerBlock","type":"uint32"}]}],"indexed":false},{"internalType":"struct ITaikoInbox.BatchMetadata","name":"meta","type":"tuple","components":[{"internalType":"bytes32","name":"infoHash","type":"bytes32"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint64","name":"batchId","type":"uint64"},{"internalType":"uint64","name":"proposedAt","type":"uint64"}],"indexed":false},{"internalType":"bytes","name":"txList","type":"bytes","indexed":false}],"type":"event","name":"BatchProposed","anonymous":false},{"inputs":[{"internalType":"address","name":"verifier","type":"address","indexed":false},{"internalType":"uint64[]","name":"batchIds","type":"uint64[]","indexed":false},{"internalType":"struct ITaikoInbox.Transition[]","name":"transitions","type":"tuple[]","components":[{"internalType":"bytes32","name":"parentHash","type":"bytes32"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"bytes32","name":"stateRoot","type":"bytes32"}],"indexed":false}],"type":"event","name":"BatchesProved","anonymous":false},{"inputs":[{"internalType":"uint64","name":"batchId","type":"uint64","indexed":false},{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":false}],"type":"event","name":"BatchesVerified","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"BondCredited","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"BondDebited","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"BondDeposited","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"BondWithdrawn","anonymous":false},{"inputs":[{"internalType":"uint64","name":"batchId","type":"uint64","indexed":false},{"internalType":"struct ITaikoInbox.TransitionState","name":"oldTran","type":"tuple","components":[{"internalType":"bytes32","name":"parentHash","type":"bytes32"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"bytes32","name":"stateRoot","type":"bytes32"},{"internalType":"address","name":"prover","type":"address"},{"internalType":"bool","name":"inProvingWindow","type":"bool"},{"internalType":"uint48","name":"createdAt","type":"uint48"}],"indexed":false},{"internalType":"struct ITaikoInbox.Transition","name":"newTran","type":"tuple","components":[{"internalType":"bytes32","name":"parentHash","type":"bytes32"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"bytes32","name":"stateRoot","type":"bytes32"}],"indexed":false}],"type":"event","name":"ConflictingProof","anonymous":false},{"inputs":[{"internalType":"struct ITaikoInbox.Stats1","name":"stats1","type":"tuple","components":[{"internalType":"uint64","name":"genesisHeight","type":"uint64"},{"internalType":"uint64","name":"__reserved2","type":"uint64"},{"internalType":"uint64","name":"lastSyncedBatchId","type":"uint64"},{"internalType":"uint64","name":"lastSyncedAt","type":"uint64"}],"indexed":false}],"type":"event","name":"Stats1Updated","anonymous":false},{"inputs":[{"internalType":"struct ITaikoInbox.Stats2","name":"stats2","type":"tuple","components":[{"internalType":"uint64","name":"numBatches","type":"uint64"},{"internalType":"uint64","name":"lastVerifiedBatchId","type":"uint64"},{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"uint56","name":"lastProposedIn","type":"uint56"},{"internalType":"uint64","name":"lastUnpausedAt","type":"uint64"}],"indexed":false}],"type":"event","name":"Stats2Updated","anonymous":false},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"stateMutability":"view","type":"function","name":"bondBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"bondToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"payable","type":"function","name":"depositBond"},{"inputs":[{"internalType":"uint64","name":"_batchId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBatch","outputs":[{"internalType":"struct ITaikoInbox.Batch","name":"batch_","type":"tuple","components":[{"internalType":"bytes32","name":"metaHash","type":"bytes32"},{"internalType":"uint64","name":"lastBlockId","type":"uint64"},{"internalType":"uint96","name":"reserved3","type":"uint96"},{"internalType":"uint96","name":"livenessBond","type":"uint96"},{"internalType":"uint64","name":"batchId","type":"uint64"},{"internalType":"uint64","name":"lastBlockTimestamp","type":"uint64"},{"internalType":"uint64","name":"anchorBlockId","type":"uint64"},{"internalType":"uint24","name":"nextTransitionId","type":"uint24"},{"internalType":"uint8","name":"reserved4","type":"uint8"},{"internalType":"uint24","name":"verifiedTransitionId","type":"uint24"}]}]},{"inputs":[{"internalType":"uint64","name":"_batchId","type":"uint64"}],"stateMutability":"view","type":"function","name":"getBatchVerifyingTransition","outputs":[{"internalType":"struct ITaikoInbox.TransitionState","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"parentHash","type":"bytes32"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"bytes32","name":"stateRoot","type":"bytes32"},{"internalType":"address","name":"prover","type":"address"},{"internalType":"bool","name":"inProvingWindow","type":"bool"},{"internalType":"uint48","name":"createdAt","type":"uint48"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastSyncedTransition","outputs":[{"internalType":"uint64","name":"batchId_","type":"uint64"},{"internalType":"uint64","name":"blockId_","type":"uint64"},{"internalType":"struct ITaikoInbox.TransitionState","name":"ts_","type":"tuple","components":[{"internalType":"bytes32","name":"parentHash","type":"bytes32"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"bytes32","name":"stateRoot","type":"bytes32"},{"internalType":"address","name":"prover","type":"address"},{"internalType":"bool","name":"inProvingWindow","type":"bool"},{"internalType":"uint48","name":"createdAt","type":"uint48"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastVerifiedTransition","outputs":[{"internalType":"uint64","name":"batchId_","type":"uint64"},{"internalType":"uint64","name":"blockId_","type":"uint64"},{"internalType":"struct ITaikoInbox.TransitionState","name":"ts_","type":"tuple","components":[{"internalType":"bytes32","name":"parentHash","type":"bytes32"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"bytes32","name":"stateRoot","type":"bytes32"},{"internalType":"address","name":"prover","type":"address"},{"internalType":"bool","name":"inProvingWindow","type":"bool"},{"internalType":"uint48","name":"createdAt","type":"uint48"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getStats1","outputs":[{"internalType":"struct ITaikoInbox.Stats1","name":"","type":"tuple","components":[{"internalType":"uint64","name":"genesisHeight","type":"uint64"},{"internalType":"uint64","name":"__reserved2","type":"uint64"},{"internalType":"uint64","name":"lastSyncedBatchId","type":"uint64"},{"internalType":"uint64","name":"lastSyncedAt","type":"uint64"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getStats2","outputs":[{"internalType":"struct ITaikoInbox.Stats2","name":"","type":"tuple","components":[{"internalType":"uint64","name":"numBatches","type":"uint64"},{"internalType":"uint64","name":"lastVerifiedBatchId","type":"uint64"},{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"uint56","name":"lastProposedIn","type":"uint56"},{"internalType":"uint64","name":"lastUnpausedAt","type":"uint64"}]}]},{"inputs":[{"internalType":"uint64","name":"_batchId","type":"uint64"},{"internalType":"uint24","name":"_tid","type":"uint24"}],"stateMutability":"view","type":"function","name":"getTransitionById","outputs":[{"internalType":"struct ITaikoInbox.TransitionState","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"parentHash","type":"bytes32"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"bytes32","name":"stateRoot","type":"bytes32"},{"internalType":"address","name":"prover","type":"address"},{"internalType":"bool","name":"inProvingWindow","type":"bool"},{"internalType":"uint48","name":"createdAt","type":"uint48"}]}]},{"inputs":[{"internalType":"uint64","name":"_batchId","type":"uint64"},{"internalType":"bytes32","name":"_parentHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getTransitionByParentHash","outputs":[{"internalType":"struct ITaikoInbox.TransitionState","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"parentHash","type":"bytes32"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"bytes32","name":"stateRoot","type":"bytes32"},{"internalType":"address","name":"prover","type":"address"},{"internalType":"bool","name":"inProvingWindow","type":"bool"},{"internalType":"uint48","name":"createdAt","type":"uint48"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pacayaConfig","outputs":[{"internalType":"struct ITaikoInbox.Config","name":"","type":"tuple","components":[{"internalType":"uint64","name":"chainId","type":"uint64"},{"internalType":"uint64","name":"maxUnverifiedBatches","type":"uint64"},{"internalType":"uint64","name":"batchRingBufferSize","type":"uint64"},{"internalType":"uint64","name":"maxBatchesToVerify","type":"uint64"},{"internalType":"uint32","name":"blockMaxGasLimit","type":"uint32"},{"internalType":"uint96","name":"livenessBondBase","type":"uint96"},{"internalType":"uint96","name":"livenessBondPerBlock","type":"uint96"},{"internalType":"uint8","name":"stateRootSyncInternal","type":"uint8"},{"internalType":"uint64","name":"maxAnchorHeightOffset","type":"uint64"},{"internalType":"struct LibSharedData.BaseFeeConfig","name":"baseFeeConfig","type":"tuple","components":[{"internalType":"uint8","name":"adjustmentQuotient","type":"uint8"},{"internalType":"uint8","name":"sharingPctg","type":"uint8"},{"internalType":"uint32","name":"gasIssuancePerSecond","type":"uint32"},{"internalType":"uint64","name":"minGasExcess","type":"uint64"},{"internalType":"uint32","name":"maxGasIssuancePerBlock","type":"uint32"}]},{"internalType":"uint16","name":"provingWindow","type":"uint16"},{"internalType":"uint24","name":"cooldownWindow","type":"uint24"},{"internalType":"uint8","name":"maxSignalsToReceive","type":"uint8"},{"internalType":"uint16","name":"maxBlocksPerBatch","type":"uint16"},{"internalType":"struct ITaikoInbox.ForkHeights","name":"forkHeights","type":"tuple","components":[{"internalType":"uint64","name":"ontake","type":"uint64"},{"internalType":"uint64","name":"pacaya","type":"uint64"},{"internalType":"uint64","name":"shasta","type":"uint64"},{"internalType":"uint64","name":"unzen","type":"uint64"}]}]}]},{"inputs":[{"internalType":"bytes","name":"_params","type":"bytes"},{"internalType":"bytes","name":"_txList","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"proposeBatch","outputs":[{"internalType":"struct ITaikoInbox.BatchInfo","name":"info_","type":"tuple","components":[{"internalType":"bytes32","name":"txsHash","type":"bytes32"},{"internalType":"struct ITaikoInbox.BlockParams[]","name":"blocks","type":"tuple[]","components":[{"internalType":"uint16","name":"numTransactions","type":"uint16"},{"internalType":"uint8","name":"timeShift","type":"uint8"},{"internalType":"bytes32[]","name":"signalSlots","type":"bytes32[]"}]},{"internalType":"bytes32[]","name":"blobHashes","type":"bytes32[]"},{"internalType":"bytes32","name":"extraData","type":"bytes32"},{"internalType":"address","name":"coinbase","type":"address"},{"internalType":"uint64","name":"proposedIn","type":"uint64"},{"internalType":"uint64","name":"blobCreatedIn","type":"uint64"},{"internalType":"uint32","name":"blobByteOffset","type":"uint32"},{"internalType":"uint32","name":"blobByteSize","type":"uint32"},{"internalType":"uint32","name":"gasLimit","type":"uint32"},{"internalType":"uint64","name":"lastBlockId","type":"uint64"},{"internalType":"uint64","name":"lastBlockTimestamp","type":"uint64"},{"internalType":"uint64","name":"anchorBlockId","type":"uint64"},{"internalType":"bytes32","name":"anchorBlockHash","type":"bytes32"},{"internalType":"struct LibSharedData.BaseFeeConfig","name":"baseFeeConfig","type":"tuple","components":[{"internalType":"uint8","name":"adjustmentQuotient","type":"uint8"},{"internalType":"uint8","name":"sharingPctg","type":"uint8"},{"internalType":"uint32","name":"gasIssuancePerSecond","type":"uint32"},{"internalType":"uint64","name":"minGasExcess","type":"uint64"},{"internalType":"uint32","name":"maxGasIssuancePerBlock","type":"uint32"}]}]},{"internalType":"struct ITaikoInbox.BatchMetadata","name":"meta_","type":"tuple","components":[{"internalType":"bytes32","name":"infoHash","type":"bytes32"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"uint64","name":"batchId","type":"uint64"},{"internalType":"uint64","name":"proposedAt","type":"uint64"}]}]},{"inputs":[{"internalType":"bytes","name":"_params","type":"bytes"},{"internalType":"bytes","name":"_proof","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"proveBatches"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdrawBond"}],"devdoc":{"kind":"dev","methods":{"bondBalanceOf(address)":{"params":{"_user":"The address of the user."},"returns":{"_0":"The TAIKO token balance of the user."}},"bondToken()":{"returns":{"_0":"The Bond token address."}},"depositBond(uint256)":{"params":{"_amount":"The amount of TAIKO tokens to deposit."}},"getBatch(uint64)":{"params":{"_batchId":"The ID of the batch to retrieve."},"returns":{"batch_":"The batch data."}},"getBatchVerifyingTransition(uint64)":{"params":{"_batchId":"The batch ID."},"returns":{"_0":"The transition used for verifying the batch."}},"getLastSyncedTransition()":{"returns":{"batchId_":"The batch ID of the last synced transition.","blockId_":"The block ID of the last synced block.","ts_":"The last synced transition."}},"getLastVerifiedTransition()":{"returns":{"batchId_":"The batch ID of the last verified transition.","blockId_":"The block ID of the last verified block.","ts_":"The last verified transition."}},"getStats1()":{"returns":{"_0":"Stats1 structure containing the statistics."}},"getStats2()":{"returns":{"_0":"Stats2 structure containing the statistics."}},"getTransitionById(uint64,uint24)":{"params":{"_batchId":"The batch ID.","_tid":"The transition ID."},"returns":{"_0":"The specified transition state."}},"getTransitionByParentHash(uint64,bytes32)":{"params":{"_batchId":"The batch ID.","_parentHash":"The parent hash."},"returns":{"_0":"The specified transition state."}},"pacayaConfig()":{"returns":{"_0":"The current configuration."}},"proposeBatch(bytes,bytes)":{"params":{"_params":"ABI-encoded parameters.","_txList":"The transaction list in calldata. If the txList is empty, blob will be used for data availability."},"returns":{"info_":"The info of the proposed batch.","meta_":"The metadata of the proposed batch."}},"proveBatches(bytes,bytes)":{"params":{"_params":"ABI-encoded parameter containing: - metas: Array of metadata for each batch being proved. - transitions: Array of batch transitions to be proved.","_proof":"The aggregated cryptographic proof proving the batches transitions."}},"withdrawBond(uint256)":{"params":{"_amount":"The amount of TAIKO tokens to withdraw."}}},"version":1},"userdoc":{"kind":"user","methods":{"bondBalanceOf(address)":{"notice":"Returns the TAIKO token balance of a specific user."},"bondToken()":{"notice":"Retrieves the Bond token address. If Ether is used as bond, this function returns address(0)."},"depositBond(uint256)":{"notice":"Deposits TAIKO tokens into the contract to be used as liveness bond."},"getBatch(uint64)":{"notice":"Retrieves data about a specific batch."},"getBatchVerifyingTransition(uint64)":{"notice":"Retrieves the transition used for verifying a batch."},"getLastSyncedTransition()":{"notice":"Retrieves the transition used for the last synced batch."},"getLastVerifiedTransition()":{"notice":"Retrieves the transition used for the last verified batch."},"getStats1()":{"notice":"Retrieves the first set of protocol statistics."},"getStats2()":{"notice":"Retrieves the second set of protocol statistics."},"getTransitionById(uint64,uint24)":{"notice":"Retrieves a specific transition by batch ID and transition ID. This function may revert if the transition is not found."},"getTransitionByParentHash(uint64,bytes32)":{"notice":"Retrieves a specific transition by batch ID and parent Hash. This function may revert if the transition is not found."},"pacayaConfig()":{"notice":"Retrieves the current protocol configuration."},"proposeBatch(bytes,bytes)":{"notice":"Proposes a batch of blocks."},"proveBatches(bytes,bytes)":{"notice":"Proves state transitions for multiple batches with a single aggregated proof."},"withdrawBond(uint256)":{"notice":"Withdraws a specified amount of TAIKO tokens from the contract."}},"version":1}},"settings":{"remappings":["@openzeppelin-upgrades/contracts/=node_modules/@openzeppelin/contracts-upgradeable/","@openzeppelin/=node_modules/@openzeppelin/","@optimism/=node_modules/optimism/","@p256-verifier/contracts/=node_modules/p256-verifier/src/","@risc0/contracts/=node_modules/risc0-ethereum/contracts/src/","@solady/=node_modules/solady/","@sp1-contracts/=node_modules/sp1-contracts/contracts/","ds-test/=node_modules/ds-test/src/","eigenlayer-contracts/=node_modules/eigenlayer-contracts/","eigenlayer-middleware/=node_modules/eigenlayer-middleware/","forge-std/=node_modules/forge-std/","openzeppelin/=node_modules/@openzeppelin/","optimism/=node_modules/optimism/","p256-verifier/=node_modules/p256-verifier/","risc0-ethereum/=node_modules/risc0-ethereum/","script/=script/","solady/=node_modules/solady/","sp1-contracts/=node_modules/sp1-contracts/","src/=contracts/","test/=test/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/layer1/based/ITaikoInbox.sol":"ITaikoInbox"},"evmVersion":"cancun","libraries":{}},"sources":{"contracts/layer1/based/ITaikoInbox.sol":{"keccak256":"0xd9123101a3822ba760675b22b735883dac4a2176091c9319f786acf357eada21","urls":["bzz-raw://609e1e20b16b65c5d411b7728bd0ea5cea8e9a08f6048f2617efaecc00684a7c","dweb:/ipfs/QmXPsmoYSbjnxy4eD9wRLZpuymQhrBJeGg7q9ZdkaxYqsK"],"license":"MIT"},"contracts/shared/based/LibSharedData.sol":{"keccak256":"0x68967df1d6c504e78f6e84752b855ed2fd0e1288cb2be765219b803c2df0a5a6","urls":["bzz-raw://8c447c0f3b50be9310b41156e9b0f500f838109e4083ca31eefdfbd80cf1f1ff","dweb:/ipfs/QmdzRwJabMHwkfKa3d6bfN6CLxLfjPuau7nVQKW8uDf1T8"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"contracts/layer1/based/ITaikoInbox.sol","id":5727,"exportedSymbols":{"ITaikoInbox":[5726],"LibSharedData":[17038]},"nodeType":"SourceUnit","src":"32:16559:15","nodes":[{"id":5184,"nodeType":"PragmaDirective","src":"32:24:15","nodes":[],"literals":["solidity","^","0.8",".24"]},{"id":5185,"nodeType":"ImportDirective","src":"58:44:15","nodes":[],"absolutePath":"contracts/shared/based/LibSharedData.sol","file":"src/shared/based/LibSharedData.sol","nameLocation":"-1:-1:-1","scope":5727,"sourceUnit":17039,"symbolAliases":[],"unitAlias":""},{"id":5726,"nodeType":"ContractDefinition","src":"789:15801:15","nodes":[{"id":5194,"nodeType":"StructDefinition","src":"817:652:15","nodes":[],"canonicalName":"ITaikoInbox.BlockParams","members":[{"constant":false,"id":5188,"mutability":"mutable","name":"numTransactions","nameLocation":"1059:15:15","nodeType":"VariableDeclaration","scope":5194,"src":"1052:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":5187,"name":"uint16","nodeType":"ElementaryTypeName","src":"1052:6:15","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":5190,"mutability":"mutable","name":"timeShift","nameLocation":"1357:9:15","nodeType":"VariableDeclaration","scope":5194,"src":"1351:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5189,"name":"uint8","nodeType":"ElementaryTypeName","src":"1351:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5193,"mutability":"mutable","name":"signalSlots","nameLocation":"1451:11:15","nodeType":"VariableDeclaration","scope":5194,"src":"1441:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":5191,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1441:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5192,"nodeType":"ArrayTypeName","src":"1441:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"name":"BlockParams","nameLocation":"824:11:15","scope":5726,"visibility":"public"},{"id":5208,"nodeType":"StructDefinition","src":"1475:645:15","nodes":[],"canonicalName":"ITaikoInbox.BlobParams","members":[{"constant":false,"id":5197,"mutability":"mutable","name":"blobHashes","nameLocation":"1641:10:15","nodeType":"VariableDeclaration","scope":5208,"src":"1631:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":5195,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1631:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5196,"nodeType":"ArrayTypeName","src":"1631:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":5199,"mutability":"mutable","name":"firstBlobIndex","nameLocation":"1721:14:15","nodeType":"VariableDeclaration","scope":5208,"src":"1715:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5198,"name":"uint8","nodeType":"ElementaryTypeName","src":"1715:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5201,"mutability":"mutable","name":"numBlobs","nameLocation":"1881:8:15","nodeType":"VariableDeclaration","scope":5208,"src":"1875:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5200,"name":"uint8","nodeType":"ElementaryTypeName","src":"1875:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5203,"mutability":"mutable","name":"byteOffset","nameLocation":"1959:10:15","nodeType":"VariableDeclaration","scope":5208,"src":"1952:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5202,"name":"uint32","nodeType":"ElementaryTypeName","src":"1952:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5205,"mutability":"mutable","name":"byteSize","nameLocation":"2024:8:15","nodeType":"VariableDeclaration","scope":5208,"src":"2017:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5204,"name":"uint32","nodeType":"ElementaryTypeName","src":"2017:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5207,"mutability":"mutable","name":"createdIn","nameLocation":"2104:9:15","nodeType":"VariableDeclaration","scope":5208,"src":"2097:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5206,"name":"uint64","nodeType":"ElementaryTypeName","src":"2097:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"name":"BlobParams","nameLocation":"1482:10:15","scope":5726,"visibility":"public"},{"id":5228,"nodeType":"StructDefinition","src":"2126:350:15","nodes":[],"canonicalName":"ITaikoInbox.BatchParams","members":[{"constant":false,"id":5210,"mutability":"mutable","name":"proposer","nameLocation":"2163:8:15","nodeType":"VariableDeclaration","scope":5228,"src":"2155:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5209,"name":"address","nodeType":"ElementaryTypeName","src":"2155:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5212,"mutability":"mutable","name":"coinbase","nameLocation":"2189:8:15","nodeType":"VariableDeclaration","scope":5228,"src":"2181:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5211,"name":"address","nodeType":"ElementaryTypeName","src":"2181:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5214,"mutability":"mutable","name":"parentMetaHash","nameLocation":"2215:14:15","nodeType":"VariableDeclaration","scope":5228,"src":"2207:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5213,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2207:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5216,"mutability":"mutable","name":"anchorBlockId","nameLocation":"2246:13:15","nodeType":"VariableDeclaration","scope":5228,"src":"2239:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5215,"name":"uint64","nodeType":"ElementaryTypeName","src":"2239:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5218,"mutability":"mutable","name":"lastBlockTimestamp","nameLocation":"2276:18:15","nodeType":"VariableDeclaration","scope":5228,"src":"2269:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5217,"name":"uint64","nodeType":"ElementaryTypeName","src":"2269:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5220,"mutability":"mutable","name":"revertIfNotFirstProposal","nameLocation":"2309:24:15","nodeType":"VariableDeclaration","scope":5228,"src":"2304:29:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5219,"name":"bool","nodeType":"ElementaryTypeName","src":"2304:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5223,"mutability":"mutable","name":"blobParams","nameLocation":"2429:10:15","nodeType":"VariableDeclaration","scope":5228,"src":"2418:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_BlobParams_$5208_storage_ptr","typeString":"struct ITaikoInbox.BlobParams"},"typeName":{"id":5222,"nodeType":"UserDefinedTypeName","pathNode":{"id":5221,"name":"BlobParams","nameLocations":["2418:10:15"],"nodeType":"IdentifierPath","referencedDeclaration":5208,"src":"2418:10:15"},"referencedDeclaration":5208,"src":"2418:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_BlobParams_$5208_storage_ptr","typeString":"struct ITaikoInbox.BlobParams"}},"visibility":"internal"},{"constant":false,"id":5227,"mutability":"mutable","name":"blocks","nameLocation":"2463:6:15","nodeType":"VariableDeclaration","scope":5228,"src":"2449:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockParams_$5194_storage_$dyn_storage_ptr","typeString":"struct ITaikoInbox.BlockParams[]"},"typeName":{"baseType":{"id":5225,"nodeType":"UserDefinedTypeName","pathNode":{"id":5224,"name":"BlockParams","nameLocations":["2449:11:15"],"nodeType":"IdentifierPath","referencedDeclaration":5194,"src":"2449:11:15"},"referencedDeclaration":5194,"src":"2449:11:15","typeDescriptions":{"typeIdentifier":"t_struct$_BlockParams_$5194_storage_ptr","typeString":"struct ITaikoInbox.BlockParams"}},"id":5226,"nodeType":"ArrayTypeName","src":"2449:13:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockParams_$5194_storage_$dyn_storage_ptr","typeString":"struct ITaikoInbox.BlockParams[]"}},"visibility":"internal"}],"name":"BatchParams","nameLocation":"2133:11:15","scope":5726,"visibility":"public"},{"id":5264,"nodeType":"StructDefinition","src":"2641:792:15","nodes":[],"canonicalName":"ITaikoInbox.BatchInfo","documentation":{"id":5229,"nodeType":"StructuredDocumentation","src":"2482:154:15","text":"@dev This struct holds batch information essential for constructing blocks offchain, but it\n does not include data necessary for batch proving."},"members":[{"constant":false,"id":5231,"mutability":"mutable","name":"txsHash","nameLocation":"2676:7:15","nodeType":"VariableDeclaration","scope":5264,"src":"2668:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5230,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2668:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5235,"mutability":"mutable","name":"blocks","nameLocation":"2742:6:15","nodeType":"VariableDeclaration","scope":5264,"src":"2728:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockParams_$5194_storage_$dyn_storage_ptr","typeString":"struct ITaikoInbox.BlockParams[]"},"typeName":{"baseType":{"id":5233,"nodeType":"UserDefinedTypeName","pathNode":{"id":5232,"name":"BlockParams","nameLocations":["2728:11:15"],"nodeType":"IdentifierPath","referencedDeclaration":5194,"src":"2728:11:15"},"referencedDeclaration":5194,"src":"2728:11:15","typeDescriptions":{"typeIdentifier":"t_struct$_BlockParams_$5194_storage_ptr","typeString":"struct ITaikoInbox.BlockParams"}},"id":5234,"nodeType":"ArrayTypeName","src":"2728:13:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockParams_$5194_storage_$dyn_storage_ptr","typeString":"struct ITaikoInbox.BlockParams[]"}},"visibility":"internal"},{"constant":false,"id":5238,"mutability":"mutable","name":"blobHashes","nameLocation":"2768:10:15","nodeType":"VariableDeclaration","scope":5264,"src":"2758:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":5236,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2758:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5237,"nodeType":"ArrayTypeName","src":"2758:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":5240,"mutability":"mutable","name":"extraData","nameLocation":"2796:9:15","nodeType":"VariableDeclaration","scope":5264,"src":"2788:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5239,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2788:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5242,"mutability":"mutable","name":"coinbase","nameLocation":"2823:8:15","nodeType":"VariableDeclaration","scope":5264,"src":"2815:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5241,"name":"address","nodeType":"ElementaryTypeName","src":"2815:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5244,"mutability":"mutable","name":"proposedIn","nameLocation":"2848:10:15","nodeType":"VariableDeclaration","scope":5264,"src":"2841:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5243,"name":"uint64","nodeType":"ElementaryTypeName","src":"2841:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5246,"mutability":"mutable","name":"blobCreatedIn","nameLocation":"2898:13:15","nodeType":"VariableDeclaration","scope":5264,"src":"2891:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5245,"name":"uint64","nodeType":"ElementaryTypeName","src":"2891:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5248,"mutability":"mutable","name":"blobByteOffset","nameLocation":"2928:14:15","nodeType":"VariableDeclaration","scope":5264,"src":"2921:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5247,"name":"uint32","nodeType":"ElementaryTypeName","src":"2921:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5250,"mutability":"mutable","name":"blobByteSize","nameLocation":"2959:12:15","nodeType":"VariableDeclaration","scope":5264,"src":"2952:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5249,"name":"uint32","nodeType":"ElementaryTypeName","src":"2952:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5252,"mutability":"mutable","name":"gasLimit","nameLocation":"2988:8:15","nodeType":"VariableDeclaration","scope":5264,"src":"2981:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5251,"name":"uint32","nodeType":"ElementaryTypeName","src":"2981:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5254,"mutability":"mutable","name":"lastBlockId","nameLocation":"3013:11:15","nodeType":"VariableDeclaration","scope":5264,"src":"3006:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5253,"name":"uint64","nodeType":"ElementaryTypeName","src":"3006:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5256,"mutability":"mutable","name":"lastBlockTimestamp","nameLocation":"3041:18:15","nodeType":"VariableDeclaration","scope":5264,"src":"3034:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5255,"name":"uint64","nodeType":"ElementaryTypeName","src":"3034:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5258,"mutability":"mutable","name":"anchorBlockId","nameLocation":"3157:13:15","nodeType":"VariableDeclaration","scope":5264,"src":"3150:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5257,"name":"uint64","nodeType":"ElementaryTypeName","src":"3150:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5260,"mutability":"mutable","name":"anchorBlockHash","nameLocation":"3360:15:15","nodeType":"VariableDeclaration","scope":5264,"src":"3352:23:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5259,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3352:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5263,"mutability":"mutable","name":"baseFeeConfig","nameLocation":"3413:13:15","nodeType":"VariableDeclaration","scope":5264,"src":"3385:41:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_BaseFeeConfig_$17037_storage_ptr","typeString":"struct LibSharedData.BaseFeeConfig"},"typeName":{"id":5262,"nodeType":"UserDefinedTypeName","pathNode":{"id":5261,"name":"LibSharedData.BaseFeeConfig","nameLocations":["3385:13:15","3399:13:15"],"nodeType":"IdentifierPath","referencedDeclaration":17037,"src":"3385:27:15"},"referencedDeclaration":17037,"src":"3385:27:15","typeDescriptions":{"typeIdentifier":"t_struct$_BaseFeeConfig_$17037_storage_ptr","typeString":"struct LibSharedData.BaseFeeConfig"}},"visibility":"internal"}],"name":"BatchInfo","nameLocation":"2648:9:15","scope":5726,"visibility":"public"},{"id":5274,"nodeType":"StructDefinition","src":"3518:154:15","nodes":[],"canonicalName":"ITaikoInbox.BatchMetadata","documentation":{"id":5265,"nodeType":"StructuredDocumentation","src":"3439:74:15","text":"@dev This struct holds batch metadata essential for proving the batch."},"members":[{"constant":false,"id":5267,"mutability":"mutable","name":"infoHash","nameLocation":"3557:8:15","nodeType":"VariableDeclaration","scope":5274,"src":"3549:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5266,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3549:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5269,"mutability":"mutable","name":"proposer","nameLocation":"3583:8:15","nodeType":"VariableDeclaration","scope":5274,"src":"3575:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5268,"name":"address","nodeType":"ElementaryTypeName","src":"3575:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5271,"mutability":"mutable","name":"batchId","nameLocation":"3608:7:15","nodeType":"VariableDeclaration","scope":5274,"src":"3601:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5270,"name":"uint64","nodeType":"ElementaryTypeName","src":"3601:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5273,"mutability":"mutable","name":"proposedAt","nameLocation":"3632:10:15","nodeType":"VariableDeclaration","scope":5274,"src":"3625:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5272,"name":"uint64","nodeType":"ElementaryTypeName","src":"3625:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"name":"BatchMetadata","nameLocation":"3525:13:15","scope":5726,"visibility":"public"},{"id":5282,"nodeType":"StructDefinition","src":"3739:107:15","nodes":[],"canonicalName":"ITaikoInbox.Transition","documentation":{"id":5275,"nodeType":"StructuredDocumentation","src":"3678:56:15","text":"@notice Struct representing transition to be proven."},"members":[{"constant":false,"id":5277,"mutability":"mutable","name":"parentHash","nameLocation":"3775:10:15","nodeType":"VariableDeclaration","scope":5282,"src":"3767:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5276,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3767:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5279,"mutability":"mutable","name":"blockHash","nameLocation":"3803:9:15","nodeType":"VariableDeclaration","scope":5282,"src":"3795:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5278,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3795:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5281,"mutability":"mutable","name":"stateRoot","nameLocation":"3830:9:15","nodeType":"VariableDeclaration","scope":5282,"src":"3822:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5280,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3822:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Transition","nameLocation":"3746:10:15","scope":5726,"visibility":"public"},{"id":5296,"nodeType":"StructDefinition","src":"3937:192:15","nodes":[],"canonicalName":"ITaikoInbox.TransitionState","documentation":{"id":5283,"nodeType":"StructuredDocumentation","src":"3907:25:15","text":"@notice 4 slots used."},"members":[{"constant":false,"id":5285,"mutability":"mutable","name":"parentHash","nameLocation":"3978:10:15","nodeType":"VariableDeclaration","scope":5296,"src":"3970:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5284,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3970:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5287,"mutability":"mutable","name":"blockHash","nameLocation":"4006:9:15","nodeType":"VariableDeclaration","scope":5296,"src":"3998:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5286,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3998:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5289,"mutability":"mutable","name":"stateRoot","nameLocation":"4033:9:15","nodeType":"VariableDeclaration","scope":5296,"src":"4025:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5288,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4025:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5291,"mutability":"mutable","name":"prover","nameLocation":"4060:6:15","nodeType":"VariableDeclaration","scope":5296,"src":"4052:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5290,"name":"address","nodeType":"ElementaryTypeName","src":"4052:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5293,"mutability":"mutable","name":"inProvingWindow","nameLocation":"4081:15:15","nodeType":"VariableDeclaration","scope":5296,"src":"4076:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5292,"name":"bool","nodeType":"ElementaryTypeName","src":"4076:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5295,"mutability":"mutable","name":"createdAt","nameLocation":"4113:9:15","nodeType":"VariableDeclaration","scope":5296,"src":"4106:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5294,"name":"uint48","nodeType":"ElementaryTypeName","src":"4106:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"name":"TransitionState","nameLocation":"3944:15:15","scope":5726,"visibility":"public"},{"id":5318,"nodeType":"StructDefinition","src":"4165:538:15","nodes":[],"canonicalName":"ITaikoInbox.Batch","documentation":{"id":5297,"nodeType":"StructuredDocumentation","src":"4135:25:15","text":"@notice 3 slots used."},"members":[{"constant":false,"id":5299,"mutability":"mutable","name":"metaHash","nameLocation":"4196:8:15","nodeType":"VariableDeclaration","scope":5318,"src":"4188:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5298,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4188:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5301,"mutability":"mutable","name":"lastBlockId","nameLocation":"4231:11:15","nodeType":"VariableDeclaration","scope":5318,"src":"4224:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5300,"name":"uint64","nodeType":"ElementaryTypeName","src":"4224:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5303,"mutability":"mutable","name":"reserved3","nameLocation":"4269:9:15","nodeType":"VariableDeclaration","scope":5318,"src":"4262:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":5302,"name":"uint96","nodeType":"ElementaryTypeName","src":"4262:6:15","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":5305,"mutability":"mutable","name":"livenessBond","nameLocation":"4295:12:15","nodeType":"VariableDeclaration","scope":5318,"src":"4288:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":5304,"name":"uint96","nodeType":"ElementaryTypeName","src":"4288:6:15","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":5307,"mutability":"mutable","name":"batchId","nameLocation":"4324:7:15","nodeType":"VariableDeclaration","scope":5318,"src":"4317:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5306,"name":"uint64","nodeType":"ElementaryTypeName","src":"4317:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5309,"mutability":"mutable","name":"lastBlockTimestamp","nameLocation":"4358:18:15","nodeType":"VariableDeclaration","scope":5318,"src":"4351:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5308,"name":"uint64","nodeType":"ElementaryTypeName","src":"4351:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5311,"mutability":"mutable","name":"anchorBlockId","nameLocation":"4393:13:15","nodeType":"VariableDeclaration","scope":5318,"src":"4386:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5310,"name":"uint64","nodeType":"ElementaryTypeName","src":"4386:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5313,"mutability":"mutable","name":"nextTransitionId","nameLocation":"4423:16:15","nodeType":"VariableDeclaration","scope":5318,"src":"4416:23:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":5312,"name":"uint24","nodeType":"ElementaryTypeName","src":"4416:6:15","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":5315,"mutability":"mutable","name":"reserved4","nameLocation":"4455:9:15","nodeType":"VariableDeclaration","scope":5318,"src":"4449:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5314,"name":"uint8","nodeType":"ElementaryTypeName","src":"4449:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5317,"mutability":"mutable","name":"verifiedTransitionId","nameLocation":"4676:20:15","nodeType":"VariableDeclaration","scope":5318,"src":"4669:27:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":5316,"name":"uint24","nodeType":"ElementaryTypeName","src":"4669:6:15","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"name":"Batch","nameLocation":"4172:5:15","scope":5726,"visibility":"public"},{"id":5328,"nodeType":"StructDefinition","src":"4901:142:15","nodes":[],"canonicalName":"ITaikoInbox.Stats1","documentation":{"id":5319,"nodeType":"StructuredDocumentation","src":"4709:187:15","text":"@notice Forge is only able to run coverage in case the contracts by default capable of\n compiling without any optimization (neither optimizer runs, no compiling --via-ir flag)."},"members":[{"constant":false,"id":5321,"mutability":"mutable","name":"genesisHeight","nameLocation":"4932:13:15","nodeType":"VariableDeclaration","scope":5328,"src":"4925:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5320,"name":"uint64","nodeType":"ElementaryTypeName","src":"4925:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5323,"mutability":"mutable","name":"__reserved2","nameLocation":"4962:11:15","nodeType":"VariableDeclaration","scope":5328,"src":"4955:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5322,"name":"uint64","nodeType":"ElementaryTypeName","src":"4955:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5325,"mutability":"mutable","name":"lastSyncedBatchId","nameLocation":"4990:17:15","nodeType":"VariableDeclaration","scope":5328,"src":"4983:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5324,"name":"uint64","nodeType":"ElementaryTypeName","src":"4983:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5327,"mutability":"mutable","name":"lastSyncedAt","nameLocation":"5024:12:15","nodeType":"VariableDeclaration","scope":5328,"src":"5017:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5326,"name":"uint64","nodeType":"ElementaryTypeName","src":"5017:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"name":"Stats1","nameLocation":"4908:6:15","scope":5726,"visibility":"public"},{"id":5339,"nodeType":"StructDefinition","src":"5049:167:15","nodes":[],"canonicalName":"ITaikoInbox.Stats2","members":[{"constant":false,"id":5330,"mutability":"mutable","name":"numBatches","nameLocation":"5080:10:15","nodeType":"VariableDeclaration","scope":5339,"src":"5073:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5329,"name":"uint64","nodeType":"ElementaryTypeName","src":"5073:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5332,"mutability":"mutable","name":"lastVerifiedBatchId","nameLocation":"5107:19:15","nodeType":"VariableDeclaration","scope":5339,"src":"5100:26:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5331,"name":"uint64","nodeType":"ElementaryTypeName","src":"5100:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5334,"mutability":"mutable","name":"paused","nameLocation":"5141:6:15","nodeType":"VariableDeclaration","scope":5339,"src":"5136:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5333,"name":"bool","nodeType":"ElementaryTypeName","src":"5136:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5336,"mutability":"mutable","name":"lastProposedIn","nameLocation":"5164:14:15","nodeType":"VariableDeclaration","scope":5339,"src":"5157:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":5335,"name":"uint56","nodeType":"ElementaryTypeName","src":"5157:6:15","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"},{"constant":false,"id":5338,"mutability":"mutable","name":"lastUnpausedAt","nameLocation":"5195:14:15","nodeType":"VariableDeclaration","scope":5339,"src":"5188:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5337,"name":"uint64","nodeType":"ElementaryTypeName","src":"5188:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"name":"Stats2","nameLocation":"5056:6:15","scope":5726,"visibility":"public"},{"id":5348,"nodeType":"StructDefinition","src":"5222:295:15","nodes":[],"canonicalName":"ITaikoInbox.ForkHeights","members":[{"constant":false,"id":5341,"mutability":"mutable","name":"ontake","nameLocation":"5258:6:15","nodeType":"VariableDeclaration","scope":5348,"src":"5251:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5340,"name":"uint64","nodeType":"ElementaryTypeName","src":"5251:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5343,"mutability":"mutable","name":"pacaya","nameLocation":"5312:6:15","nodeType":"VariableDeclaration","scope":5348,"src":"5305:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5342,"name":"uint64","nodeType":"ElementaryTypeName","src":"5305:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5345,"mutability":"mutable","name":"shasta","nameLocation":"5384:6:15","nodeType":"VariableDeclaration","scope":5348,"src":"5377:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5344,"name":"uint64","nodeType":"ElementaryTypeName","src":"5377:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5347,"mutability":"mutable","name":"unzen","nameLocation":"5456:5:15","nodeType":"VariableDeclaration","scope":5348,"src":"5449:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5346,"name":"uint64","nodeType":"ElementaryTypeName","src":"5449:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"name":"ForkHeights","nameLocation":"5229:11:15","scope":5726,"visibility":"public"},{"id":5397,"nodeType":"StructDefinition","src":"5605:1673:15","nodes":[],"canonicalName":"ITaikoInbox.Config","documentation":{"id":5349,"nodeType":"StructuredDocumentation","src":"5523:77:15","text":"@notice Struct holding Taiko configuration parameters. See {TaikoConfig}."},"members":[{"constant":false,"id":5352,"mutability":"mutable","name":"chainId","nameLocation":"5720:7:15","nodeType":"VariableDeclaration","scope":5397,"src":"5713:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5351,"name":"uint64","nodeType":"ElementaryTypeName","src":"5713:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5355,"mutability":"mutable","name":"maxUnverifiedBatches","nameLocation":"5828:20:15","nodeType":"VariableDeclaration","scope":5397,"src":"5821:27:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5354,"name":"uint64","nodeType":"ElementaryTypeName","src":"5821:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5358,"mutability":"mutable","name":"batchRingBufferSize","nameLocation":"5952:19:15","nodeType":"VariableDeclaration","scope":5397,"src":"5945:26:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5357,"name":"uint64","nodeType":"ElementaryTypeName","src":"5945:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5361,"mutability":"mutable","name":"maxBatchesToVerify","nameLocation":"6088:18:15","nodeType":"VariableDeclaration","scope":5397,"src":"6081:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5360,"name":"uint64","nodeType":"ElementaryTypeName","src":"6081:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5364,"mutability":"mutable","name":"blockMaxGasLimit","nameLocation":"6186:16:15","nodeType":"VariableDeclaration","scope":5397,"src":"6179:23:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5363,"name":"uint32","nodeType":"ElementaryTypeName","src":"6179:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5367,"mutability":"mutable","name":"livenessBondBase","nameLocation":"6302:16:15","nodeType":"VariableDeclaration","scope":5397,"src":"6295:23:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":5366,"name":"uint96","nodeType":"ElementaryTypeName","src":"6295:6:15","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":5370,"mutability":"mutable","name":"livenessBondPerBlock","nameLocation":"6418:20:15","nodeType":"VariableDeclaration","scope":5397,"src":"6411:27:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":5369,"name":"uint96","nodeType":"ElementaryTypeName","src":"6411:6:15","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":5373,"mutability":"mutable","name":"stateRootSyncInternal","nameLocation":"6534:21:15","nodeType":"VariableDeclaration","scope":5397,"src":"6528:27:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5372,"name":"uint8","nodeType":"ElementaryTypeName","src":"6528:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5376,"mutability":"mutable","name":"maxAnchorHeightOffset","nameLocation":"6663:21:15","nodeType":"VariableDeclaration","scope":5397,"src":"6656:28:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5375,"name":"uint64","nodeType":"ElementaryTypeName","src":"6656:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5380,"mutability":"mutable","name":"baseFeeConfig","nameLocation":"6765:13:15","nodeType":"VariableDeclaration","scope":5397,"src":"6737:41:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_BaseFeeConfig_$17037_storage_ptr","typeString":"struct LibSharedData.BaseFeeConfig"},"typeName":{"id":5379,"nodeType":"UserDefinedTypeName","pathNode":{"id":5378,"name":"LibSharedData.BaseFeeConfig","nameLocations":["6737:13:15","6751:13:15"],"nodeType":"IdentifierPath","referencedDeclaration":17037,"src":"6737:27:15"},"referencedDeclaration":17037,"src":"6737:27:15","typeDescriptions":{"typeIdentifier":"t_struct$_BaseFeeConfig_$17037_storage_ptr","typeString":"struct LibSharedData.BaseFeeConfig"}},"visibility":"internal"},{"constant":false,"id":5383,"mutability":"mutable","name":"provingWindow","nameLocation":"6846:13:15","nodeType":"VariableDeclaration","scope":5397,"src":"6839:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":5382,"name":"uint16","nodeType":"ElementaryTypeName","src":"6839:6:15","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":5386,"mutability":"mutable","name":"cooldownWindow","nameLocation":"6965:14:15","nodeType":"VariableDeclaration","scope":5397,"src":"6958:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":5385,"name":"uint24","nodeType":"ElementaryTypeName","src":"6958:6:15","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":5389,"mutability":"mutable","name":"maxSignalsToReceive","nameLocation":"7072:19:15","nodeType":"VariableDeclaration","scope":5397,"src":"7066:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5388,"name":"uint8","nodeType":"ElementaryTypeName","src":"7066:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5392,"mutability":"mutable","name":"maxBlocksPerBatch","nameLocation":"7168:17:15","nodeType":"VariableDeclaration","scope":5397,"src":"7161:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":5391,"name":"uint16","nodeType":"ElementaryTypeName","src":"7161:6:15","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":5396,"mutability":"mutable","name":"forkHeights","nameLocation":"7260:11:15","nodeType":"VariableDeclaration","scope":5397,"src":"7248:23:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ForkHeights_$5348_storage_ptr","typeString":"struct ITaikoInbox.ForkHeights"},"typeName":{"id":5395,"nodeType":"UserDefinedTypeName","pathNode":{"id":5394,"name":"ForkHeights","nameLocations":["7248:11:15"],"nodeType":"IdentifierPath","referencedDeclaration":5348,"src":"7248:11:15"},"referencedDeclaration":5348,"src":"7248:11:15","typeDescriptions":{"typeIdentifier":"t_struct$_ForkHeights_$5348_storage_ptr","typeString":"struct ITaikoInbox.ForkHeights"}},"visibility":"internal"}],"name":"Config","nameLocation":"5612:6:15","scope":5726,"visibility":"public"},{"id":5433,"nodeType":"StructDefinition","src":"7361:789:15","nodes":[],"canonicalName":"ITaikoInbox.State","documentation":{"id":5398,"nodeType":"StructuredDocumentation","src":"7284:72:15","text":"@notice Struct holding the state variables for the {Taiko} contract."},"members":[{"constant":false,"id":5403,"mutability":"mutable","name":"batches","nameLocation":"7528:7:15","nodeType":"VariableDeclaration","scope":5433,"src":"7464:71:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Batch_$5318_storage_$","typeString":"mapping(uint256 => struct ITaikoInbox.Batch)"},"typeName":{"id":5402,"keyName":"batchId_mod_batchRingBufferSize","keyNameLocation":"7480:31:15","keyType":{"id":5399,"name":"uint256","nodeType":"ElementaryTypeName","src":"7472:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"7464:63:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Batch_$5318_storage_$","typeString":"mapping(uint256 => struct ITaikoInbox.Batch)"},"valueName":"batch","valueNameLocation":"7521:5:15","valueType":{"id":5401,"nodeType":"UserDefinedTypeName","pathNode":{"id":5400,"name":"Batch","nameLocations":["7515:5:15"],"nodeType":"IdentifierPath","referencedDeclaration":5318,"src":"7515:5:15"},"referencedDeclaration":5318,"src":"7515:5:15","typeDescriptions":{"typeIdentifier":"t_struct$_Batch_$5318_storage_ptr","typeString":"struct ITaikoInbox.Batch"}}},"visibility":"internal"},{"constant":false,"id":5409,"mutability":"mutable","name":"transitionIds","nameLocation":"7689:13:15","nodeType":"VariableDeclaration","scope":5433,"src":"7610:92:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint24_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint24))"},"typeName":{"id":5408,"keyName":"batchId","keyNameLocation":"7626:7:15","keyType":{"id":5404,"name":"uint256","nodeType":"ElementaryTypeName","src":"7618:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"7610:78:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint24_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint24))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":5407,"keyName":"parentHash","keyNameLocation":"7653:10:15","keyType":{"id":5405,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7645:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"7637:50:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint24_$","typeString":"mapping(bytes32 => uint24)"},"valueName":"transitionId","valueNameLocation":"7674:12:15","valueType":{"id":5406,"name":"uint24","nodeType":"ElementaryTypeName","src":"7667:6:15","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}}},"visibility":"internal"},{"constant":false,"id":5416,"mutability":"mutable","name":"transitions","nameLocation":"7892:11:15","nodeType":"VariableDeclaration","scope":5433,"src":"7751:152:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint24_$_t_struct$_TransitionState_$5296_storage_$_$","typeString":"mapping(uint256 => mapping(uint24 => struct ITaikoInbox.TransitionState))"},"typeName":{"id":5415,"keyName":"batchId_mod_batchRingBufferSize","keyNameLocation":"7780:31:15","keyType":{"id":5410,"name":"uint256","nodeType":"ElementaryTypeName","src":"7772:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"7751:140:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint24_$_t_struct$_TransitionState_$5296_storage_$_$","typeString":"mapping(uint256 => mapping(uint24 => struct ITaikoInbox.TransitionState))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":5414,"keyName":"transitionId","keyNameLocation":"7846:12:15","keyType":{"id":5411,"name":"uint24","nodeType":"ElementaryTypeName","src":"7839:6:15","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"Mapping","src":"7831:50:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint24_$_t_struct$_TransitionState_$5296_storage_$","typeString":"mapping(uint24 => struct ITaikoInbox.TransitionState)"},"valueName":"ts","valueNameLocation":"7878:2:15","valueType":{"id":5413,"nodeType":"UserDefinedTypeName","pathNode":{"id":5412,"name":"TransitionState","nameLocations":["7862:15:15"],"nodeType":"IdentifierPath","referencedDeclaration":5296,"src":"7862:15:15"},"referencedDeclaration":5296,"src":"7862:15:15","typeDescriptions":{"typeIdentifier":"t_struct$_TransitionState_$5296_storage_ptr","typeString":"struct ITaikoInbox.TransitionState"}}}},"visibility":"internal"},{"constant":false,"id":5418,"mutability":"mutable","name":"__reserve1","nameLocation":"7921:10:15","nodeType":"VariableDeclaration","scope":5433,"src":"7913:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5417,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7913:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5421,"mutability":"mutable","name":"stats1","nameLocation":"8005:6:15","nodeType":"VariableDeclaration","scope":5433,"src":"7998:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Stats1_$5328_storage_ptr","typeString":"struct ITaikoInbox.Stats1"},"typeName":{"id":5420,"nodeType":"UserDefinedTypeName","pathNode":{"id":5419,"name":"Stats1","nameLocations":["7998:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":5328,"src":"7998:6:15"},"referencedDeclaration":5328,"src":"7998:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_Stats1_$5328_storage_ptr","typeString":"struct ITaikoInbox.Stats1"}},"visibility":"internal"},{"constant":false,"id":5424,"mutability":"mutable","name":"stats2","nameLocation":"8038:6:15","nodeType":"VariableDeclaration","scope":5433,"src":"8031:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Stats2_$5339_storage_ptr","typeString":"struct ITaikoInbox.Stats2"},"typeName":{"id":5423,"nodeType":"UserDefinedTypeName","pathNode":{"id":5422,"name":"Stats2","nameLocations":["8031:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":5339,"src":"8031:6:15"},"referencedDeclaration":5339,"src":"8031:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_Stats2_$5339_storage_ptr","typeString":"struct ITaikoInbox.Stats2"}},"visibility":"internal"},{"constant":false,"id":5428,"mutability":"mutable","name":"bondBalance","nameLocation":"8105:11:15","nodeType":"VariableDeclaration","scope":5433,"src":"8064:52:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":5427,"keyName":"account","keyNameLocation":"8080:7:15","keyType":{"id":5425,"name":"address","nodeType":"ElementaryTypeName","src":"8072:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"8064:40:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"bond","valueNameLocation":"8099:4:15","valueType":{"id":5426,"name":"uint256","nodeType":"ElementaryTypeName","src":"8091:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":5432,"mutability":"mutable","name":"__gap","nameLocation":"8138:5:15","nodeType":"VariableDeclaration","scope":5433,"src":"8126:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$43_storage_ptr","typeString":"uint256[43]"},"typeName":{"baseType":{"id":5429,"name":"uint256","nodeType":"ElementaryTypeName","src":"8126:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5431,"length":{"hexValue":"3433","id":5430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8134:2:15","typeDescriptions":{"typeIdentifier":"t_rational_43_by_1","typeString":"int_const 43"},"value":"43"},"nodeType":"ArrayTypeName","src":"8126:11:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$43_storage_ptr","typeString":"uint256[43]"}},"visibility":"internal"}],"name":"State","nameLocation":"7368:5:15","scope":5726,"visibility":"public"},{"id":5440,"nodeType":"EventDefinition","src":"8358:58:15","nodes":[],"anonymous":false,"documentation":{"id":5434,"nodeType":"StructuredDocumentation","src":"8156:197:15","text":"@notice Emitted when tokens are deposited into a user's bond balance.\n @param user The address of the user who deposited the tokens.\n @param amount The amount of tokens deposited."},"eventSelector":"8ed8c6869618197b68315ade66e75ed3906c97b111fa3ab81e5760046825c7db","name":"BondDeposited","nameLocation":"8364:13:15","parameters":{"id":5439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5436,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"8394:4:15","nodeType":"VariableDeclaration","scope":5440,"src":"8378:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5435,"name":"address","nodeType":"ElementaryTypeName","src":"8378:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5438,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"8408:6:15","nodeType":"VariableDeclaration","scope":5440,"src":"8400:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5437,"name":"uint256","nodeType":"ElementaryTypeName","src":"8400:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8377:38:15"}},{"id":5447,"nodeType":"EventDefinition","src":"8623:58:15","nodes":[],"anonymous":false,"documentation":{"id":5441,"nodeType":"StructuredDocumentation","src":"8422:196:15","text":"@notice Emitted when tokens are withdrawn from a user's bond balance.\n @param user The address of the user who withdrew the tokens.\n @param amount The amount of tokens withdrawn."},"eventSelector":"0d41118e36df44efb77a471fc49fb9c0be0406d802ef95520e9fbf606e65b455","name":"BondWithdrawn","nameLocation":"8629:13:15","parameters":{"id":5446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5443,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"8659:4:15","nodeType":"VariableDeclaration","scope":5447,"src":"8643:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5442,"name":"address","nodeType":"ElementaryTypeName","src":"8643:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5445,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"8673:6:15","nodeType":"VariableDeclaration","scope":5447,"src":"8665:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5444,"name":"uint256","nodeType":"ElementaryTypeName","src":"8665:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8642:38:15"}},{"id":5454,"nodeType":"EventDefinition","src":"8896:57:15","nodes":[],"anonymous":false,"documentation":{"id":5448,"nodeType":"StructuredDocumentation","src":"8687:204:15","text":"@notice Emitted when a token is credited back to a user's bond balance.\n @param user The address of the user whose bond balance is credited.\n @param amount The amount of tokens credited."},"eventSelector":"6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab606","name":"BondCredited","nameLocation":"8902:12:15","parameters":{"id":5453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5450,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"8931:4:15","nodeType":"VariableDeclaration","scope":5454,"src":"8915:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5449,"name":"address","nodeType":"ElementaryTypeName","src":"8915:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5452,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"8945:6:15","nodeType":"VariableDeclaration","scope":5454,"src":"8937:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5451,"name":"uint256","nodeType":"ElementaryTypeName","src":"8937:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8914:38:15"}},{"id":5461,"nodeType":"EventDefinition","src":"9162:56:15","nodes":[],"anonymous":false,"documentation":{"id":5455,"nodeType":"StructuredDocumentation","src":"8959:198:15","text":"@notice Emitted when a token is debited from a user's bond balance.\n @param user The address of the user whose bond balance is debited.\n @param amount The amount of tokens debited."},"eventSelector":"85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c","name":"BondDebited","nameLocation":"9168:11:15","parameters":{"id":5460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5457,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"9196:4:15","nodeType":"VariableDeclaration","scope":5461,"src":"9180:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5456,"name":"address","nodeType":"ElementaryTypeName","src":"9180:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5459,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"9210:6:15","nodeType":"VariableDeclaration","scope":5461,"src":"9202:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5458,"name":"uint256","nodeType":"ElementaryTypeName","src":"9202:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9179:38:15"}},{"id":5467,"nodeType":"EventDefinition","src":"9321:35:15","nodes":[],"anonymous":false,"documentation":{"id":5462,"nodeType":"StructuredDocumentation","src":"9224:92:15","text":"@notice Emitted when a batch is synced.\n @param stats1 The Stats1 data structure."},"eventSelector":"cfbcbd3a81b749a28e6289bc350363f1949bb0a58ba7120d8dd4ef4b3617dff8","name":"Stats1Updated","nameLocation":"9327:13:15","parameters":{"id":5466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5465,"indexed":false,"mutability":"mutable","name":"stats1","nameLocation":"9348:6:15","nodeType":"VariableDeclaration","scope":5467,"src":"9341:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Stats1_$5328_memory_ptr","typeString":"struct ITaikoInbox.Stats1"},"typeName":{"id":5464,"nodeType":"UserDefinedTypeName","pathNode":{"id":5463,"name":"Stats1","nameLocations":["9341:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":5328,"src":"9341:6:15"},"referencedDeclaration":5328,"src":"9341:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_Stats1_$5328_storage_ptr","typeString":"struct ITaikoInbox.Stats1"}},"visibility":"internal"}],"src":"9340:15:15"}},{"id":5473,"nodeType":"EventDefinition","src":"9476:35:15","nodes":[],"anonymous":false,"documentation":{"id":5468,"nodeType":"StructuredDocumentation","src":"9362:109:15","text":"@notice Emitted when some state variable values changed.\n @param stats2 The Stats2 data structure."},"eventSelector":"7156d026e6a3864d290a971910746f96477d3901e33c4b2375e4ee00dabe7d87","name":"Stats2Updated","nameLocation":"9482:13:15","parameters":{"id":5472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5471,"indexed":false,"mutability":"mutable","name":"stats2","nameLocation":"9503:6:15","nodeType":"VariableDeclaration","scope":5473,"src":"9496:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Stats2_$5339_memory_ptr","typeString":"struct ITaikoInbox.Stats2"},"typeName":{"id":5470,"nodeType":"UserDefinedTypeName","pathNode":{"id":5469,"name":"Stats2","nameLocations":["9496:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":5339,"src":"9496:6:15"},"referencedDeclaration":5339,"src":"9496:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_Stats2_$5339_storage_ptr","typeString":"struct ITaikoInbox.Stats2"}},"visibility":"internal"}],"src":"9495:15:15"}},{"id":5484,"nodeType":"EventDefinition","src":"9722:70:15","nodes":[],"anonymous":false,"documentation":{"id":5474,"nodeType":"StructuredDocumentation","src":"9517:200:15","text":"@notice Emitted when a batch is proposed.\n @param info The info of the proposed batch.\n @param meta The metadata of the proposed batch.\n @param txList The tx list in calldata."},"eventSelector":"9eb7fc80523943f28950bbb71ed6d584effe3e1e02ca4ddc8c86e5ee1558c096","name":"BatchProposed","nameLocation":"9728:13:15","parameters":{"id":5483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5477,"indexed":false,"mutability":"mutable","name":"info","nameLocation":"9752:4:15","nodeType":"VariableDeclaration","scope":5484,"src":"9742:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_BatchInfo_$5264_memory_ptr","typeString":"struct ITaikoInbox.BatchInfo"},"typeName":{"id":5476,"nodeType":"UserDefinedTypeName","pathNode":{"id":5475,"name":"BatchInfo","nameLocations":["9742:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":5264,"src":"9742:9:15"},"referencedDeclaration":5264,"src":"9742:9:15","typeDescriptions":{"typeIdentifier":"t_struct$_BatchInfo_$5264_storage_ptr","typeString":"struct ITaikoInbox.BatchInfo"}},"visibility":"internal"},{"constant":false,"id":5480,"indexed":false,"mutability":"mutable","name":"meta","nameLocation":"9772:4:15","nodeType":"VariableDeclaration","scope":5484,"src":"9758:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_BatchMetadata_$5274_memory_ptr","typeString":"struct ITaikoInbox.BatchMetadata"},"typeName":{"id":5479,"nodeType":"UserDefinedTypeName","pathNode":{"id":5478,"name":"BatchMetadata","nameLocations":["9758:13:15"],"nodeType":"IdentifierPath","referencedDeclaration":5274,"src":"9758:13:15"},"referencedDeclaration":5274,"src":"9758:13:15","typeDescriptions":{"typeIdentifier":"t_struct$_BatchMetadata_$5274_storage_ptr","typeString":"struct ITaikoInbox.BatchMetadata"}},"visibility":"internal"},{"constant":false,"id":5482,"indexed":false,"mutability":"mutable","name":"txList","nameLocation":"9784:6:15","nodeType":"VariableDeclaration","scope":5484,"src":"9778:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5481,"name":"bytes","nodeType":"ElementaryTypeName","src":"9778:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9741:50:15"}},{"id":5496,"nodeType":"EventDefinition","src":"9962:83:15","nodes":[],"anonymous":false,"documentation":{"id":5485,"nodeType":"StructuredDocumentation","src":"9798:159:15","text":"@notice Emitted when multiple transitions are proved.\n @param verifier The address of the verifier.\n @param transitions The transitions data."},"eventSelector":"c99f03c7db71a9e8c78654b1d2f77378b413cc979a02fa22dc9d39702afa92bc","name":"BatchesProved","nameLocation":"9968:13:15","parameters":{"id":5495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5487,"indexed":false,"mutability":"mutable","name":"verifier","nameLocation":"9990:8:15","nodeType":"VariableDeclaration","scope":5496,"src":"9982:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5486,"name":"address","nodeType":"ElementaryTypeName","src":"9982:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5490,"indexed":false,"mutability":"mutable","name":"batchIds","nameLocation":"10009:8:15","nodeType":"VariableDeclaration","scope":5496,"src":"10000:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint64_$dyn_memory_ptr","typeString":"uint64[]"},"typeName":{"baseType":{"id":5488,"name":"uint64","nodeType":"ElementaryTypeName","src":"10000:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":5489,"nodeType":"ArrayTypeName","src":"10000:8:15","typeDescriptions":{"typeIdentifier":"t_array$_t_uint64_$dyn_storage_ptr","typeString":"uint64[]"}},"visibility":"internal"},{"constant":false,"id":5494,"indexed":false,"mutability":"mutable","name":"transitions","nameLocation":"10032:11:15","nodeType":"VariableDeclaration","scope":5496,"src":"10019:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Transition_$5282_memory_ptr_$dyn_memory_ptr","typeString":"struct ITaikoInbox.Transition[]"},"typeName":{"baseType":{"id":5492,"nodeType":"UserDefinedTypeName","pathNode":{"id":5491,"name":"Transition","nameLocations":["10019:10:15"],"nodeType":"IdentifierPath","referencedDeclaration":5282,"src":"10019:10:15"},"referencedDeclaration":5282,"src":"10019:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_Transition_$5282_storage_ptr","typeString":"struct ITaikoInbox.Transition"}},"id":5493,"nodeType":"ArrayTypeName","src":"10019:12:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Transition_$5282_storage_$dyn_storage_ptr","typeString":"struct ITaikoInbox.Transition[]"}},"visibility":"internal"}],"src":"9981:63:15"}},{"id":5507,"nodeType":"EventDefinition","src":"10338:84:15","nodes":[],"anonymous":false,"documentation":{"id":5497,"nodeType":"StructuredDocumentation","src":"10051:282:15","text":"@notice Emitted when a transition is overwritten by a conflicting one with the same parent\n hash but different block hash or state root.\n @param batchId The batch ID.\n @param oldTran The old transition overwritten.\n @param newTran The new transition."},"eventSelector":"a05e896ff20170d694345384140d3397c040699d982fd6bdd73028e3d311f444","name":"ConflictingProof","nameLocation":"10344:16:15","parameters":{"id":5506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5499,"indexed":false,"mutability":"mutable","name":"batchId","nameLocation":"10368:7:15","nodeType":"VariableDeclaration","scope":5507,"src":"10361:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5498,"name":"uint64","nodeType":"ElementaryTypeName","src":"10361:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5502,"indexed":false,"mutability":"mutable","name":"oldTran","nameLocation":"10393:7:15","nodeType":"VariableDeclaration","scope":5507,"src":"10377:23:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_TransitionState_$5296_memory_ptr","typeString":"struct ITaikoInbox.TransitionState"},"typeName":{"id":5501,"nodeType":"UserDefinedTypeName","pathNode":{"id":5500,"name":"TransitionState","nameLocations":["10377:15:15"],"nodeType":"IdentifierPath","referencedDeclaration":5296,"src":"10377:15:15"},"referencedDeclaration":5296,"src":"10377:15:15","typeDescriptions":{"typeIdentifier":"t_struct$_TransitionState_$5296_storage_ptr","typeString":"struct ITaikoInbox.TransitionState"}},"visibility":"internal"},{"constant":false,"id":5505,"indexed":false,"mutability":"mutable","name":"newTran","nameLocation":"10413:7:15","nodeType":"VariableDeclaration","scope":5507,"src":"10402:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Transition_$5282_memory_ptr","typeString":"struct ITaikoInbox.Transition"},"typeName":{"id":5504,"nodeType":"UserDefinedTypeName","pathNode":{"id":5503,"name":"Transition","nameLocations":["10402:10:15"],"nodeType":"IdentifierPath","referencedDeclaration":5282,"src":"10402:10:15"},"referencedDeclaration":5282,"src":"10402:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_Transition_$5282_storage_ptr","typeString":"struct ITaikoInbox.Transition"}},"visibility":"internal"}],"src":"10360:61:15"}},{"id":5514,"nodeType":"EventDefinition","src":"10588:57:15","nodes":[],"anonymous":false,"documentation":{"id":5508,"nodeType":"StructuredDocumentation","src":"10428:155:15","text":"@notice Emitted when a batch is verified.\n @param batchId The ID of the verified batch.\n @param blockHash The hash of the verified batch."},"eventSelector":"d6b1adebb10d3d794bc13103c4e9a696e79b3ce83355d8bdd77237cb20b3a4a0","name":"BatchesVerified","nameLocation":"10594:15:15","parameters":{"id":5513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5510,"indexed":false,"mutability":"mutable","name":"batchId","nameLocation":"10617:7:15","nodeType":"VariableDeclaration","scope":5514,"src":"10610:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5509,"name":"uint64","nodeType":"ElementaryTypeName","src":"10610:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5512,"indexed":false,"mutability":"mutable","name":"blockHash","nameLocation":"10634:9:15","nodeType":"VariableDeclaration","scope":5514,"src":"10626:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5511,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10626:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10609:35:15"}},{"id":5516,"nodeType":"ErrorDefinition","src":"10651:39:15","nodes":[],"errorSelector":"fe1698b2","name":"AnchorBlockIdSmallerThanParent","nameLocation":"10657:30:15","parameters":{"id":5515,"nodeType":"ParameterList","parameters":[],"src":"10687:2:15"}},{"id":5518,"nodeType":"ErrorDefinition","src":"10695:30:15","nodes":[],"errorSelector":"7f14daf8","name":"AnchorBlockIdTooLarge","nameLocation":"10701:21:15","parameters":{"id":5517,"nodeType":"ParameterList","parameters":[],"src":"10722:2:15"}},{"id":5520,"nodeType":"ErrorDefinition","src":"10730:30:15","nodes":[],"errorSelector":"46afbf54","name":"AnchorBlockIdTooSmall","nameLocation":"10736:21:15","parameters":{"id":5519,"nodeType":"ParameterList","parameters":[],"src":"10757:2:15"}},{"id":5522,"nodeType":"ErrorDefinition","src":"10765:27:15","nodes":[],"errorSelector":"83c7eca6","name":"ArraySizesMismatch","nameLocation":"10771:18:15","parameters":{"id":5521,"nodeType":"ParameterList","parameters":[],"src":"10789:2:15"}},{"id":5524,"nodeType":"ErrorDefinition","src":"10797:22:15","nodes":[],"errorSelector":"9e15e1bc","name":"BatchNotFound","nameLocation":"10803:13:15","parameters":{"id":5523,"nodeType":"ParameterList","parameters":[],"src":"10816:2:15"}},{"id":5526,"nodeType":"ErrorDefinition","src":"10824:22:15","nodes":[],"errorSelector":"c63c8bfd","name":"BatchVerified","nameLocation":"10830:13:15","parameters":{"id":5525,"nodeType":"ParameterList","parameters":[],"src":"10843:2:15"}},{"id":5528,"nodeType":"ErrorDefinition","src":"10851:26:15","nodes":[],"errorSelector":"8879ee78","name":"BeyondCurrentFork","nameLocation":"10857:17:15","parameters":{"id":5527,"nodeType":"ParameterList","parameters":[],"src":"10874:2:15"}},{"id":5530,"nodeType":"ErrorDefinition","src":"10882:21:15","nodes":[],"errorSelector":"f765f45e","name":"BlobNotFound","nameLocation":"10888:12:15","parameters":{"id":5529,"nodeType":"ParameterList","parameters":[],"src":"10900:2:15"}},{"id":5532,"nodeType":"ErrorDefinition","src":"10908:22:15","nodes":[],"errorSelector":"feb32ebd","name":"BlockNotFound","nameLocation":"10914:13:15","parameters":{"id":5531,"nodeType":"ParameterList","parameters":[],"src":"10927:2:15"}},{"id":5534,"nodeType":"ErrorDefinition","src":"10935:25:15","nodes":[],"errorSelector":"f911438d","name":"BlobNotSpecified","nameLocation":"10941:16:15","parameters":{"id":5533,"nodeType":"ParameterList","parameters":[],"src":"10957:2:15"}},{"id":5536,"nodeType":"ErrorDefinition","src":"10965:23:15","nodes":[],"errorSelector":"ab35696f","name":"ContractPaused","nameLocation":"10971:14:15","parameters":{"id":5535,"nodeType":"ParameterList","parameters":[],"src":"10985:2:15"}},{"id":5538,"nodeType":"ErrorDefinition","src":"10993:30:15","nodes":[],"errorSelector":"10213ad7","name":"CustomProposerMissing","nameLocation":"10999:21:15","parameters":{"id":5537,"nodeType":"ParameterList","parameters":[],"src":"11020:2:15"}},{"id":5540,"nodeType":"ErrorDefinition","src":"11028:33:15","nodes":[],"errorSelector":"c25c48e2","name":"CustomProposerNotAllowed","nameLocation":"11034:24:15","parameters":{"id":5539,"nodeType":"ParameterList","parameters":[],"src":"11058:2:15"}},{"id":5542,"nodeType":"ErrorDefinition","src":"11066:27:15","nodes":[],"errorSelector":"018ad7d6","name":"EtherNotPaidAsBond","nameLocation":"11072:18:15","parameters":{"id":5541,"nodeType":"ParameterList","parameters":[],"src":"11090:2:15"}},{"id":5544,"nodeType":"ErrorDefinition","src":"11098:35:15","nodes":[],"errorSelector":"324d6078","name":"FirstBlockTimeShiftNotZero","nameLocation":"11104:26:15","parameters":{"id":5543,"nodeType":"ParameterList","parameters":[],"src":"11130:2:15"}},{"id":5546,"nodeType":"ErrorDefinition","src":"11138:25:15","nodes":[],"errorSelector":"0db26169","name":"ForkNotActivated","nameLocation":"11144:16:15","parameters":{"id":5545,"nodeType":"ParameterList","parameters":[],"src":"11160:2:15"}},{"id":5548,"nodeType":"ErrorDefinition","src":"11168:25:15","nodes":[],"errorSelector":"e92c469f","name":"InsufficientBond","nameLocation":"11174:16:15","parameters":{"id":5547,"nodeType":"ParameterList","parameters":[],"src":"11190:2:15"}},{"id":5550,"nodeType":"ErrorDefinition","src":"11198:29:15","nodes":[],"errorSelector":"0f49f066","name":"InvalidBlobCreatedIn","nameLocation":"11204:20:15","parameters":{"id":5549,"nodeType":"ParameterList","parameters":[],"src":"11224:2:15"}},{"id":5552,"nodeType":"ErrorDefinition","src":"11232:26:15","nodes":[],"errorSelector":"2677ebff","name":"InvalidBlobParams","nameLocation":"11238:17:15","parameters":{"id":5551,"nodeType":"ParameterList","parameters":[],"src":"11255:2:15"}},{"id":5554,"nodeType":"ErrorDefinition","src":"11263:32:15","nodes":[],"errorSelector":"cd21cd43","name":"InvalidGenesisBlockHash","nameLocation":"11269:23:15","parameters":{"id":5553,"nodeType":"ParameterList","parameters":[],"src":"11292:2:15"}},{"id":5556,"nodeType":"ErrorDefinition","src":"11300:22:15","nodes":[],"errorSelector":"a86b6512","name":"InvalidParams","nameLocation":"11306:13:15","parameters":{"id":5555,"nodeType":"ParameterList","parameters":[],"src":"11319:2:15"}},{"id":5558,"nodeType":"ErrorDefinition","src":"11327:35:15","nodes":[],"errorSelector":"ac97cfc7","name":"InvalidTransitionBlockHash","nameLocation":"11333:26:15","parameters":{"id":5557,"nodeType":"ParameterList","parameters":[],"src":"11359:2:15"}},{"id":5560,"nodeType":"ErrorDefinition","src":"11367:36:15","nodes":[],"errorSelector":"19ead341","name":"InvalidTransitionParentHash","nameLocation":"11373:27:15","parameters":{"id":5559,"nodeType":"ParameterList","parameters":[],"src":"11400:2:15"}},{"id":5562,"nodeType":"ErrorDefinition","src":"11408:35:15","nodes":[],"errorSelector":"6c0118eb","name":"InvalidTransitionStateRoot","nameLocation":"11414:26:15","parameters":{"id":5561,"nodeType":"ParameterList","parameters":[],"src":"11440:2:15"}},{"id":5564,"nodeType":"ErrorDefinition","src":"11448:25:15","nodes":[],"errorSelector":"419b53b7","name":"MetaHashMismatch","nameLocation":"11454:16:15","parameters":{"id":5563,"nodeType":"ParameterList","parameters":[],"src":"11470:2:15"}},{"id":5566,"nodeType":"ErrorDefinition","src":"11478:24:15","nodes":[],"errorSelector":"798ee6f1","name":"MsgValueNotZero","nameLocation":"11484:15:15","parameters":{"id":5565,"nodeType":"ParameterList","parameters":[],"src":"11499:2:15"}},{"id":5568,"nodeType":"ErrorDefinition","src":"11507:24:15","nodes":[],"errorSelector":"367b91ca","name":"NoBlocksToProve","nameLocation":"11513:15:15","parameters":{"id":5567,"nodeType":"ParameterList","parameters":[],"src":"11528:2:15"}},{"id":5570,"nodeType":"ErrorDefinition","src":"11536:25:15","nodes":[],"errorSelector":"09e29fae","name":"NotFirstProposal","nameLocation":"11542:16:15","parameters":{"id":5569,"nodeType":"ParameterList","parameters":[],"src":"11558:2:15"}},{"id":5572,"nodeType":"ErrorDefinition","src":"11566:24:15","nodes":[],"errorSelector":"5e9e4449","name":"NotInboxWrapper","nameLocation":"11572:15:15","parameters":{"id":5571,"nodeType":"ParameterList","parameters":[],"src":"11587:2:15"}},{"id":5574,"nodeType":"ErrorDefinition","src":"11595:31:15","nodes":[],"errorSelector":"ff626f77","name":"ParentMetaHashMismatch","nameLocation":"11601:22:15","parameters":{"id":5573,"nodeType":"ParameterList","parameters":[],"src":"11623:2:15"}},{"id":5576,"nodeType":"ErrorDefinition","src":"11631:23:15","nodes":[],"errorSelector":"ed6222ff","name":"SameTransition","nameLocation":"11637:14:15","parameters":{"id":5575,"nodeType":"ParameterList","parameters":[],"src":"11651:2:15"}},{"id":5578,"nodeType":"ErrorDefinition","src":"11659:22:15","nodes":[],"errorSelector":"8601a5fe","name":"SignalNotSent","nameLocation":"11665:13:15","parameters":{"id":5577,"nodeType":"ParameterList","parameters":[],"src":"11678:2:15"}},{"id":5580,"nodeType":"ErrorDefinition","src":"11686:35:15","nodes":[],"errorSelector":"21389b84","name":"TimestampSmallerThanParent","nameLocation":"11692:26:15","parameters":{"id":5579,"nodeType":"ParameterList","parameters":[],"src":"11718:2:15"}},{"id":5582,"nodeType":"ErrorDefinition","src":"11726:26:15","nodes":[],"errorSelector":"3d32ffdb","name":"TimestampTooLarge","nameLocation":"11732:17:15","parameters":{"id":5581,"nodeType":"ParameterList","parameters":[],"src":"11749:2:15"}},{"id":5584,"nodeType":"ErrorDefinition","src":"11757:26:15","nodes":[],"errorSelector":"1999aed2","name":"TimestampTooSmall","nameLocation":"11763:17:15","parameters":{"id":5583,"nodeType":"ParameterList","parameters":[],"src":"11780:2:15"}},{"id":5586,"nodeType":"ErrorDefinition","src":"11788:23:15","nodes":[],"errorSelector":"a464214b","name":"TooManyBatches","nameLocation":"11794:14:15","parameters":{"id":5585,"nodeType":"ParameterList","parameters":[],"src":"11808:2:15"}},{"id":5588,"nodeType":"ErrorDefinition","src":"11816:22:15","nodes":[],"errorSelector":"7f06d57a","name":"TooManyBlocks","nameLocation":"11822:13:15","parameters":{"id":5587,"nodeType":"ParameterList","parameters":[],"src":"11835:2:15"}},{"id":5590,"nodeType":"ErrorDefinition","src":"11843:23:15","nodes":[],"errorSelector":"c577d383","name":"TooManySignals","nameLocation":"11849:14:15","parameters":{"id":5589,"nodeType":"ParameterList","parameters":[],"src":"11863:2:15"}},{"id":5592,"nodeType":"ErrorDefinition","src":"11871:27:15","nodes":[],"errorSelector":"76be38bc","name":"TransitionNotFound","nameLocation":"11877:18:15","parameters":{"id":5591,"nodeType":"ParameterList","parameters":[],"src":"11895:2:15"}},{"id":5594,"nodeType":"ErrorDefinition","src":"11903:28:15","nodes":[],"errorSelector":"2b44f010","name":"ZeroAnchorBlockHash","nameLocation":"11909:19:15","parameters":{"id":5593,"nodeType":"ParameterList","parameters":[],"src":"11928:2:15"}},{"id":5608,"nodeType":"FunctionDefinition","src":"12270:202:15","nodes":[],"documentation":{"id":5595,"nodeType":"StructuredDocumentation","src":"11937:328:15","text":"@notice Proposes a batch of blocks.\n @param _params ABI-encoded parameters.\n @param _txList The transaction list in calldata. If the txList is empty, blob will be used\n for data availability.\n @return info_ The info of the proposed batch.\n @return meta_ The metadata of the proposed batch."},"functionSelector":"47faad14","implemented":false,"kind":"function","modifiers":[],"name":"proposeBatch","nameLocation":"12279:12:15","parameters":{"id":5600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5597,"mutability":"mutable","name":"_params","nameLocation":"12316:7:15","nodeType":"VariableDeclaration","scope":5608,"src":"12301:22:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5596,"name":"bytes","nodeType":"ElementaryTypeName","src":"12301:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5599,"mutability":"mutable","name":"_txList","nameLocation":"12348:7:15","nodeType":"VariableDeclaration","scope":5608,"src":"12333:22:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5598,"name":"bytes","nodeType":"ElementaryTypeName","src":"12333:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12291:70:15"},"returnParameters":{"id":5607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5603,"mutability":"mutable","name":"info_","nameLocation":"12425:5:15","nodeType":"VariableDeclaration","scope":5608,"src":"12396:34:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BatchInfo_$5264_memory_ptr","typeString":"struct ITaikoInbox.BatchInfo"},"typeName":{"id":5602,"nodeType":"UserDefinedTypeName","pathNode":{"id":5601,"name":"ITaikoInbox.BatchInfo","nameLocations":["12396:11:15","12408:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":5264,"src":"12396:21:15"},"referencedDeclaration":5264,"src":"12396:21:15","typeDescriptions":{"typeIdentifier":"t_struct$_BatchInfo_$5264_storage_ptr","typeString":"struct ITaikoInbox.BatchInfo"}},"visibility":"internal"},{"constant":false,"id":5606,"mutability":"mutable","name":"meta_","nameLocation":"12465:5:15","nodeType":"VariableDeclaration","scope":5608,"src":"12432:38:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BatchMetadata_$5274_memory_ptr","typeString":"struct ITaikoInbox.BatchMetadata"},"typeName":{"id":5605,"nodeType":"UserDefinedTypeName","pathNode":{"id":5604,"name":"ITaikoInbox.BatchMetadata","nameLocations":["12432:11:15","12444:13:15"],"nodeType":"IdentifierPath","referencedDeclaration":5274,"src":"12432:25:15"},"referencedDeclaration":5274,"src":"12432:25:15","typeDescriptions":{"typeIdentifier":"t_struct$_BatchMetadata_$5274_storage_ptr","typeString":"struct ITaikoInbox.BatchMetadata"}},"visibility":"internal"}],"src":"12395:76:15"},"scope":5726,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":5616,"nodeType":"FunctionDefinition","src":"12847:78:15","nodes":[],"documentation":{"id":5609,"nodeType":"StructuredDocumentation","src":"12478:364:15","text":"@notice Proves state transitions for multiple batches with a single aggregated proof.\n @param _params ABI-encoded parameter containing:\n - metas: Array of metadata for each batch being proved.\n - transitions: Array of batch transitions to be proved.\n @param _proof The aggregated cryptographic proof proving the batches transitions."},"functionSelector":"c9cc2843","implemented":false,"kind":"function","modifiers":[],"name":"proveBatches","nameLocation":"12856:12:15","parameters":{"id":5614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5611,"mutability":"mutable","name":"_params","nameLocation":"12884:7:15","nodeType":"VariableDeclaration","scope":5616,"src":"12869:22:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5610,"name":"bytes","nodeType":"ElementaryTypeName","src":"12869:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5613,"mutability":"mutable","name":"_proof","nameLocation":"12908:6:15","nodeType":"VariableDeclaration","scope":5616,"src":"12893:21:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5612,"name":"bytes","nodeType":"ElementaryTypeName","src":"12893:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12868:47:15"},"returnParameters":{"id":5615,"nodeType":"ParameterList","parameters":[],"src":"12924:0:15"},"scope":5726,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":5622,"nodeType":"FunctionDefinition","src":"13078:55:15","nodes":[],"documentation":{"id":5617,"nodeType":"StructuredDocumentation","src":"12931:142:15","text":"@notice Deposits TAIKO tokens into the contract to be used as liveness bond.\n @param _amount The amount of TAIKO tokens to deposit."},"functionSelector":"4dcb05f9","implemented":false,"kind":"function","modifiers":[],"name":"depositBond","nameLocation":"13087:11:15","parameters":{"id":5620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5619,"mutability":"mutable","name":"_amount","nameLocation":"13107:7:15","nodeType":"VariableDeclaration","scope":5622,"src":"13099:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5618,"name":"uint256","nodeType":"ElementaryTypeName","src":"13099:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13098:17:15"},"returnParameters":{"id":5621,"nodeType":"ParameterList","parameters":[],"src":"13132:0:15"},"scope":5726,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":5628,"nodeType":"FunctionDefinition","src":"13282:48:15","nodes":[],"documentation":{"id":5623,"nodeType":"StructuredDocumentation","src":"13139:138:15","text":"@notice Withdraws a specified amount of TAIKO tokens from the contract.\n @param _amount The amount of TAIKO tokens to withdraw."},"functionSelector":"c3daab96","implemented":false,"kind":"function","modifiers":[],"name":"withdrawBond","nameLocation":"13291:12:15","parameters":{"id":5626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5625,"mutability":"mutable","name":"_amount","nameLocation":"13312:7:15","nodeType":"VariableDeclaration","scope":5628,"src":"13304:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5624,"name":"uint256","nodeType":"ElementaryTypeName","src":"13304:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13303:17:15"},"returnParameters":{"id":5627,"nodeType":"ParameterList","parameters":[],"src":"13329:0:15"},"scope":5726,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":5636,"nodeType":"FunctionDefinition","src":"13503:70:15","nodes":[],"documentation":{"id":5629,"nodeType":"StructuredDocumentation","src":"13336:162:15","text":"@notice Returns the TAIKO token balance of a specific user.\n @param _user The address of the user.\n @return The TAIKO token balance of the user."},"functionSelector":"a9c2c835","implemented":false,"kind":"function","modifiers":[],"name":"bondBalanceOf","nameLocation":"13512:13:15","parameters":{"id":5632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5631,"mutability":"mutable","name":"_user","nameLocation":"13534:5:15","nodeType":"VariableDeclaration","scope":5636,"src":"13526:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5630,"name":"address","nodeType":"ElementaryTypeName","src":"13526:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13525:15:15"},"returnParameters":{"id":5635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5634,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5636,"src":"13564:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5633,"name":"uint256","nodeType":"ElementaryTypeName","src":"13564:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13563:9:15"},"scope":5726,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5642,"nodeType":"FunctionDefinition","src":"13737:53:15","nodes":[],"documentation":{"id":5637,"nodeType":"StructuredDocumentation","src":"13579:153:15","text":"@notice Retrieves the Bond token address. If Ether is used as bond, this function returns\n address(0).\n @return The Bond token address."},"functionSelector":"c28f4392","implemented":false,"kind":"function","modifiers":[],"name":"bondToken","nameLocation":"13746:9:15","parameters":{"id":5638,"nodeType":"ParameterList","parameters":[],"src":"13755:2:15"},"returnParameters":{"id":5641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5640,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5642,"src":"13781:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5639,"name":"address","nodeType":"ElementaryTypeName","src":"13781:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13780:9:15"},"scope":5726,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5649,"nodeType":"FunctionDefinition","src":"13920:59:15","nodes":[],"documentation":{"id":5643,"nodeType":"StructuredDocumentation","src":"13796:119:15","text":"@notice Retrieves the first set of protocol statistics.\n @return Stats1 structure containing the statistics."},"functionSelector":"12ad809c","implemented":false,"kind":"function","modifiers":[],"name":"getStats1","nameLocation":"13929:9:15","parameters":{"id":5644,"nodeType":"ParameterList","parameters":[],"src":"13938:2:15"},"returnParameters":{"id":5648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5647,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5649,"src":"13964:13:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Stats1_$5328_memory_ptr","typeString":"struct ITaikoInbox.Stats1"},"typeName":{"id":5646,"nodeType":"UserDefinedTypeName","pathNode":{"id":5645,"name":"Stats1","nameLocations":["13964:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":5328,"src":"13964:6:15"},"referencedDeclaration":5328,"src":"13964:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_Stats1_$5328_storage_ptr","typeString":"struct ITaikoInbox.Stats1"}},"visibility":"internal"}],"src":"13963:15:15"},"scope":5726,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5656,"nodeType":"FunctionDefinition","src":"14110:59:15","nodes":[],"documentation":{"id":5650,"nodeType":"StructuredDocumentation","src":"13985:120:15","text":"@notice Retrieves the second set of protocol statistics.\n @return Stats2 structure containing the statistics."},"functionSelector":"26baca1c","implemented":false,"kind":"function","modifiers":[],"name":"getStats2","nameLocation":"14119:9:15","parameters":{"id":5651,"nodeType":"ParameterList","parameters":[],"src":"14128:2:15"},"returnParameters":{"id":5655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5654,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5656,"src":"14154:13:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Stats2_$5339_memory_ptr","typeString":"struct ITaikoInbox.Stats2"},"typeName":{"id":5653,"nodeType":"UserDefinedTypeName","pathNode":{"id":5652,"name":"Stats2","nameLocations":["14154:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":5339,"src":"14154:6:15"},"referencedDeclaration":5339,"src":"14154:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_Stats2_$5339_storage_ptr","typeString":"struct ITaikoInbox.Stats2"}},"visibility":"internal"}],"src":"14153:15:15"},"scope":5726,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5665,"nodeType":"FunctionDefinition","src":"14326:79:15","nodes":[],"documentation":{"id":5657,"nodeType":"StructuredDocumentation","src":"14175:146:15","text":"@notice Retrieves data about a specific batch.\n @param _batchId The ID of the batch to retrieve.\n @return batch_ The batch data."},"functionSelector":"888775d9","implemented":false,"kind":"function","modifiers":[],"name":"getBatch","nameLocation":"14335:8:15","parameters":{"id":5660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5659,"mutability":"mutable","name":"_batchId","nameLocation":"14351:8:15","nodeType":"VariableDeclaration","scope":5665,"src":"14344:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5658,"name":"uint64","nodeType":"ElementaryTypeName","src":"14344:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"14343:17:15"},"returnParameters":{"id":5664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5663,"mutability":"mutable","name":"batch_","nameLocation":"14397:6:15","nodeType":"VariableDeclaration","scope":5665,"src":"14384:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Batch_$5318_memory_ptr","typeString":"struct ITaikoInbox.Batch"},"typeName":{"id":5662,"nodeType":"UserDefinedTypeName","pathNode":{"id":5661,"name":"Batch","nameLocations":["14384:5:15"],"nodeType":"IdentifierPath","referencedDeclaration":5318,"src":"14384:5:15"},"referencedDeclaration":5318,"src":"14384:5:15","typeDescriptions":{"typeIdentifier":"t_struct$_Batch_$5318_storage_ptr","typeString":"struct ITaikoInbox.Batch"}},"visibility":"internal"}],"src":"14383:21:15"},"scope":5726,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5676,"nodeType":"FunctionDefinition","src":"14680:162:15","nodes":[],"documentation":{"id":5666,"nodeType":"StructuredDocumentation","src":"14411:264:15","text":"@notice Retrieves a specific transition by batch ID and transition ID. This function may\n revert if the transition is not found.\n @param _batchId The batch ID.\n @param _tid The transition ID.\n @return The specified transition state."},"functionSelector":"ff109f59","implemented":false,"kind":"function","modifiers":[],"name":"getTransitionById","nameLocation":"14689:17:15","parameters":{"id":5671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5668,"mutability":"mutable","name":"_batchId","nameLocation":"14723:8:15","nodeType":"VariableDeclaration","scope":5676,"src":"14716:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5667,"name":"uint64","nodeType":"ElementaryTypeName","src":"14716:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5670,"mutability":"mutable","name":"_tid","nameLocation":"14748:4:15","nodeType":"VariableDeclaration","scope":5676,"src":"14741:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":5669,"name":"uint24","nodeType":"ElementaryTypeName","src":"14741:6:15","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"14706:52:15"},"returnParameters":{"id":5675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5674,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5676,"src":"14806:34:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TransitionState_$5296_memory_ptr","typeString":"struct ITaikoInbox.TransitionState"},"typeName":{"id":5673,"nodeType":"UserDefinedTypeName","pathNode":{"id":5672,"name":"ITaikoInbox.TransitionState","nameLocations":["14806:11:15","14818:15:15"],"nodeType":"IdentifierPath","referencedDeclaration":5296,"src":"14806:27:15"},"referencedDeclaration":5296,"src":"14806:27:15","typeDescriptions":{"typeIdentifier":"t_struct$_TransitionState_$5296_storage_ptr","typeString":"struct ITaikoInbox.TransitionState"}},"visibility":"internal"}],"src":"14805:36:15"},"scope":5726,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5687,"nodeType":"FunctionDefinition","src":"15120:178:15","nodes":[],"documentation":{"id":5677,"nodeType":"StructuredDocumentation","src":"14848:267:15","text":"@notice Retrieves a specific transition by batch ID and parent Hash. This function may\n revert if the transition is not found.\n @param _batchId The batch ID.\n @param _parentHash The parent hash.\n @return The specified transition state."},"functionSelector":"e8353dc0","implemented":false,"kind":"function","modifiers":[],"name":"getTransitionByParentHash","nameLocation":"15129:25:15","parameters":{"id":5682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5679,"mutability":"mutable","name":"_batchId","nameLocation":"15171:8:15","nodeType":"VariableDeclaration","scope":5687,"src":"15164:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5678,"name":"uint64","nodeType":"ElementaryTypeName","src":"15164:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5681,"mutability":"mutable","name":"_parentHash","nameLocation":"15197:11:15","nodeType":"VariableDeclaration","scope":5687,"src":"15189:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5680,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15189:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15154:60:15"},"returnParameters":{"id":5686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5685,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5687,"src":"15262:34:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TransitionState_$5296_memory_ptr","typeString":"struct ITaikoInbox.TransitionState"},"typeName":{"id":5684,"nodeType":"UserDefinedTypeName","pathNode":{"id":5683,"name":"ITaikoInbox.TransitionState","nameLocations":["15262:11:15","15274:15:15"],"nodeType":"IdentifierPath","referencedDeclaration":5296,"src":"15262:27:15"},"referencedDeclaration":5296,"src":"15262:27:15","typeDescriptions":{"typeIdentifier":"t_struct$_TransitionState_$5296_storage_ptr","typeString":"struct ITaikoInbox.TransitionState"}},"visibility":"internal"}],"src":"15261:36:15"},"scope":5726,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5698,"nodeType":"FunctionDefinition","src":"15566:146:15","nodes":[],"documentation":{"id":5688,"nodeType":"StructuredDocumentation","src":"15304:257:15","text":"@notice Retrieves the transition used for the last verified batch.\n @return batchId_ The batch ID of the last verified transition.\n @return blockId_ The block ID of the last verified block.\n @return ts_ The last verified transition."},"functionSelector":"9c436473","implemented":false,"kind":"function","modifiers":[],"name":"getLastVerifiedTransition","nameLocation":"15575:25:15","parameters":{"id":5689,"nodeType":"ParameterList","parameters":[],"src":"15600:2:15"},"returnParameters":{"id":5697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5691,"mutability":"mutable","name":"batchId_","nameLocation":"15657:8:15","nodeType":"VariableDeclaration","scope":5698,"src":"15650:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5690,"name":"uint64","nodeType":"ElementaryTypeName","src":"15650:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5693,"mutability":"mutable","name":"blockId_","nameLocation":"15674:8:15","nodeType":"VariableDeclaration","scope":5698,"src":"15667:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5692,"name":"uint64","nodeType":"ElementaryTypeName","src":"15667:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5696,"mutability":"mutable","name":"ts_","nameLocation":"15707:3:15","nodeType":"VariableDeclaration","scope":5698,"src":"15684:26:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TransitionState_$5296_memory_ptr","typeString":"struct ITaikoInbox.TransitionState"},"typeName":{"id":5695,"nodeType":"UserDefinedTypeName","pathNode":{"id":5694,"name":"TransitionState","nameLocations":["15684:15:15"],"nodeType":"IdentifierPath","referencedDeclaration":5296,"src":"15684:15:15"},"referencedDeclaration":5296,"src":"15684:15:15","typeDescriptions":{"typeIdentifier":"t_struct$_TransitionState_$5296_storage_ptr","typeString":"struct ITaikoInbox.TransitionState"}},"visibility":"internal"}],"src":"15649:62:15"},"scope":5726,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5709,"nodeType":"FunctionDefinition","src":"15972:144:15","nodes":[],"documentation":{"id":5699,"nodeType":"StructuredDocumentation","src":"15718:249:15","text":"@notice Retrieves the transition used for the last synced batch.\n @return batchId_ The batch ID of the last synced transition.\n @return blockId_ The block ID of the last synced block.\n @return ts_ The last synced transition."},"functionSelector":"cee1136c","implemented":false,"kind":"function","modifiers":[],"name":"getLastSyncedTransition","nameLocation":"15981:23:15","parameters":{"id":5700,"nodeType":"ParameterList","parameters":[],"src":"16004:2:15"},"returnParameters":{"id":5708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5702,"mutability":"mutable","name":"batchId_","nameLocation":"16061:8:15","nodeType":"VariableDeclaration","scope":5709,"src":"16054:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5701,"name":"uint64","nodeType":"ElementaryTypeName","src":"16054:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5704,"mutability":"mutable","name":"blockId_","nameLocation":"16078:8:15","nodeType":"VariableDeclaration","scope":5709,"src":"16071:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5703,"name":"uint64","nodeType":"ElementaryTypeName","src":"16071:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5707,"mutability":"mutable","name":"ts_","nameLocation":"16111:3:15","nodeType":"VariableDeclaration","scope":5709,"src":"16088:26:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TransitionState_$5296_memory_ptr","typeString":"struct ITaikoInbox.TransitionState"},"typeName":{"id":5706,"nodeType":"UserDefinedTypeName","pathNode":{"id":5705,"name":"TransitionState","nameLocations":["16088:15:15"],"nodeType":"IdentifierPath","referencedDeclaration":5296,"src":"16088:15:15"},"referencedDeclaration":5296,"src":"16088:15:15","typeDescriptions":{"typeIdentifier":"t_struct$_TransitionState_$5296_storage_ptr","typeString":"struct ITaikoInbox.TransitionState"}},"visibility":"internal"}],"src":"16053:62:15"},"scope":5726,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5718,"nodeType":"FunctionDefinition","src":"16290:125:15","nodes":[],"documentation":{"id":5710,"nodeType":"StructuredDocumentation","src":"16122:163:15","text":"@notice Retrieves the transition used for verifying a batch.\n @param _batchId The batch ID.\n @return The transition used for verifying the batch."},"functionSelector":"7e7501dc","implemented":false,"kind":"function","modifiers":[],"name":"getBatchVerifyingTransition","nameLocation":"16299:27:15","parameters":{"id":5713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5712,"mutability":"mutable","name":"_batchId","nameLocation":"16334:8:15","nodeType":"VariableDeclaration","scope":5718,"src":"16327:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5711,"name":"uint64","nodeType":"ElementaryTypeName","src":"16327:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"16326:17:15"},"returnParameters":{"id":5717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5716,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5718,"src":"16391:22:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TransitionState_$5296_memory_ptr","typeString":"struct ITaikoInbox.TransitionState"},"typeName":{"id":5715,"nodeType":"UserDefinedTypeName","pathNode":{"id":5714,"name":"TransitionState","nameLocations":["16391:15:15"],"nodeType":"IdentifierPath","referencedDeclaration":5296,"src":"16391:15:15"},"referencedDeclaration":5296,"src":"16391:15:15","typeDescriptions":{"typeIdentifier":"t_struct$_TransitionState_$5296_storage_ptr","typeString":"struct ITaikoInbox.TransitionState"}},"visibility":"internal"}],"src":"16390:24:15"},"scope":5726,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":5725,"nodeType":"FunctionDefinition","src":"16526:62:15","nodes":[],"documentation":{"id":5719,"nodeType":"StructuredDocumentation","src":"16421:100:15","text":"@notice Retrieves the current protocol configuration.\n @return The current configuration."},"functionSelector":"b932bf2b","implemented":false,"kind":"function","modifiers":[],"name":"pacayaConfig","nameLocation":"16535:12:15","parameters":{"id":5720,"nodeType":"ParameterList","parameters":[],"src":"16547:2:15"},"returnParameters":{"id":5724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5723,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5725,"src":"16573:13:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Config_$5397_memory_ptr","typeString":"struct ITaikoInbox.Config"},"typeName":{"id":5722,"nodeType":"UserDefinedTypeName","pathNode":{"id":5721,"name":"Config","nameLocations":["16573:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":5397,"src":"16573:6:15"},"referencedDeclaration":5397,"src":"16573:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_Config_$5397_storage_ptr","typeString":"struct ITaikoInbox.Config"}},"visibility":"internal"}],"src":"16572:15:15"},"scope":5726,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"ITaikoInbox","contractDependencies":[],"contractKind":"interface","documentation":{"id":5186,"nodeType":"StructuredDocumentation","src":"104:685:15","text":"@title TaikoInbox\n @notice Acts as the inbox for the Taiko Alethia protocol, a simplified version of the\n original Taiko-Based Contestable Rollup (BCR). The tier-based proof system and\n contestation mechanisms have been removed.\n Key assumptions of this protocol:\n - Block proposals and proofs are asynchronous. Proofs are not available at proposal time,\n unlike Taiko Gwyneth, which assumes synchronous composability.\n - Proofs are presumed error-free and thoroughly validated, with proof type management\n delegated to IVerifier contracts.\n @dev Registered in the address resolver as \"taiko\".\n @custom:security-contact security@taiko.xyz"},"fullyImplemented":false,"linearizedBaseContracts":[5726],"name":"ITaikoInbox","nameLocation":"799:11:15","scope":5727,"usedErrors":[5516,5518,5520,5522,5524,5526,5528,5530,5532,5534,5536,5538,5540,5542,5544,5546,5548,5550,5552,5554,5556,5558,5560,5562,5564,5566,5568,5570,5572,5574,5576,5578,5580,5582,5584,5586,5588,5590,5592,5594],"usedEvents":[5440,5447,5454,5461,5467,5473,5484,5496,5507,5514]}],"license":"MIT"},"id":15} \ No newline at end of file diff --git a/script/stress_batch_test.py b/script/stress_batch.py similarity index 100% rename from script/stress_batch_test.py rename to script/stress_batch.py