diff --git a/Cargo.lock b/Cargo.lock index 59b464f8501d..a4428b561fee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6270,11 +6270,14 @@ dependencies = [ name = "selector_generator" version = "0.1.0" dependencies = [ + "anyhow", "clap 4.4.6", + "ethabi", "glob", + "hex", "serde", "serde_json", - "sha3 0.10.8", + "tokio", ] [[package]] diff --git a/core/bin/selector_generator/Cargo.toml b/core/bin/selector_generator/Cargo.toml index e0b0afe0ae2c..b3425c11b4ec 100644 --- a/core/bin/selector_generator/Cargo.toml +++ b/core/bin/selector_generator/Cargo.toml @@ -11,8 +11,11 @@ categories.workspace = true publish = false [dependencies] +anyhow.workspace = true serde = { workspace = true, features = ["derive"] } serde_json.workspace = true -sha3.workspace = true glob.workspace = true -clap = { workspace = true, features = ["derive"] } \ No newline at end of file +clap = { workspace = true, features = ["derive"] } +ethabi.workspace = true +hex.workspace = true +tokio = { workspace = true, features = ["full"] } diff --git a/core/bin/selector_generator/src/app.rs b/core/bin/selector_generator/src/app.rs new file mode 100644 index 000000000000..425bf9f42826 --- /dev/null +++ b/core/bin/selector_generator/src/app.rs @@ -0,0 +1,105 @@ +use std::path::PathBuf; + +use anyhow::Context; +use glob::glob; +use tokio::io::AsyncWriteExt as _; + +use crate::selectors::Selectors; + +#[derive(Debug, Default)] +pub(crate) struct App { + /// Selectors file. + file_path: PathBuf, + /// All the selectors. Initially, will be loaded from the file. + /// All the discovered selectors will be merged into it. + selectors: Selectors, + /// Number of selectors before processing the files. + /// Used for reporting. + selectors_before: usize, + /// Number of files analyzed. + /// Used for reporting. + analyzed_files: usize, +} + +impl App { + /// Loads the selectors from the file, or returns a new instance if the file doesn't exist. + pub async fn load(file_path: impl Into) -> anyhow::Result { + let file_path = file_path.into(); + // If doesn't exist, return default. + if !file_path.exists() { + return Ok(Self::default()); + } + + let file = tokio::fs::read(&file_path) + .await + .context("Failed to read file")?; + let selectors: Selectors = + serde_json::from_slice(&file).context("Failed to deserialize file")?; + let selectors_before = selectors.len(); + Ok(Self { + file_path, + selectors, + selectors_before, + analyzed_files: 0, + }) + } + + /// Analyses all the JSON files, looking for 'abi' entries, and then computing the selectors for them. + pub async fn process_files(&mut self, directory: &str) -> anyhow::Result<()> { + for file_path in Self::load_file_paths(directory) { + let Ok(new_selectors) = Selectors::load(&file_path).await.inspect_err(|e| { + eprintln!("Error parsing file {file_path:?}: {e:?}"); + }) else { + continue; + }; + self.merge(new_selectors); + } + Ok(()) + } + + /// Saves the selectors to the file. + pub async fn save(self) -> anyhow::Result<()> { + let mut file = tokio::fs::OpenOptions::new() + .write(true) + .create(true) + .truncate(true) + .open(self.file_path) + .await + .context("Failed to open file")?; + let json = serde_json::to_string_pretty(&self.selectors)?; + file.write_all(json.as_bytes()) + .await + .context("Failed to save file")?; + Ok(()) + } + + /// Merges the new selectors into the current ones. + pub fn merge(&mut self, new: Selectors) { + self.selectors.merge(new); + self.analyzed_files += 1; + } + + /// Reports the number of analyzed files and the number of added selectors. + pub fn report(&self) { + println!( + "Analyzed {} files. Added {} selectors (before: {} after: {})", + self.analyzed_files, + self.selectors.len() - self.selectors_before, + self.selectors_before, + self.selectors.len() + ); + } + + fn load_file_paths(dir: &str) -> Vec { + glob(&format!("{}/**/*.json", dir)) + .expect("Failed to read glob pattern") + .filter_map(|entry| match entry { + Ok(path) => Some(path), + Err(e) => { + eprintln!("Error reading file: {:?}", e); + None + } + }) + .collect() + } +} diff --git a/core/bin/selector_generator/src/main.rs b/core/bin/selector_generator/src/main.rs index ad6180413f14..f5ed2e01c582 100644 --- a/core/bin/selector_generator/src/main.rs +++ b/core/bin/selector_generator/src/main.rs @@ -1,105 +1,33 @@ -use std::{ - collections::HashMap, - fs::{File, OpenOptions}, - io::{self}, -}; - +use app::App; use clap::Parser; -use glob::glob; -use serde::{Deserialize, Serialize}; -use sha3::{Digest, Keccak256}; - -#[derive(Debug, Serialize, Deserialize)] -struct ABIEntry { - #[serde(rename = "type")] - entry_type: String, - name: Option, - inputs: Option>, -} -#[derive(Debug, Serialize, Deserialize)] -struct ABIInput { - #[serde(rename = "type")] - input_type: String, -} +pub(crate) mod app; +pub(crate) mod selectors; +/// Selector generator tool. +/// +/// Generates a mapping of short (4-byte) function selectors to their corresponding function names. +/// +/// The generated JSON can be used to lookup function names by their selectors, when interacting +/// with Ethereum contracts. #[derive(Debug, Parser)] -#[command(author, version, about, long_about = None)] +#[command(author, version, about, long_about)] struct Cli { + /// Path to the directory with JSON files containing ABI. + /// All JSON files in this directory will be processed. contracts_dir: String, + /// Path to the output file. + /// The file will contain the list of function selectors. + /// If the file already exists, new selectors will be appended to it. output_file: String, } -/// Computes solidity selector for a given method and arguments. -fn compute_selector(name: &str, inputs: &[ABIInput]) -> String { - let signature = format!( - "{}({})", - name, - inputs - .iter() - .map(|i| i.input_type.clone()) - .collect::>() - .join(",") - ); - let mut hasher = Keccak256::new(); - hasher.update(signature); - format!("{:x}", hasher.finalize())[..8].to_string() -} - -/// Analyses all the JSON files, looking for 'abi' entries, and then computing the selectors for them. -fn process_files(directory: &str, output_file: &str) -> io::Result<()> { - let mut selectors: HashMap = match File::open(output_file) { - Ok(file) => serde_json::from_reader(file).unwrap_or_default(), - Err(_) => HashMap::new(), - }; - let selectors_before = selectors.len(); - let mut analyzed_files = 0; - - for entry in glob(&format!("{}/**/*.json", directory)).expect("Failed to read glob pattern") { - match entry { - Ok(path) => { - let file_path = path.clone(); - let file = File::open(path)?; - let json: Result = serde_json::from_reader(file); - - if let Ok(json) = json { - if let Some(abi) = json.get("abi").and_then(|v| v.as_array()) { - analyzed_files += 1; - for item in abi { - let entry: ABIEntry = serde_json::from_value(item.clone()).unwrap(); - if entry.entry_type == "function" { - if let (Some(name), Some(inputs)) = (entry.name, entry.inputs) { - let selector = compute_selector(&name, &inputs); - selectors.entry(selector).or_insert(name); - } - } - } - } - } else { - eprintln!("Error parsing file: {:?} - ignoring.", file_path) - } - } - Err(e) => eprintln!("Error reading file: {:?}", e), - } - } - println!( - "Analyzed {} files. Added {} selectors (before: {} after: {})", - analyzed_files, - selectors.len() - selectors_before, - selectors_before, - selectors.len() - ); - - let file = OpenOptions::new() - .write(true) - .create(true) - .truncate(true) - .open(output_file)?; - serde_json::to_writer_pretty(file, &selectors)?; - Ok(()) -} - -fn main() -> io::Result<()> { +#[tokio::main] +async fn main() -> anyhow::Result<()> { let args = Cli::parse(); - process_files(&args.contracts_dir, &args.output_file) + let mut app = App::load(args.output_file).await?; + app.process_files(&args.contracts_dir).await?; + app.report(); + app.save().await?; + Ok(()) } diff --git a/core/bin/selector_generator/src/selectors.rs b/core/bin/selector_generator/src/selectors.rs new file mode 100644 index 000000000000..3b69854a9478 --- /dev/null +++ b/core/bin/selector_generator/src/selectors.rs @@ -0,0 +1,118 @@ +use std::{collections::HashMap, path::PathBuf}; + +use anyhow::Context; +use serde::{Deserialize, Serialize}; + +/// Short (4-byte) function selector. +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] +#[serde(transparent)] +struct Selector(String); + +/// Function name without parameters. +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +#[serde(transparent)] +struct FunctionName(String); + +/// A set of function selectors and their corresponding function names. +#[derive(Debug, Default, Serialize, Deserialize)] +pub(crate) struct Selectors { + #[serde(flatten)] + selectors: HashMap, +} + +impl Selectors { + /// Loads the selectors from the file, or returns a new instance if the file is a valid + /// JSON, but doesn't contain `ABI` section. + /// + /// Will return an error if file doesn't exist or cannot be deserialized. + pub async fn load(file_path: &PathBuf) -> anyhow::Result { + let file = tokio::fs::read(file_path) + .await + .context("Failed to read file")?; + let json: serde_json::Value = + serde_json::from_slice(&file).context("Failed to deserialize file")?; + let Some(abi) = json.get("abi").cloned() else { + return Ok(Selectors::default()); + }; + + let contract: ethabi::Contract = + serde_json::from_value(abi).context("Failed to parse abi")?; + Ok(Self::new(contract)) + } + + /// Loads selectors from a given contract. + pub fn new(contract: ethabi::Contract) -> Self { + let selectors: HashMap<_, _> = contract + .functions + .into_values() + .flatten() + .map(|function| { + let selector = hex::encode(function.short_signature()); + (Selector(selector), FunctionName(function.name)) + }) + .collect(); + Self { selectors } + } + + /// Merges new selectors into the existing set. + pub fn merge(&mut self, new: Self) { + for (selector, name) in new.selectors { + self.selectors + .entry(selector.clone()) + .and_modify(|e| { + assert_eq!( + e, &name, + "Function name mismatch for selector '{:?}'", + selector + ) + }) + .or_insert(name); + } + } + + pub fn len(&self) -> usize { + self.selectors.len() + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_selectors() { + let contract_json = r#"[ + { + "type": "function", + "name": "transfer", + "inputs": [ + { "name": "to", "type": "address" }, + { "name": "value", "type": "uint256" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "bar", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + } + ] + "#; + + let contract: ethabi::Contract = serde_json::from_str(contract_json).unwrap(); + let selectors = Selectors::new(contract); + assert_eq!(selectors.len(), 2); + + // Check the generated selectors. + assert_eq!( + selectors + .selectors + .get(&Selector("a9059cbb".to_string())) + .expect("No selector for transfer found"), + &FunctionName("transfer".to_string()) + ); + } +} diff --git a/etc/selector-generator-data/selectors.json b/etc/selector-generator-data/selectors.json index 6ea986e4263a..f8a6d2e825b2 100644 --- a/etc/selector-generator-data/selectors.json +++ b/etc/selector-generator-data/selectors.json @@ -1,518 +1,1025 @@ { - "d0f2c663": "getBatchNumberAndTimestamp", - "2a79c611": "getCommitment", - "8129fc1c": "initialize", - "e2a9d554": "setUpgradeTimestamp", - "84c2ff75": "stmAssetId", - "7ac3a553": "withdrawLegacyBridge", - "e91659ae": "addNewChainIfNeeded", - "06d49e5b": "getPubdataPricingMode", - "1ff5a783": "execute", - "8310f2c6": "transferFundsFromSharedBridge", - "80b41246": "getBlockHashEVM", - "7da01cd6": "executeUpgrade", - "74044673": "addStateTransitionManager", - "82b57749": "forwardedBridgeMint", - "6478d8ed": "chainAdmin", - "4af63f02": "deploy", - "d0707b67": "aggregate", - "e0ab6368": "assetIdIsRegistered", - "27e86d6e": "getLastBlockHash", - "13bc9f20": "isOperationReady", - "4a2e35ba": "withdraw", - "1e4fba05": "getChainRoot", - "762008c2": "executeBatchesSharedBridge", - "155fd27a": "setValueUnderNonce", - "a6ae0aac": "coinbase", - "86d516e8": "getCurrentBlockGasLimit", - "3659cfe6": "upgradeTo", - "fa8f7ea6": "getAllHyperchains", - "7b510fe8": "getAccountInfo", - "40c10f19": "mint", - "e02e1bfd": "chainCount", - "015f58d7": "genesisUpgrade", - "28e439f3": "tryBlockAndAggregate", - "e76db865": "setPubdataPricingMode", - "62f84b24": "sendToL1", - "1c9f0149": "updateChainBalancesFromSharedBridge", - "38720778": "sharedBridge", - "64e130cf": "nativeTokenVault", - "adfca15e": "facetFunctionSelectors", - "af500fb7": "readBytes32", - "7b315630": "upgradeChainFromVersion", - "b6ea1757": "pushNewLeaf", - "e66c8c44": "validatorTimelock", + "e341eaa4": "sign", + "600903ad": "keyExistsToml", + "174dea71": "aggregate3Value", + "21ed2977": "assertApproxEqRelDecimal", + "90c5013b": "stopPrank", + "e4948f43": "proveL2MessageInclusion", "4f1ef286": "upgradeToAndCall", - "fe26699e": "getTotalBlocksCommitted", - "805b9869": "executeTransactionFromOutside", - "aa4593dc": "revertReceive", - "64b554ad": "forwardedBridgeBurn", - "ba238947": "getProtocolVersion", - "07f8c636": "multicall", - "39607382": "getTotalBlocksExecuted", - "796b89b9": "getBlockTimestamp", - "9cd939e4": "l2LogsRootHash", - "b298e36b": "push", + "e985e9c5": "isApprovedForAll", + "6ba3ba2b": "createFork", + "23b872dd": "transferFrom", + "740211ce": "commitValidatorCommittee", + "b292f5f1": "proveL1ToL2TransactionStatus", + "dbfe3e96": "updateSecurityCouncil", + "b12fc005": "assertLt", + "868085b1": "getBatchProofPublicInput", + "64d62353": "updateDelay", + "48c3241f": "closeFile", + "60f9bb11": "readFile", + "c88a5e6d": "deal", + "6f497ac6": "executeBatchesSharedBridge", + "966c523e": "blockAndAggregate", + "c438a9f2": "L2_LEGACY_SHARED_BRIDGE", + "59890bcb": "setExecutedBatches", + "e30c3978": "pendingOwner", + "31ba3498": "createFork", + "669efca7": "assertNotEqDecimal", + "c75ac8fa": "processL2Logs", + "ddc2651b": "envBytes", + "4de2e468": "getRawCodeHash", + "129de7eb": "blobhashes", + "b3e47705": "envOr", + "e543e5bf": "setChainCreationParams", + "8466f415": "assertLe", + "cc3fbc63": "setEraPostDiamondUpgradeFirstBatch", + "be6f11cf": "setPriorityTxMaxGasLimit", + "8da5cb5b": "owner", + "9f5684a2": "readLink", + "994057ef": "changeAttesterKey", + "711043ac": "assertEq", + "5875da2b": "changeValidatorKey", + "5139839c": "nodeOwners", + "7b048ccd": "parseJsonInt", + "a37dc1d4": "forwardedBridgeClaimFailedBurn", + "adfca15e": "facetFunctionSelectors", + "3e64a696": "getBasefee", + "99624cb6": "getAttesterCommittee", + "1497876c": "readDir", + "d48bfca7": "addToken", + "17d7de7c": "getName", + "eeb8cb09": "executeTransactionFromOutside", + "0c56efe9": "initializeV2", + "01eae183": "depositAmount", + "561cd6f3": "serializeString", + "b7909320": "assertNotEq", + "41c841c3": "L1_WETH_TOKEN", + "7475e9ea": "chainAdminAcceptAdmin", + "ca669fa7": "prank", + "c1899c1d": "createBatchCommitment", + "38a78092": "increaseMinNonce", + "a9059cbb": "transfer", + "f54266a2": "l1TokenAddress", + "e0eb04d4": "isFile", + "e9f18c17": "forceDeployOnAddresses", + "3d1fe08a": "assertGeDecimal", + "a2b1a1ae": "expectCall", + "5d83b6da": "__DEPRECATED_baseToken", "7890e5da": "side", - "5e1ac65f": "hashOperation", - "1806aa18": "getCodeSize", - "d4a4ca0d": "getBlockNumberAndTimestamp", - "06bed036": "setL2Block", - "aa970773": "validateAndPayForPaymasterTransaction", - "6223258e": "setDAValidatorPair", + "40f0b4e0": "assertLtDecimal", + "71aad10d": "toString", + "29f172ad": "unsafeOverrideBatch", + "8289e621": "assertApproxEqAbs", + "eccd2437": "assertGtDecimal", + "cdf25430": "L1_ASSET_ROUTER", + "a22cb465": "setApprovalForAll", + "9983c28a": "parseJsonIntArray", + "f67a965b": "broadcast", + "aa5cf788": "assertLeDecimal", + "8775a591": "assertNotEq", + "57f3921f": "stmAssetIdToAddress", + "2f2fd63f": "getMappingLength", + "2c431917": "scheduleTransparent", + "7b574586": "publishedBlobCommitments", + "31d50750": "isOperation", + "21f603d7": "setTransactionFilterer", + "8129fc1c": "initialize", "728cb93b": "bridgeClaimFailedBurn", - "d6abe642": "getAssetId", - "d2ef1b0e": "storedBatchZero", - "51b3c157": "hyperbridgingEnabled", - "53e61bdc": "processL2RollupDAValidatorOutputHash", - "95d89b41": "symbol", - "a37dc1d4": "forwardedBridgeClaimFailedBurn", - "db1f0bf9": "getTotalBatchesCommitted", - "beda594a": "setHyperchain", + "19698bc9": "infiniteFunction", + "3ce969e6": "revokePersistent", + "a322c40e": "toString", + "c29f093f": "setSTM", + "fd921be8": "parseJsonBytes", + "0d4aae9b": "stopMappingRecording", + "e03e9177": "assertEq", + "0a30b771": "assertGe", + "5e1ac65f": "hashOperation", + "9a188371": "requestL2TransactionDirect", + "62c6f9fb": "assertNotEq", + "b8c2f66f": "getTotalBatchesExecuted", + "42181150": "envInt", + "d17d4b0d": "assertLe", + "6ab8f82e": "proveL2LogInclusion", + "580d6bff": "updateAllNodesAtHeight", + "c3bbd2d7": "isFacetFreezable", + "8a75bb09": "saveL2LogsRootHash", + "71dce7da": "toString", + "1091a261": "assertNotEq", + "6ee1dc20": "validateNonceUsage", + "65bc9481": "accesses", + "f088ccdc": "callCodeOracle", + "0956441b": "stopExpectSafeMemory", + "5aa6fa1f": "NATIVE_TOKEN_VAULT", + "8310f2c6": "transferFundsFromSharedBridge", + "484f0505": "getHyperchainLegacy", "3977d71c": "getAggregatedRoot", - "c4d252f5": "cancel", - "2878fe74": "genesisUpgrade", - "2ab0f529": "isOperationDone", - "5d4edca7": "BRIDGE_HUB", - "d4b9f4fa": "messageRoot", - "fb1a9a57": "getDeploymentNonce", - "bb0fd610": "extendedAccountVersion", - "3cda3351": "create2", - "3a9d7f8d": "stmDeployer", - "db541184": "setShouldRevertOnExecuteBatches", - "74f4f547": "bridgeBurn", - "b852ad36": "l1SharedBridge", - "6ef25c3a": "baseFee", - "eb39e6d5": "stateTransitionManager", - "381c3f13": "checkDA", + "0008efda": "runDefaultUpgrader", + "328ef4fe": "setBaseTokenGasMultiplierPrice", + "ad31b9fa": "envAddress", + "65c428e7": "parseTomlAddressArray", + "bf529569": "setFreezability", + "ef3f0bae": "getTotalBatchesVerified", + "ce8365f9": "envExists", + "30bda03e": "setL1Erc20Bridge", + "cdc4878b": "nodeCount", + "015f58d7": "genesisUpgrade", + "a84328dd": "assertGe", + "1cc5d103": "setPorterAvailability", + "588570a5": "initialize", + "ae00b630": "runDeployConsensusRegistry", + "a31ee5b0": "initialize", + "9a7fbd8f": "assertNotEq", + "e23d2563": "getEraChainId", + "24fd57fb": "requestL2TransactionTwoBridges", + "0cc9ee84": "assertEq", + "f56ff18b": "getBlobhashes", "f92ad219": "initialize", - "9fa8826b": "depositHappened", - "01d23d4b": "diamondCut", - "55d35d18": "getValueUnderNonce", - "ee7fb38b": "calculateRoot", - "64d62353": "updateDelay", - "fd3c6b55": "processCalldataDA", - "39b34c6e": "requestBytecodeL1Publication", + "f2830f7b": "rollFork", + "2f90b184": "L1_CHAIN_ID", + "5de097b1": "nullifyChainBalanceByNTV", + "14e75680": "assertNotEqDecimal", + "204e1c7a": "getProxyImplementation", + "240f839d": "assertApproxEqAbs", "71623274": "l2TransactionBaseCost", - "53b9e632": "assetHandlerAddress", - "c987336c": "upgrade", - "5c975abb": "paused", - "4623c91d": "setValidator", - "4f1e1be0": "storeAccountConstructingCodeHash", - "b0f40a17": "processBatch", - "2c4f2a58": "bridgehubDepositBaseToken", - "ced531eb": "setHashes", - "18160ddd": "totalSupply", - "7cb9357e": "gasPerPubdataByte", - "7877a797": "blockGasLimit", - "cdc4878b": "nodeCount", - "c2eeeebd": "l1Address", - "0f23da43": "revertBatchesSharedBridge", - "e1239cd8": "incrementMinNonceIfEquals", - "8456cb59": "pause", - "9a42c2c2": "zeroPointerTest", - "f9f3ee2d": "setResult", - "7ba8be34": "decodeUint8", + "d9a3c4d2": "assertGt", + "e23cd19f": "writeJson", + "a0803ef7": "currentBlockInfo", + "aa4593dc": "revertReceive", + "d0468156": "getPendingAdmin", + "3e9173c5": "assertEq", + "a6368557": "deleteSnapshot", + "f413f0b6": "assertEq", + "e03fe177": "getCodeHash", + "812a44b2": "parseTomlKeys", + "80b41246": "getBlockHashEVM", + "1f7b4f30": "roll", + "c87b56dd": "tokenURI", + "dc8e4b26": "registerSettlementLayer", + "949431dc": "approvalBased", + "35e1349b": "eth_getLogs", + "5d4edca7": "BRIDGE_HUB", + "607457f2": "setShouldRevertOnCommitBatches", + "18717dc1": "setPorterAvailability", + "ede25608": "protocolVersionToUpgradeTimestamp", + "9ebf6827": "selectFork", + "84d9fedd": "popFront", + "06d49e5b": "getPubdataPricingMode", + "b3a056d7": "loadAllocs", + "49a7cc72": "payForTransaction", + "b381724e": "setFeeParams", + "d30dced6": "parseTomlBool", + "72c7e0b5": "assertNotEq", + "6223258e": "setDAValidatorPair", + "f90eb963": "getPorterAvailability", + "3f58f5b5": "createNewChain", + "c126e860": "hashOperation", + "491cc7c2": "expectEmit", + "7eff275e": "changeProxyAdmin", + "252dba42": "aggregate", + "01ffc9a7": "supportsInterface", + "a5748aad": "getNonce", + "69c76df2": "readUint32", + "d0bf6fd4": "setSharedBridge", + "dbe8d88b": "assertLtDecimal", + "3d1f16d4": "commitAttesterCommittee", + "48016c04": "assertEqDecimal", + "8dd14802": "setBridge", + "923b3b56": "forceDeployOnAddress", + "def9d6af": "protocolVersionIsActive", + "714a2f13": "assertEq", + "cf1c049c": "assertEq", + "087e6e81": "parseBytes32", + "6d016688": "expectSafeMemory", + "aa970773": "validateAndPayForPaymasterTransaction", "a635f01d": "delegateCall", - "2f90b184": "L1_CHAIN_ID", - "6c0960f9": "finalizeEthWithdrawal", - "31d50750": "isOperation", - "59ec65a2": "baseToken", - "a9b0d128": "setPriorityTreeStartIndex", - "c4879440": "bridgehubDepositBaseToken", - "823f1d96": "l2TokenProxyBytecodeHash", - "18876a04": "chunkPubdataToBlobs", - "699b0fb9": "bridgeBurn", - "17338945": "unfreezeDiamond", - "8a75bb09": "saveL2LogsRootHash", - "91b19874": "validators", - "63dc94b1": "forceDeploy", - "5a590335": "getDAValidatorPair", - "60144197": "setTokenMultiplierSetter", - "938b5f32": "origin", - "36ba0355": "bridgeMint", - "6dde7209": "l2TokenBeacon", - "bf54096e": "MAX_NUMBER_OF_HYPERCHAINS", - "7e44bc5e": "setImmutables", - "8e8acf87": "getL2BlockNumberAndTimestamp", - "e30c3978": "pendingOwner", + "2f103f22": "activeFork", + "8102d70d": "readDir", + "3cf78e28": "assertNotEq", + "97949042": "envBytes32", "f5e69a47": "publishCompressedBytecode", - "84da1fb4": "getNewAddressCreate2", - "47fcedb8": "setFeeParams", - "b22dd78e": "storedBatchHash", + "39509351": "increaseAllowance", + "97bb3ce9": "tokenAddress", + "f9f3ee2d": "setResult", + "ae65def1": "node", + "d124dc4f": "send", + "64b554ad": "forwardedBridgeBurn", + "f0259e92": "breakpoint", + "ebc73ab4": "getMappingSlotAt", + "0e18b681": "acceptAdmin", + "f3385fb6": "forceDeployOnAddress", + "667f9d70": "load", + "8f5d232d": "parseBytes", + "515361f6": "assertEq", + "6d315d7e": "blobBaseFee", + "4724c5b9": "assertNotEq", + "3425eb89": "tokenMultiplierSetter", + "2d0335ab": "getNonce", + "07ee9355": "l2BridgeAddress", + "189a5a17": "nodes", + "9a8a0592": "chainId", + "1d9e269e": "makePersistent", + "3d5bc8bc": "assertApproxEqAbsDecimal", + "701f58c5": "commitBatches", + "7877a797": "blockGasLimit", + "e6962cdb": "broadcast", + "5aa9b6b5": "getRawNonce", + "876e24e6": "getMappingKeyAndParentOf", + "b67187f3": "assertNotEq", + "933999fb": "deposit", + "4074e0a8": "makePersistent", + "0dbad27e": "upgradeChainFromVersion", + "3601e63e": "bridgeRecoverFailedTransfer", + "f710b062": "assertApproxEqAbs", + "e516761e": "markFactoryDeps", "57e6246b": "initialCutHash", - "2b805192": "setNewVersionUpgrade", - "dbfe3e96": "updateSecurityCouncil", - "e03fe177": "getCodeHash", - "02fa5779": "setNewBatch", - "a225efcb": "setPubdataInfo", - "9cc395d0": "bridgeCheckCounterpartAddress", - "868085b1": "getBatchProofPublicInput", - "6a0cd1f5": "removeValidator", - "2ae9c600": "protocolVersion", - "61f91b2e": "initialForceDeploymentHash", - "72425d9d": "getCurrentBlockDifficulty", - "8c2a993e": "bridgeMint", - "b473318e": "l2TransactionBaseCost", - "f851a440": "admin", - "681fe70c": "isEmpty", - "ef3f0bae": "getTotalBatchesVerified", + "c0406226": "run", + "7b30c8da": "getL2SystemContractsUpgradeTxHash", + "74637a7a": "computeCreateAddress", + "ba334825": "hyperchain", + "ca408c23": "bridgehubDeposit", + "6352211e": "ownerOf", + "9f86dc91": "parseJsonBool", "ba75bbd8": "front", - "cdffacc6": "facetAddress", - "89f9a072": "validatePubdata", - "66869d49": "changeFeeParams", - "e8b99b1b": "deposit", - "4d4a1eca": "setTokenMultiplier", - "a0803ef7": "currentBlockInfo", - "fb4baf17": "changeFeeParams", - "3591c1a0": "getBridgehub", - "fd791f3c": "getL2DefaultAccountBytecodeHash", - "ec8067c7": "updateNonceOrdering", - "a3912ec8": "receiveEther", - "79823c9a": "getFirstUnprocessedPriorityTx", - "235d9eb5": "setTokenMultiplier", - "dd354a06": "calculateCreate2TokenAddress", - "7efda2ae": "proveL2LeafInclusion", - "f120e6c4": "encodeTxDataHash", - "f5f15168": "l2TokenAddress", - "4d2301cc": "getEthBalance", - "ab07b2e9": "getL2GasPrice", - "363bf964": "setAddresses", - "607457f2": "setShouldRevertOnCommitBatches", - "d1ba7e97": "hyperchainAddress", - "841a9d42": "aggregate3Value", + "b473318e": "l2TransactionBaseCost", + "c304aab7": "assertLeDecimal", + "64bf8d66": "changeFeeParams", + "f4844814": "expectRevert", + "2878fe74": "genesisUpgrade", + "89160467": "ffi", + "27af7d9c": "assertEqDecimal", + "ebe4a3d7": "getTransactionHashes", + "7fec2a8d": "startBroadcast", + "d505accf": "permit", + "09824a80": "registerToken", + "c21a38e2": "proveL2MessageInclusion", + "c31eb0e0": "expectRevert", + "561fe540": "envOr", + "f8d33b9b": "assertGt", "ea6c029c": "baseTokenGasPriceMultiplierNominator", - "de8fa431": "getSize", - "24a55db9": "markBytecodeAsPublished", - "c438a9f2": "L2_LEGACY_SHARED_BRIDGE", - "ddeaa8e6": "getBatchHash", - "8f31f052": "isWithdrawalFinalized", - "41cf49bb": "prepareChainCommitment", - "5d382700": "create2Account", - "6d9860e1": "l1AssetRouter", + "ef277d72": "assertApproxEqRel", + "c846f6df": "transferFundsFromLegacy", + "7ca29682": "createFork", + "5ca1e165": "getRoot", + "37736e08": "parseToml", + "29b98c67": "isDiamondStorageFrozen", + "f0e9da23": "readAddress", + "1206c8a8": "rpc", + "f8ccbf47": "IS_SCRIPT", + "dd62ed3e": "allowance", + "56ca623e": "toString", + "f6370c7b": "setChainCreationParams", + "06447d56": "startPrank", + "05838bf4": "expectSafeMemoryCall", "e1ad1162": "transfer", - "bf1fe420": "setGasPrice", - "a1954fc5": "getTotalPriorityTxs", - "c0a16dda": "setAssetDeploymentTracker", - "4145ca27": "removePriorityQueueFront", - "09e14277": "setStateTransitionManager", - "1f067457": "revertTransfer", - "b8c2f66f": "getTotalBatchesExecuted", - "07ee9355": "l2BridgeAddress", - "095ea7b3": "approve", - "84b0196e": "eip712Domain", - "18b1771f": "getAssetId", - "f85894c5": "forwardedBridgeBurn", + "c7ca373c": "initFromCommitment", + "5a362d45": "assertGt", + "14b02bc9": "envString", + "f7d39a8d": "breakpoint", + "b2dad155": "trim", + "4ad0bac9": "readCallers", + "53ce2061": "revertBatches", "bd7c5412": "isEthWithdrawalFinalized", - "70a08231": "balanceOf", - "3425eb89": "tokenMultiplierSetter", - "5aa9b6b5": "getRawNonce", - "7ab08472": "finalizeWithdrawalLegacyErc20Bridge", - "205c2878": "withdrawTo", - "ec3d5f88": "setPriorityTxMaxGasLimit", - "8eb7db57": "bridgehubConfirmL2Transaction", - "2a72b707": "bridgehubRequestL2Transaction", - "0f3fa211": "setNativeTokenVault", - "4bed8212": "isWithdrawalFinalized", - "0c56efe9": "initializeV2", - "501e60d5": "setUpgradeDiamondCut", - "c29f093f": "setSTM", - "f2fde38b": "transferOwnership", - "8c5a3445": "general", - "ca8f93f1": "setLegacyBaseTokenAssetId", - "71abd109": "upgrade", - "eced0bf0": "__DEPRECATED_tokenIsRegistered", - "dc8e4b26": "registerSettlementLayer", - "310ab089": "getImmutable", - "19cae462": "difficulty", - "77421056": "setFunctionToCall", - "3997d064": "tryAggregate", - "f1d357e5": "L1_SHARED_BRIDGE", - "952a3ee7": "getERC20Getters", - "29b98c67": "isDiamondStorageFrozen", - "17d7de7c": "getName", - "e81e0ba1": "isFunctionFreezable", - "7ebba672": "setTokenMultiplier", - "6ee1dc20": "validateNonceUsage", - "6a27e8b5": "getSettlementLayer", - "7a28adb2": "proveL2LogInclusion", - "671a7131": "settlementLayer", - "accdd16c": "freezeChain", - "c3bbd2d7": "isFacetFreezable", - "99a88ec4": "upgrade", + "a6ae0aac": "coinbase", + "ab07b2e9": "getL2GasPrice", + "e02e1bfd": "chainCount", + "d92d8efd": "isPersistent", + "79823c9a": "getFirstUnprocessedPriorityTx", + "78bdcea7": "assertNotEq", + "699b0fb9": "bridgeBurn", + "18e3a941": "getVerifierParams", + "ee7fb38b": "calculateRoot", + "f851a440": "admin", "95f11a40": "bridgeInitialize", - "c9f5c932": "requestL2TransactionTwoBridges", - "f1a78aa6": "postTransaction", - "ca65fe79": "finalizeDeposit", - "5518c73b": "getStateTransitionManager", - "b5b18fe5": "processL2Logs", - "969b53da": "l1Bridge", - "e8a71ca9": "forwardedBridgeMint", - "505e6d47": "updateAllLeaves", - "ecf95b8a": "createAccount", - "84d9fedd": "popFront", "3f4ba83a": "unpause", - "1f98fa08": "createNewChain", - "313ce567": "decimals", - "3ce695e7": "registerSTMAssetOnL1", - "73c58a2d": "publishBlobs", - "f0e9da23": "readAddress", - "e23d2563": "getEraChainId", - "0ec6b0b7": "getPriorityTxMaxGasLimit", - "fdbb0301": "__DEPRECATED_l2BridgeAddress", - "52d1902d": "proxiableUUID", - "97bb3ce9": "tokenAddress", - "5d83b6da": "__DEPRECATED_baseToken", - "966c523e": "blockAndAggregate", - "f4943a20": "protocolVersionDeadline", - "46746c7d": "commitBatchesSharedBridge", - "87d9d023": "verify", - "57f3921f": "stmAssetIdToAddress", - "e516761e": "markFactoryDeps", - "daa51a8c": "pushBack", - "2e1a7d4d": "withdraw", - "af6ed122": "executeUpgrade", - "a6f2c076": "setDataToBeReturnedInFinalizeWithdrawal", - "01eae183": "depositAmount", - "9e8945d2": "verificationKeyHash", - "a3bd0112": "genesisUpgrade", - "927c4bf7": "upgradeExternal", - "56079ac8": "sendL2ToL1Log", - "d92f86a2": "setLegacyChainAddress", - "be6f11cf": "setPriorityTxMaxGasLimit", - "7321c485": "dummySetValidator", - "c0991525": "claimFailedDeposit", - "72d74cd7": "reinitializeToken", - "ab93d6f3": "requestL2TransactionToGatewayMailbox", - "3601e63e": "bridgeRecoverFailedTransfer", - "eb672419": "requestL2Transaction", - "af6a2dcd": "getTotalBlocksVerified", - "27eb6c0f": "securityCouncil", - "4c6314f0": "getMarker", - "49a7cc72": "payForTransaction", - "f20265d2": "setRevertTransfer", + "33ce93fe": "getProtocolVersion", + "d9caed12": "withdraw", + "c37533bb": "proveBatchesSharedBridge", + "07168226": "deployBeaconProxy", + "9cd939e4": "l2LogsRootHash", + "af500fb7": "readBytes32", + "db4235f6": "keyExistsJson", + "8c5a3445": "general", + "607e2cb2": "setRevertReceive", + "27ae4c16": "freezeDiamond", + "e0bf0850": "setShouldRevertOnProveBatches", + "8cb7f3d0": "forceDeployOnAddresses", + "47fcedb8": "setFeeParams", + "5d18c73a": "assertEq", + "efb77a75": "makePersistent", + "421ae469": "deleteSnapshots", + "39607382": "getTotalBlocksExecuted", + "d145736c": "envOr", + "76eadd36": "stopBroadcast", + "2f9c8f0d": "add", "84bc3eb0": "withdrawWithMessage", - "79c4f929": "markBytecodeAsPublished", - "580d6bff": "updateAllNodesAtHeight", + "a28c1aee": "prepareForPaymaster", + "150b7a02": "onERC721Received", + "45c62011": "removeDir", + "8cf2b2f0": "uncheckedInc", + "74da756b": "execute", + "1c50cfea": "addTokenAssetId", + "c2e4ff97": "markAccountCodeHashAsConstructed", + "e91659ae": "addNewChainIfNeeded", + "59ec65a2": "baseToken", + "350d56bf": "envAddress", + "4d8abc4b": "transact", + "2077337e": "assertLtDecimal", + "938b5f32": "origin", + "f2fde38b": "transferOwnership", + "0d4651aa": "storeAccountConstructedCodeHash", + "b993549e": "getCommittedBatchTimestamp", + "7c84c69b": "assertEq", + "70f5c679": "setMessageRoot", + "e1239cd8": "incrementMinNonceIfEquals", + "04a5c7ab": "assertGtDecimal", + "f20265d2": "setRevertTransfer", + "95d89b41": "symbol", + "11a2ccc1": "finalizeWithdrawal", + "65b7b7cc": "expectCall", + "1f21fc80": "writeFileBinary", + "a457c2d7": "decreaseAllowance", + "7fb5297f": "startBroadcast", + "9ff531e3": "assertLt", + "127cfe9a": "parseTomlBoolArray", + "2b805192": "setNewVersionUpgrade", + "d241f618": "genesisUpgrade", + "a3bd0112": "genesisUpgrade", + "39b34c6e": "requestBytecodeL1Publication", + "3f33db60": "serializeInt", + "d3977322": "assertNotEq", + "bdfacbe8": "assertNotEq", + "8bb75533": "split", + "7ed1ec7d": "envBool", + "d2ef1b0e": "storedBatchZero", + "edecd035": "assertNotEq", + "7ebba672": "setTokenMultiplier", + "9d2ad72a": "rpcUrlStructs", + "a6f2c076": "setDataToBeReturnedInFinalizeWithdrawal", + "f8f7cd76": "validateTransaction", + "4777f3cf": "envOr", + "505e6d47": "updateAllLeaves", + "8eb7db57": "bridgehubConfirmL2Transaction", + "2f2769d1": "assertEq", + "548a5a33": "setAssetHandlerAddressThisChain", + "8c2a993e": "bridgeMint", + "3e9705c0": "startMappingRecording", + "d1a5b36f": "pauseGasMetering", + "84d52b7a": "createSelectFork", + "6dde7209": "l2TokenBeacon", + "dead6f7f": "getHyperchain", + "bbcb713e": "envOr", + "c0a16dda": "setAssetDeploymentTracker", + "ca65fe79": "finalizeDeposit", + "579952fc": "transferFromTo", + "805b5b74": "tokenIsRegistered", + "709ecd3f": "dumpState", + "c657c718": "label", + "fb4baf17": "changeFeeParams", + "e8295588": "zeros", + "85940ef1": "parseJson", + "213e4198": "parseJsonKeys", + "3f8be2c8": "toBase64", + "16d207c6": "assertApproxEqAbs", + "f26f3c8f": "proveL2MessageInclusion", + "b88d4fde": "safeTransferFrom", + "1e4fba05": "getChainRoot", + "facd743b": "isValidator", + "2c4f2a58": "bridgehubDepositBaseToken", + "82d6c8fd": "assertApproxEqRelDecimal", + "85df51fd": "blockHash", + "897e0a97": "writeFile", + "263b7f8e": "proveL2LogInclusion", + "ab93d6f3": "requestL2TransactionToGatewayMailbox", + "f5ba4232": "removeStateTransitionManager", + "f85894c5": "forwardedBridgeBurn", + "584b153e": "isOperationPending", + "95570d12": "getValidatorCommittee", + "70ca10bb": "store", + "aaaddeaf": "envBool", + "d0707b67": "aggregate", + "ec3d5f88": "setPriorityTxMaxGasLimit", + "8456cb59": "pause", + "6cd8c355": "reinitializeChainGovernance", + "48f50c0f": "txGasPrice", + "d930a0e6": "projectRoot", + "628b636e": "publishPubdataAndClearState", + "b5a85e9d": "forceDeploy", + "6a82600a": "parseJson", + "a85a8418": "rpcUrls", "e5355c75": "getL2SystemContractsUpgradeBatchNumber", - "ca408c23": "bridgehubDeposit", - "6ab8f82e": "proveL2LogInclusion", - "7528c2c6": "applyL1ToL2Alias", - "59890bcb": "setExecutedBatches", + "9cb1c0d4": "prevrandao", + "6a8237b3": "assertNotEq", + "26782247": "pendingAdmin", + "66869d49": "changeFeeParams", + "762008c2": "executeBatchesSharedBridge", + "426cb766": "attestersCommit", + "88da6d35": "serializeString", + "1e356e1a": "serializeAddress", + "8a0807b7": "indexOf", + "566338a9": "getL1TokenAddress", + "2555d2c1": "chunkAndPublishPubdata", + "e2f318e3": "payForTransaction", + "72d74cd7": "reinitializeToken", + "3997d064": "tryAggregate", + "57180981": "updateAccountVersion", + "f28dceb3": "expectRevert", + "db1f0bf9": "getTotalBatchesCommitted", + "51b3c157": "hyperbridgingEnabled", + "4be99e1d": "getCurrentPubdataCost", + "e34a329a": "executeUpgrade", + "546b6d2a": "SHARED_BRIDGE", + "7ab08472": "finalizeWithdrawalLegacyErc20Bridge", + "6a27e8b5": "getSettlementLayer", + "17338945": "unfreezeDiamond", + "df9c1589": "executeTransaction", + "99c16d1a": "proveL2MessageInclusion", + "98acd7a6": "getBaseToken", + "f4c004e3": "assertNotEq", + "a54a87d8": "copyFile", + "c1fa1ed0": "assertEq", + "47b4a7a6": "changeAttesterWeight", + "be646da1": "transact", + "d1132332": "attesterPubKeyHashes", + "30e5ccbd": "incrementTxNumberInBatch", + "7958004c": "getOperationState", + "045c55ce": "assertApproxEqAbsDecimal", + "56079ac8": "sendL2ToL1Log", + "d86970d8": "getL2BootloaderBytecodeHash", + "e8a71ca9": "forwardedBridgeMint", + "9a42c2c2": "zeroPointerTest", + "06fdde03": "name", + "086a56f8": "getBaseTokenBridge", + "18b1771f": "getAssetId", + "306395c6": "incrementDeploymentNonce", + "63dc94b1": "forceDeploy", + "1c9f0149": "updateChainBalancesFromSharedBridge", + "3591c1a0": "getBridgehub", + "d6abe642": "getAssetId", + "95fd154e": "assertLe", + "72425d9d": "getCurrentBlockDifficulty", "b19f0ade": "executeUpgradeNoOverlap", - "15f9a2fe": "prepareForPaymaster", - "6e9d7899": "legacyBridge", - "ef0e2ff4": "setChainId", - "e52db4ca": "baseTokenAssetId", - "0f28c97d": "getCurrentBlockTimestamp", + "44d7f0a4": "revertTo", + "51cff8d9": "withdraw", + "817b17f0": "postTransaction", + "33949f0b": "assertNotEqDecimal", + "83eddd19": "governanceAcceptOwner", + "301e7765": "getChainAdmin", + "a8b0574e": "getCurrentBlockCoinbase", + "52c9eacb": "upgradeCutHash", + "9c4d535b": "create", + "e8de12df": "validatorsCommit", + "b11a19e8": "toString", + "6d9860e1": "l1AssetRouter", + "9ec3f927": "changeValidatorWeight", + "9507540e": "assertNotEq", + "c0865ba7": "writeToml", + "e81e0ba1": "isFunctionFreezable", + "49c4fac8": "parseJsonString", + "0b72f4ef": "assertNotEq", + "235d9eb5": "setTokenMultiplier", + "c3d93e7c": "executeBatches", + "4af63f02": "deploy", + "a0ed82fa": "governanceAcceptAdmin", + "60144197": "setTokenMultiplierSetter", + "7ba8be34": "decodeUint8", + "f5a55558": "assertNotEqDecimal", + "6631aa99": "parseJsonBytesArray", + "b2332f51": "assertNotEq", + "08e4e116": "expectCallMinGas", "d0e30db0": "deposit", - "9623609d": "upgradeAndCall", - "5ca1e165": "getRoot", - "fe173b97": "gasPrice", - "a851ae78": "setTxOrigin", - "18717dc1": "setPorterAvailability", - "cbcf2e3c": "isTransactionAllowed", + "fd791f3c": "getL2DefaultAccountBytecodeHash", + "b197c247": "parseTomlBytesArray", + "3e716f81": "parseTomlBytes32Array", + "74f4d30d": "storedBlockHash", + "2a72b707": "bridgehubRequestL2Transaction", + "7e44bc5e": "setImmutables", + "927c4bf7": "upgradeExternal", + "440ed10d": "expectEmit", + "b7b080ab": "transferTokenToSharedBridge", + "db541184": "setShouldRevertOnExecuteBatches", + "eff6b27d": "assertEq", + "fdbb0301": "__DEPRECATED_l2BridgeAddress", + "b873634c": "assertNotEq", + "7a675bb6": "createWallet", + "399542e9": "tryBlockAndAggregate", + "81bad6f3": "expectEmit", + "ae1f6aaf": "l2Bridge", + "46cc92d9": "difficulty", + "498fdcf4": "parseJsonStringArray", + "d3522ae6": "parseTomlIntArray", + "ae5a2ae8": "serializeUintToHex", + "23dc4a09": "keccakPerformUpgrade", + "07f8c636": "multicall", + "1dd93b33": "keccakValidationTest", + "fd3c6b55": "processCalldataDA", + "e6d9923b": "proveL2LogInclusion", + "c3077fa9": "blockAndAggregate", + "c6ce059d": "parseAddress", + "cf347e17": "setValidator", + "b22dd78e": "storedBatchHash", + "f21d52c7": "serializeBytes", + "975d5a12": "assertEq", + "7ac3a553": "withdrawLegacyBridge", "c4d66de8": "initialize", - "7c9bd1f3": "publishTimestampDataToL1", - "69c76df2": "readUint32", - "a75b496d": "getAllHyperchainChainIDs", - "f5ba4232": "removeStateTransitionManager", - "42cbb15c": "getBlockNumber", - "607e2cb2": "setRevertReceive", - "328ef4fe": "setBaseTokenGasMultiplierPrice", - "1c50cfea": "addTokenAssetId", - "6d1d8363": "scheduleShadow", - "9cc7f708": "balanceOf", - "933999fb": "deposit", - "c2e047ff": "aggregate3", - "bb7044b6": "stateTransitionManagerIsRegistered", - "d4ce08c2": "addNewChain", - "f34d1868": "setExecutionDelay", - "9caf9bac": "setX", + "d77bfdb9": "parseTomlBytes", + "7b315630": "upgradeChainFromVersion", + "168b64d3": "createDir", + "cdffacc6": "facetAddress", + "e0ab6368": "assetIdIsRegistered", + "e25242c0": "assertGe", + "d566afd3": "createBatchCommitment", + "afc98040": "broadcast", + "cc7b0487": "parseTomlUint", + "3fdf4e15": "clearMockedCalls", + "ee82ac5e": "getBlockHash", + "79c4f929": "markBytecodeAsPublished", + "e5d6bf02": "warp", + "03e0aca9": "revertToAndDelete", + "d83e4e03": "genesisUpgrade", + "4a2e35ba": "withdraw", + "ba238947": "getProtocolVersion", + "88b44c85": "assertEq", + "fee9a469": "serializeUint", + "09e14277": "setStateTransitionManager", + "c63c4e9b": "minDelay", + "95218ecd": "executeInstant", + "abbf21cc": "assertApproxEqRelDecimal", + "addde2b6": "parseJsonUint", + "a1a7cddb": "runDeploySharedBridge", + "3644e515": "DOMAIN_SEPARATOR", + "6a5066d4": "assertApproxEqAbsDecimal", + "6edd4f12": "commitBatchesSharedBridge", + "78611f0e": "assertGtDecimal", "f113c88b": "createNewChain", - "1cc5d103": "setPorterAvailability", - "cdf25430": "L1_ASSET_ROUTER", - "def9d6af": "protocolVersionIsActive", - "c21a38e2": "proveL2MessageInclusion", - "e543e5bf": "setChainCreationParams", - "4be99e1d": "getCurrentPubdataCost", - "74f4d30d": "storedBlockHash", - "f8f7cd76": "validateTransaction", - "7a0ed627": "facets", - "38a78092": "increaseMinNonce", - "8cb7f3d0": "forceDeployOnAddresses", - "a2d5a0cc": "proveBatchesSharedBridge", - "301e7765": "getChainAdmin", - "fb644fc5": "addChainBatchRoot", + "f3dec099": "envUint", + "4700d74b": "envOr", + "ed7c5462": "createWallet", + "7676e127": "serializeInt", + "b6ea1757": "pushNewLeaf", + "b2ded522": "initialize", + "b298e36b": "push", + "c987336c": "upgrade", + "3cda3351": "create2", + "dd85df2d": "setEraLegacyBridgeLastDepositTime", + "32c8176d": "deriveKey", + "e9420f8c": "whitelistedSettlementLayers", + "e24fed00": "assertEq", + "d323826a": "computeCreate2Address", "6006d8b5": "verifyCompressedStateDiffs", - "39509351": "increaseAllowance", - "51cff8d9": "withdraw", - "8ffe1b81": "setBridgeHubAddress", - "95ce3e93": "decodeString", - "09824a80": "registerToken", - "d86970d8": "getL2BootloaderBytecodeHash", - "a31ee5b0": "initialize", - "0d4651aa": "storeAccountConstructedCodeHash", - "9a188371": "requestL2TransactionDirect", - "ed1d7d97": "chainIndexToId", - "c63c4e9b": "minDelay", - "546b6d2a": "SHARED_BRIDGE", - "187598a5": "getNewAddressCreate", - "bf529569": "setFreezability", + "1e279d41": "promptSecret", + "0d14edf7": "registerAlreadyDeployedHyperchain", + "5d382700": "create2Account", + "38720778": "sharedBridge", + "4d2301cc": "getEthBalance", + "11d1364a": "assertLeDecimal", + "1ff5a783": "execute", + "5c975abb": "paused", + "cf22e3c9": "startStateDiffRecording", + "64bc3e64": "envOr", + "55d35d18": "getValueUnderNonce", + "592151f0": "parseToml", + "8fbb3711": "claimFailedDepositLegacyErc20Bridge", + "53e61bdc": "processL2RollupDAValidatorOutputHash", + "41cf49bb": "prepareChainCommitment", + "86d516e8": "getCurrentBlockGasLimit", "cfe7af7c": "finalizeDeposit", - "bcf284e5": "executeTransaction", - "3437949a": "l1GenesisUpgrade", - "f54266a2": "l1TokenAddress", + "3ce695e7": "registerSTMAssetOnL1", + "b71bcf90": "reinitializeToken", + "db07fcd2": "assertGt", + "969b53da": "l1Bridge", + "e717bab7": "proveL1ToL2TransactionStatusViaGateway", + "1f067457": "revertTransfer", + "eb85e83b": "envOr", + "19cae462": "difficulty", + "7a1d8d3a": "safeTransferFundsFromLegacy", + "619d897f": "writeLine", + "5518c73b": "getStateTransitionManager", + "ca8f93f1": "setLegacyBaseTokenAssetId", + "eced0bf0": "__DEPRECATED_tokenIsRegistered", + "51d218f7": "unfreezeChain", + "4c6314f0": "getMarker", + "b760faf9": "depositTo", + "a1954fc5": "getTotalPriorityTxs", + "f120e6c4": "encodeTxDataHash", + "a2d5a0cc": "proveBatchesSharedBridge", + "8cf25ef4": "assertApproxEqRel", + "b8776d4d": "chainRegistered", + "7528c2c6": "applyL1ToL2Alias", + "91c75bc3": "parseJsonBytes32Array", + "22100064": "rememberKey", + "46657fe9": "getVerifier", + "e8b99b1b": "deposit", + "f1a78aa6": "postTransaction", + "a888cc3a": "bridgehubRequestL2TransactionOnGateway", + "2bcd50e0": "resumeGasMetering", + "4db19e7e": "assertEq", + "af6ed122": "executeUpgrade", + "47e50cce": "prank", + "03c5d8af": "forwardTransactionOnGateway", + "d23cd037": "mockCallRevert", + "16ed7bc4": "readFileBinary", + "28e439f3": "tryBlockAndAggregate", + "ced531eb": "setHashes", + "038a24bc": "validateAndPayForPaymasterTransaction", + "4cc5b15e": "diamondCut", + "27e86d6e": "getLastBlockHash", + "ae3165b3": "toBase64URL", + "ce817d47": "startBroadcast", + "823f1d96": "l2TokenProxyBytecodeHash", + "4b561753": "addValidator", + "d9bbf3a1": "rollFork", + "6fadcf72": "forward", + "bd6af434": "expectCall", + "4dd18bf5": "setPendingAdmin", + "84c2ff75": "stmAssetId", + "681fe70c": "isEmpty", + "fe26699e": "getTotalBlocksCommitted", + "a75b496d": "getAllHyperchainChainIDs", + "35d6ad46": "writeJson", + "40c10f19": "mint", + "06e7517b": "appendTransactionToCurrentL2Block", + "b852ad36": "l1SharedBridge", + "3ea053eb": "deactivate", + "e02da327": "readUint256", + "3ebf73b4": "getDeployedCode", + "86b7f856": "publishPubdataAndClearState", + "4145ca27": "removePriorityQueueFront", + "ef0e2ff4": "setChainId", + "68c09202": "executeUpgradeNoOverlap", + "402efc91": "stateTransitionManager", "c9d1c097": "stmAssetIdFromChainId", - "39d7d4aa": "getPriorityTreeRoot", - "41c841c3": "L1_WETH_TOKEN", - "19fa7f62": "claimFailedDeposit", - "5c60da1b": "implementation", - "dd62ed3e": "allowance", - "9cd45184": "chainBalance", - "7958004c": "getOperationState", - "8cf2b2f0": "uncheckedInc", - "715018a6": "renounceOwnership", - "30bda03e": "setL1Erc20Bridge", + "315fff4e": "THIS_ADDRESS", + "3558c188": "executeBatches", "c0d5b949": "getCurrentPubdataSpent", - "4de2e468": "getRawCodeHash", - "7ecebe00": "nonces", - "0e18b681": "acceptAdmin", - "d0468156": "getPendingAdmin", - "d83e4e03": "genesisUpgrade", - "49eb3b50": "getTransactionHashes", - "ebf0c717": "root", - "8da5cb5b": "owner", - "11a2ccc1": "finalizeWithdrawal", - "1dd93b33": "keccakValidationTest", - "f088ccdc": "callCodeOracle", - "aad74262": "setProtocolVersionDeadline", - "72c84445": "callKeccak", - "21f603d7": "setTransactionFilterer", - "52ef6b2c": "facetAddresses", - "9e6ea417": "depositLegacyErc20Bridge", + "3d5923ee": "setEnv", + "57e22dde": "makePersistent", + "2b589b28": "lastCallGas", + "896909dc": "getMinNonce", + "dbaad147": "mockCallRevert", + "3437949a": "l1GenesisUpgrade", + "c4d252f5": "cancel", + "dd82d13e": "skip", "960dcf24": "getBaseTokenAssetId", - "a888cc3a": "bridgehubRequestL2TransactionOnGateway", - "c7ca373c": "initFromCommitment", - "548a5a33": "setAssetHandlerAddressThisChain", - "402efc91": "stateTransitionManager", - "7b30c8da": "getL2SystemContractsUpgradeTxHash", - "0ef26743": "height", - "79ba5097": "acceptOwnership", - "584b153e": "isOperationPending", - "06fdde03": "name", - "e717bab7": "proveL1ToL2TransactionStatusViaGateway", - "a8b0574e": "getCurrentBlockCoinbase", - "30e5ccbd": "incrementTxNumberInBatch", - "ef011dff": "ERA_CHAIN_ID", - "f8c1f0d2": "upgradeChainFromVersion", + "1777e59d": "parseJsonBytes32", + "2e522851": "setNewVersionUpgrade", + "d4ce08c2": "addNewChain", + "c74e9deb": "envOr", + "f320d963": "assertEq", + "a5277a02": "initialize", + "9366518b": "createNewChain", + "7e77b0c5": "assertEqDecimal", + "29233b1f": "deriveKey", + "dc28c0f1": "assertGeDecimal", + "975a6ce9": "rpcUrl", + "65e7c844": "parseTomlAddress", + "e13a1834": "expectCallMinGas", + "4d7baf06": "envBytes", + "5c60da1b": "implementation", + "0f3fa211": "setNativeTokenVault", + "46746c7d": "commitBatchesSharedBridge", + "cbcf2e3c": "isTransactionAllowed", + "bcf284e5": "executeTransaction", + "a8d4d1d9": "assertGe", + "7a28adb2": "proveL2LogInclusion", + "972c6062": "serializeAddress", + "b4866c43": "setFeeParams", + "08dc3360": "validatorPubKeyHashes", + "e66c8c44": "validatorTimelock", + "d74c83a4": "rollFork", + "2ab0f529": "isOperationDone", + "187598a5": "getNewAddressCreate", "f3b7dead": "getProxyAdmin", - "f26f3c8f": "proveL2MessageInclusion", - "3558c188": "executeBatches", - "bcd1b23d": "updateFullTree", + "952a3ee7": "getERC20Getters", + "0f23da43": "revertBatchesSharedBridge", + "87d9d023": "verify", + "0ec6b0b7": "getPriorityTxMaxGasLimit", + "b25c5a25": "sign", + "3408e470": "getChainId", + "707df785": "assertEq", + "7a0ed627": "facets", + "85e4e16a": "assetDeploymentTracker", + "d0f2c663": "getBatchNumberAndTimestamp", + "01d23d4b": "diamondCut", "3a3f36f9": "codeOracleTest", - "1de72e34": "baseTokenGasPriceMultiplierDenominator", + "42842e0e": "safeTransferFrom", + "28a249b0": "getLabel", + "625387dc": "unixTime", + "997a0222": "revokePersistent", + "6478d8ed": "chainAdmin", + "823447c8": "setResult", + "47eaf474": "prompt", + "d4b9f4fa": "messageRoot", + "e76db865": "setPubdataPricingMode", + "f8e18b57": "setNonce", + "d4a4ca0d": "getBlockNumberAndTimestamp", + "6bcb2c1b": "deriveKey", + "89f9a072": "validatePubdata", + "6a0cd1f5": "removeValidator", + "fe173b97": "gasPrice", + "2fce7883": "parseJsonAddressArray", + "1f98fa08": "createNewChain", + "796b89b9": "getBlockTimestamp", + "9cd45184": "chainBalance", + "363bf964": "setAddresses", + "8e8acf87": "getL2BlockNumberAndTimestamp", + "191553a4": "getRecordedLogs", + "7b510fe8": "getAccountInfo", + "9caf9bac": "setX", + "fe74f05b": "assertEq", + "e00ad03e": "replace", + "97624631": "assertEq", + "6e9d7899": "legacyBridge", + "5e97348f": "envOr", + "7ba04809": "assertFalse", + "fc57565f": "upgradeChainFromVersion", + "3635f3e6": "resetTxNumberInBatch", + "522074ab": "parseJsonUintArray", + "97c09d34": "revertBatches", + "c87325f1": "finalizeWithdrawal", + "64af255d": "isContext", + "5af231c1": "envBytes32", + "b96213e4": "mockCall", + "f877cb19": "envString", + "6900a3ae": "toString", + "e52db4ca": "baseTokenAssetId", + "60429eb2": "assertApproxEqAbsDecimal", + "1dcd1f68": "assertNotEq", + "73c58a2d": "publishBlobs", + "7f61885c": "proveBatches", + "7ecebe00": "nonces", + "26e4ae25": "initialize", + "bb7044b6": "stateTransitionManagerIsRegistered", + "91b19874": "validators", + "c1adbbff": "expectCall", + "06bed036": "setL2Block", + "02fa5779": "setNewBatch", + "0f29772b": "rollFork", + "4f1e1be0": "storeAccountConstructingCodeHash", + "7c9bd1f3": "publishTimestampDataToL1", + "a3912ec8": "receiveEther", "81d100a3": "scheduleTransparent", - "85e4e16a": "assetDeploymentTracker", - "204e1c7a": "getProxyImplementation", - "d566afd3": "createBatchCommitment", - "70f5c679": "setMessageRoot", - "07168226": "deployBeaconProxy", - "7b574586": "publishedBlobCommitments", - "fcc73360": "updateLeaf", - "631f4bac": "getPriorityQueueSize", - "3e64a696": "getBasefee", - "facd743b": "isValidator", - "7fb67816": "setValidatorTimelock", - "ee82ac5e": "getBlockHash", - "6e9960c3": "getAdmin", - "98acd7a6": "getBaseToken", - "06e7517b": "appendTransactionToCurrentL2Block", - "b993549e": "getCommittedBatchTimestamp", - "23dc4a09": "keccakPerformUpgrade", - "cf347e17": "setValidator", - "3408e470": "getChainId", - "ae1f6aaf": "l2Bridge", - "c2e90293": "bridgeRecoverFailedTransfer", - "86b7f856": "publishPubdataAndClearState", - "b292f5f1": "proveL1ToL2TransactionStatus", - "7a592065": "calculateRoot", - "a5277a02": "initialize", - "ef939455": "keccakUpgradeTest", - "3644e515": "DOMAIN_SEPARATOR", - "306395c6": "incrementDeploymentNonce", + "2ae9c600": "protocolVersion", + "ed1d7d97": "chainIndexToId", + "c4bc59e0": "readDir", "b277f199": "uncheckedAdd", - "6fadcf72": "forward", - "ae65def1": "node", - "e0bf0850": "setShouldRevertOnProveBatches", - "a457c2d7": "decreaseAllowance", - "9f3f89dc": "getZero", - "4dd18bf5": "setPendingAdmin", - "33ce93fe": "getProtocolVersion", - "c87325f1": "finalizeWithdrawal", - "40a434d5": "transferTokenToNTV", - "e9420f8c": "whitelistedSettlementLayers", - "3f704d2a": "setAssetHandlerAddress", - "ede25608": "protocolVersionToUpgradeTimestamp", - "042901c7": "proveL1ToL2TransactionStatus", + "a5982885": "assertFalse", + "98680034": "createSelectFork", + "aa5cf90e": "stopAndReturnStateDiff", + "3b925549": "prevrandao", + "fcc73360": "updateLeaf", "cab7e8eb": "isNonceUsed", - "5aa6fa1f": "NATIVE_TOKEN_VAULT", - "b8776d4d": "chainRegistered", - "8fbb3711": "claimFailedDepositLegacyErc20Bridge", - "8dd14802": "setBridge", + "7404f1d2": "createWallet", + "7321c485": "dummySetValidator", + "501e60d5": "setUpgradeDiamondCut", + "fa9d8713": "sleep", + "310ab089": "getImmutable", + "2e1a7d4d": "withdraw", + "2986c0e5": "index", + "2f745c59": "tokenOfOwnerByIndex", + "52d1902d": "proxiableUUID", + "898e83fc": "assertNotEq", + "4f6ccce7": "tokenByIndex", + "8e214810": "parseTomlBytes32", + "15f9a2fe": "prepareForPaymaster", + "91f3b94f": "parseJsonBoolArray", + "be65940a": "setEraPostLegacyBridgeUpgradeFirstBatch", + "40a434d5": "transferTokenToNTV", + "ef011dff": "ERA_CHAIN_ID", + "c2aaf9c4": "receiveEth", + "84b0196e": "eip712Domain", + "074ae3d7": "toUppercase", + "313ce567": "decimals", + "a9f6d941": "executeUpgrade", + "d0cbbdef": "assertEqDecimal", + "4049ddd2": "chainId", + "8466d8d1": "getBridgeHubAddress", + "bcd1b23d": "updateFullTree", + "fccc11c4": "assertApproxEqRelDecimal", + "f34d1868": "setExecutionDelay", + "892a0c61": "envInt", + "41af2f52": "recordLogs", + "b4a85892": "envOr", + "ad7e232e": "setImmutables", + "74f4f547": "bridgeBurn", + "f5407abe": "setValues", + "b1fde1a8": "sharedTree", + "a972d037": "assertLtDecimal", + "a225efcb": "setPubdataInfo", + "b0f40a17": "processBatch", + "d1ba7e97": "hyperchainAddress", + "4dfe692c": "assertLe", + "7fb67816": "setValidatorTimelock", + "36f656d8": "assertEq", + "890c283b": "computeCreate2Address", + "83211b40": "signP256", + "98461504": "setUpgradeDiamondCut", + "18876a04": "chunkPubdataToBlobs", + "f30c7ba3": "expectCall", + "eb672419": "requestL2Transaction", + "7069d0c0": "executeInstant", + "6229498b": "deriveKey", + "1ecb7d33": "assertApproxEqRel", + "bf1fe420": "setGasPrice", + "72c84445": "callKeccak", + "1c72346d": "resetNonce", + "4cd88b76": "initialize", + "8c374c65": "ensNamehash", + "b12e1694": "assertNotEq", + "e5fb9b4a": "assertEq", + "bf54096e": "MAX_NUMBER_OF_HYPERCHAINS", + "24a55db9": "markBytecodeAsPublished", + "fa91454d": "parseUint", + "62ee05f4": "promptAddress", "b3160bad": "executeBatchesSharedBridge", + "08284e57": "upgrade", + "48ceb85e": "chainIndex", + "70f55728": "readLine", + "e4441b98": "initialize", + "65d5c135": "assertLt", + "8bff9133": "assertGeDecimal", + "191f1b30": "assertEq", + "ff483c54": "coinbase", + "3f704d2a": "setAssetHandlerAddress", + "c0991525": "claimFailedDeposit", + "86b9620d": "expectEmit", + "9cc7f708": "balanceOf", + "56f29cba": "assertNotEq", + "eb39e6d5": "stateTransitionManager", + "9cc395d0": "bridgeCheckCounterpartAddress", + "51ac6a33": "writeToml", + "0f28c97d": "getCurrentBlockTimestamp", + "99a88ec4": "upgrade", + "beda594a": "setHyperchain", + "60f78733": "chainSetTokenMultiplierSetter", + "9e8945d2": "verificationKeyHash", + "61f91b2e": "initialForceDeploymentHash", + "fa8f7ea6": "getAllHyperchains", + "205c2878": "withdrawTo", + "36ba0355": "bridgeMint", + "4c63e562": "assume", + "62f84b24": "sendToL1", + "1f6d6ef7": "getBlobBaseFee", + "b5b18fe5": "processL2Logs", + "9e6ea417": "depositLegacyErc20Bridge", + "c8bd0e4a": "toBase64URL", + "2281f367": "envOr", + "75fe6a99": "pushBack", + "ecf95b8a": "createAccount", + "ebf0c717": "root", + "81409b91": "mockCall", + "715018a6": "renounceOwnership", + "56142d7a": "priorityQueueFrontOperation", "f5c1182c": "getSemverProtocolVersion", + "13bc9f20": "isOperationReady", + "a9b0d128": "setPriorityTreeStartIndex", + "95ce3e93": "decodeString", + "042901c7": "proveL1ToL2TransactionStatus", + "f7fe3477": "assertEq", + "98296c54": "assertEq", + "ac22e971": "serializeBool", + "92925aa1": "serializeBool", + "3868ac34": "assertEq", + "74044673": "addStateTransitionManager", + "1e19e657": "parseJsonAddress", + "9b3358b0": "serializeJson", + "671a7131": "settlementLayer", + "ddeaa8e6": "getBatchHash", + "7da01cd6": "executeUpgrade", + "0c9fd581": "assertTrue", + "39d7d4aa": "getPriorityTreeRoot", + "53b9e632": "assetHandlerAddress", + "9884b232": "serializeBytes", + "8d1cc925": "getCode", + "23361207": "expectCall", + "77421056": "setFunctionToCall", + "af368a08": "fsMetadata", + "689992b3": "undoL1ToL2Alias", + "5a590335": "getDAValidatorPair", + "19fa7f62": "claimFailedDeposit", + "2a79c611": "getCommitment", + "202bcce7": "validateTransaction", + "155fd27a": "setValueUnderNonce", + "bb0fd610": "extendedAccountVersion", + "46d0b252": "assertNotEq", + "f5f15168": "l2TokenAddress", + "fb644fc5": "addChainBatchRoot", + "3a9d7f8d": "stmDeployer", "8b257989": "executionDelay", - "588570a5": "initialize", + "3e914080": "assertLt", + "c2eeeebd": "l1Address", + "71ee464d": "createSelectFork", + "a34edc03": "assertTrue", + "8bb8dd43": "parseTomlString", + "236e4d66": "assertNotEq", + "64e130cf": "nativeTokenVault", + "aad74262": "setProtocolVersionDeadline", + "9711715a": "snapshot", + "64949a8d": "assertGtDecimal", + "4d4a1eca": "setTokenMultiplier", + "79ba5097": "acceptOwnership", + "e2a9d554": "setUpgradeTimestamp", + "27eb6c0f": "securityCouncil", + "45b56078": "startPrank", + "652fd489": "promptUint", + "4623c91d": "setValidator", + "82b57749": "forwardedBridgeMint", + "f1afe04d": "removeFile", + "8ffe1b81": "setBridgeHubAddress", + "accdd16c": "freezeChain", + "12f43dab": "bridgehubRequestL2Transaction", + "c9f5c932": "requestL2TransactionTwoBridges", + "98f9bdbd": "assertNotEq", + "42346c5e": "parseInt", + "9b67b21c": "setNonceUnsafe", + "9f629281": "parseTomlStringArray", + "3659cfe6": "upgradeTo", + "631f4bac": "getPriorityQueueSize", + "bce38bd7": "tryAggregate", + "fea2d14f": "assertApproxEqRel", + "2d812b44": "serializeBytes32", + "94ca304b": "numNodes", + "799cd333": "sign", + "c2e90293": "bridgeRecoverFailedTransfer", + "69340beb": "multicall", + "70a08231": "balanceOf", "4cd40a02": "setLegacyTokenAssetId", - "d124dc4f": "send", - "23b872dd": "transferFrom", - "086a56f8": "getBaseTokenBridge", - "689992b3": "undoL1ToL2Alias", - "03c5d8af": "forwardTransactionOnGateway", - "48ceb85e": "chainIndex", - "ba334825": "hyperchain", - "b1fde1a8": "sharedTree", - "7069d0c0": "executeInstant", - "c2aaf9c4": "receiveEth", - "2986c0e5": "index", - "b5872958": "timestamps", - "c2e4ff97": "markAccountCodeHashAsConstructed", - "9c4d535b": "create", - "923b3b56": "forceDeployOnAddress", - "3635f3e6": "resetTxNumberInBatch", - "19698bc9": "infiniteFunction", - "315fff4e": "THIS_ADDRESS", - "52c9eacb": "upgradeCutHash", - "18e3a941": "getVerifierParams", - "29f172ad": "unsafeOverrideBatch", - "4b561753": "addValidator", - "a9059cbb": "transfer", - "949431dc": "approvalBased", + "4bed8212": "isWithdrawalFinalized", + "84da1fb4": "getNewAddressCreate2", + "ffa18649": "addr", + "9f3f89dc": "getZero", + "081812fc": "getApproved", + "6ef25c3a": "baseFee", + "29092d0e": "remove", + "201e43e2": "serializeBytes32", + "74318528": "envOr", + "ec8067c7": "updateNonceOrdering", + "841a9d42": "aggregate3Value", + "b5df27c8": "parseTomlUintArray", + "f1d357e5": "L1_SHARED_BRIDGE", + "1de72e34": "baseTokenGasPriceMultiplierDenominator", + "a5cbfe65": "toBase64", + "528a683c": "keyExists", + "71abd109": "upgrade", + "381c3f13": "checkDA", + "0ef26743": "height", + "7fefbbe0": "assertLeDecimal", + "ef939455": "keccakUpgradeTest", + "1806aa18": "getCodeSize", + "f4943a20": "protocolVersionDeadline", + "de8fa431": "getSize", + "a851ae78": "setTxOrigin", + "f45c1ce7": "tryFfi", + "39b37ab0": "fee", + "261a323e": "exists", + "7cb9357e": "gasPerPubdataByte", "8f283970": "changeAdmin", - "85df51fd": "blockHash", - "dead6f7f": "getHyperchain", - "896909dc": "getMinNonce", - "7eff275e": "changeProxyAdmin", - "27ae4c16": "freezeDiamond", - "566338a9": "getL1TokenAddress", + "266cf109": "record", + "7efda2ae": "proveL2LeafInclusion", + "246a61de": "ERA_DIAMOND_PROXY", + "b4d6c782": "etch", + "c05afaa6": "initializeDevBridge", + "52ef6b2c": "facetAddresses", + "8c1aa205": "sign", + "129e9002": "serializeUint", + "d52471c1": "requestL2TransactionDirect", + "c2e047ff": "aggregate3", + "e48a8f8d": "assertEq", + "027f12e1": "changeFeeParams", + "095ea7b3": "approve", + "8f31f052": "isWithdrawalFinalized", + "7a592065": "calculateRoot", + "1c5a9d9c": "activate", + "dd354a06": "calculateCreate2TokenAddress", + "9d1b5a81": "getL2SystemContractsUpgradeBlockNumber", + "fb1a9a57": "getDeploymentNonce", + "6d1d8363": "scheduleShadow", + "42cbb15c": "getBlockNumber", + "18160ddd": "totalSupply", + "c1350739": "parseTomlInt", + "859216bc": "envOr", + "d92f86a2": "setLegacyChainAddress", + "f280efbe": "initializeChainGovernance", + "6e9960c3": "getAdmin", + "af6a2dcd": "getTotalBlocksVerified", + "50bb0884": "toLowercase", + "9623609d": "upgradeAndCall", "8ac84c0e": "txNumberInBlock", - "53ce2061": "revertBatches", - "9a8a0592": "chainId", - "f5407abe": "setValues", - "46657fe9": "getVerifier", - "484f0505": "getHyperchainLegacy", - "b760faf9": "depositTo", - "5de097b1": "nullifyChainBalanceByNTV", - "e8295588": "zeros", - "f90eb963": "getPorterAvailability", - "57180981": "updateAccountVersion", - "579952fc": "transferFromTo", - "d505accf": "permit", - "e02da327": "readUint256", - "51d218f7": "unfreezeChain", - "8466d8d1": "getBridgeHubAddress", - "b381724e": "setFeeParams", - "d9caed12": "withdraw", - "9d1b5a81": "getL2SystemContractsUpgradeBlockNumber" + "9fa8826b": "depositHappened", + "b5872958": "timestamps", + "49eb3b50": "getTransactionHashes", + "6c0960f9": "finalizeEthWithdrawal", + "c1978d1f": "envUint", + "c4879440": "bridgehubDepositBaseToken", + "0603ea68": "assertNotEq", + "c924de35": "transferEthToSharedBridge", + "f8c1f0d2": "upgradeChainFromVersion", + "7d15d019": "isDir", + "ea060291": "allowCheatcodes", + "82ad56cb": "aggregate3", + "805b9869": "executeTransactionFromOutside", + "1624f6c6": "initialize", + "daa51a8c": "pushBack", + "286fafea": "assertNotEq", + "5df93c9b": "assertGeDecimal", + "974ef924": "parseBool" } \ No newline at end of file