# Kroma Markdown version of https://l2beat.com/layer2s/projects/kroma ## Summary **Warning:** This project is archived and no longer maintained. **Warning:** Kroma shut down on June 30, 2025. After this date, funds retrieval is not guaranteed. See [announcement](https://x.com/kroma_network/status/1936692354603520198) for details. - Type: Other - Purpose: Universal - Host chain: Ethereum - Chain ID: 255 ### Risks - Sequencer failure: Self sequence (sentiment: good) - State validation: Fraud proofs (INT, ZK) (sentiment: bad) - Data availability: Onchain (sentiment: good) - Exit window: None (sentiment: bad) - Proposer failure: Self propose (sentiment: good) ### About Kroma aims to develop a universal ZK Rollup based on the Optimism Bedrock architecture. Currently, Kroma operates as an Optimistic Rollup with ZK fault proofs, utilizing a zkEVM based on Scroll and a zkVM based on SP1. ## Activity Shown as an interactive chart or widget on [the HTML page](https://l2beat.com/layer2s/projects/kroma#activity). - [Activity chart (JSON)](https://l2beat.com/api/scaling/activity/kroma) ## Onchain costs Shown as an interactive chart or widget on [the HTML page](https://l2beat.com/layer2s/projects/kroma#onchain-costs). ## Data posted Shown as an interactive chart or widget on [the HTML page](https://l2beat.com/layer2s/projects/kroma#data-posted). ## Liveness Shown as an interactive chart or widget on [the HTML page](https://l2beat.com/layer2s/projects/kroma#liveness). ## Milestones & Incidents - 2025-06-20 (incident): [Kroma shutdown announcement](https://x.com/kroma_network/status/1936692354603520198). Kroma announces its shutdown on June 30, 2025. Users must withdraw their funds before that date. - 2025-06-04 (incident): [Plonky3 vulnerability patch](https://x.com/SuccinctLabs/status/1929773028034204121). SP1 verifier is patched to fix critical vulnerability in Plonky3 proof system (SP1 dependency). - 2025-02-11: [SP1 fault proofs upgrade](https://blog.kroma.network/kromas-transition-to-zkvm-fault-proof-b8c8d2dc39c6). Kroma adds an option to prove faults using the SP1 zk virtual machine. - 2024-04-25: [Ecotone upgrade](https://twitter.com/kroma_network/status/1783410075346063564). Introduces EIP-4844 data blobs for L1 data availability and more L2 opcodes. - 2024-04-05 (incident): [Chain fork #2 - Output root replaced](https://x.com/kroma_network/status/1774683208753590506). The chain forked and an L2 output on Ethereum has to be replaced by the Security Council. - 2024-03-18 (incident): [Chain fork - Output root replaced](https://x.com/kroma_network/status/1767478100819153009). The chain forked and an L2 output on Ethereum has to be replaced by the Security Council. - 2023-09-06: [Mainnet Launch](https://twitter.com/kroma_network/status/1699267271968055305?s=20). Kroma is live on mainnet. ## Risk summary ### Funds can be stolen if 1. a contract receives a malicious code upgrade. There is no delay on code upgrades (CRITICAL). ### Funds can be lost if 2. the cryptography is broken or implemented incorrectly. ### MEV can be extracted if 3. the operator exploits their centralized position and frontruns user transactions. ## Risk analysis **Warning:** Kroma shut down on June 30, 2025. After this date, funds retrieval is not guaranteed. See [announcement](https://x.com/kroma_network/status/1936692354603520198) for details. ### Sequencer failure Self sequence (sentiment: good) In the event of a sequencer failure, users can force transactions to be included in the project's chain by sending them to L1. There can be up to a 12h delay on this operation. ### State validation Fraud proofs (INT, ZK) (sentiment: bad) Fraud proofs allow actors watching the chain to prove that the state is incorrect. Interactive proofs (INT) require multiple transactions over time to resolve. ZK proofs are used to adjudicate the correctness of the last step. The challenge protocol can fail under certain conditions. The current system doesn't use posted L2 txs batches on L1 as inputs to prove a fault (for the zkEVM prover path), meaning that DA is not always enforced. ### Data availability Onchain (sentiment: good) All of the data needed for proof construction is published on Ethereum L1. ### Exit window None (sentiment: bad) There is no window for users to exit in case of an unwanted upgrade since contracts are instantly upgradable. ### Proposer failure Self propose (sentiment: good) Anyone can be a Proposer and propose new roots to the L1 bridge. ## Stage Kroma is not even a Stage 0 project. ### Stage 0 - [ ] The proof system is still under development. - [x] There are at least 5 external actors who can submit fraud proofs. - [x] The project calls itself a rollup. - [x] State roots are posted to Ethereum L1. - [x] Inputs for the state transition function are posted to Ethereum L1. - [x] A source-available node exists that can recreate the state from Ethereum L1 data. Please note that the L2BEAT team has not verified the validity of the node source code. [View code](https://github.com/kroma-network/kroma) ### Stage 1 - [ ] Principle: Compromising ≥75% of the Security Council should be the only way (other than bugs) for a rollup to indefinitely block an L2→L1 message (e.g. a withdrawal) or push an invalid L2→L1 message (e.g. an invalid withdrawal) with a <7d exit window. - [x] Users are able to exit without the help of the permissioned operators. - [ ] Upgrades executed by actors with more centralized control than a Security Council provide less than 7d for users to exit if the permissioned operator is down or censoring. - [x] The Security Council is properly set up. ### Stage 2 - [x] Fraud proof submission is open to everyone. - [ ] Upgrades unrelated to onchain provable bugs provide less than 30d to exit. - [ ] The Security Council's actions are not confined to onchain provable bugs. ## Data availability ### All transaction data is recorded on chain All executed transactions are submitted to an on chain smart contract. The execution of the rollup is based entirely on the submitted transactions, so anyone monitoring the contract can know the correct state of the rollup chain. **References** - [Derivation: Batch Submission - Kroma specs](https://specs.kroma.network/glossary.html#batch-submission) - [BatchInbox - Etherscan address](https://etherscan.io/address/0xff00000000000000000000000000000000000255) - [KromaPortal.sol - Etherscan source code, depositTransaction() function](https://etherscan.io/address/0x5C8eE8323a33ebBF3ea3c6c3b84DACFca44A9316#code#F1#L455) ## State derivation ### Node software Kroma nodes source code, including full node, proposer and validator, can be found [here](https://github.com/kroma-network/kroma). Also, the geth server, source maintained [here](https://github.com/kroma-network/go-ethereum), is a fork of go-ethereum. For more details on how they are different from the Optimism implementation, see [here](https://github.com/kroma-network/kroma-specs/blob/main/specs/protocol/differences-from-optimism.md). The instructions to run the proposer (called validator) and the ZK prover, are documented [here](https://docs.kroma.network/developers/running-nodes-on-kroma). ### Compression scheme Data batches are compressed using the [zlib](https://github.com/madler/zlib) algorithm with best compression level. ### Genesis state The genesis file can be found [here](https://github.com/kroma-network/kroma-up/blob/main/config/mainnet/genesis.json). ### Data format L2 blocks derivation from L1 data plus the format and architecture of batch submission is documented [here](https://specs.kroma.network/protocol/rollup-node.html#derivation). ## State validation ### Fraud proofs Kroma uses an interactive fraud proof system to find a single block of disagreement, which is then ZK proven. Once the single block of disagreement is found, the challenger is required to present a ZK proof of the fraud. This can be either a proof verified in a zkEVM verifier base on Scroll, or in a zkVM verifier built by Succinct SP1. If the proof is validated, the incorrect state output is deleted. The Security Council can always override the result of the challenge, it can also delete any L2 state root at any time. The protocol can fail under certain conditions. **Risks** - Funds can be lost if the cryptography is broken or implemented incorrectly. **References** - [Colosseum.sol#L300 - Etherscan source code, createChallenge() function](https://etherscan.io/address/0xBFcA810D1c26a3aC6F81a32Ab5C023F24bE93dAC#code#F1#L374) - [Colosseum.sol#L378 - Etherscan source code, bisect() function](https://etherscan.io/address/0xBFcA810D1c26a3aC6F81a32Ab5C023F24bE93dAC#code#F1#L452) - [Colosseum.sol#L434 - Etherscan source code, proveFaultWithZkEvm() function](https://etherscan.io/address/0xBFcA810D1c26a3aC6F81a32Ab5C023F24bE93dAC#code#F1#L505) - [KROMA-020: lack of validation segments and proofs in Colosseum.sol - ChainLight security audit](https://drive.google.com/file/d/13TUxZ9KPyvUXNZGddALcJLin-xmp_Fkj/view) ## Upgrades & Governance ## Updates Shown as an interactive chart or widget on [the HTML page](https://l2beat.com/layer2s/projects/kroma#updates). ## Operator ### The system has a centralized sequencer While forcing transaction is open to anyone the system employs a privileged sequencer that has priority for submitting transaction batches and ordering transactions. **Risks** - MEV can be extracted if the operator exploits their centralized position and frontruns user transactions. **References** - [SystemConfig - batcher address](https://etherscan.io/address/0x3971EB866AA9b2b8aFEa8a7C816F3b7e8b195a35#readProxyContract#F3) ### Users can force any transaction Because the state of the system is based on transactions submitted on the underlying host chain and anyone can submit their transactions there it allows the users to circumvent censorship by interacting with the smart contract on the host chain directly. **References** - [Sequencing Window - Kroma specs](https://specs.kroma.network/glossary.html#sequencing-window) - [KromaPortal.sol - Etherscan source code, depositTransaction function](https://etherscan.io/address/0x5C8eE8323a33ebBF3ea3c6c3b84DACFca44A9316#code#F1#L455) ## Withdrawals ### Regular messaging The user initiates L2->L1 messages by submitting a regular transaction on this chain. When the block containing that transaction is settled, the message becomes available for processing on L1. The process of block finalization takes a challenge period of 7d to complete. **References** - [KromaPortal.sol - Etherscan source code, proveWithdrawalTransaction function](https://etherscan.io/address/0x5C8eE8323a33ebBF3ea3c6c3b84DACFca44A9316#code#F1#L253) - [KromaPortal.sol - Etherscan source code, finalizeWithdrawalTransaction function](https://etherscan.io/address/0x5C8eE8323a33ebBF3ea3c6c3b84DACFca44A9316#code#F1#L350) ### Autonomous exit Users can (eventually) exit the system by pushing the transaction on L1 and providing the corresponding state root. The only way to prevent such withdrawal is via an upgrade. ## Other considerations ### EVM compatible smart contracts are supported OP stack chains are pursuing the EVM Equivalence model. No changes to smart contracts are required regardless of the language they are written in, i.e. anything deployed on L1 can be deployed on L2. **References** - [Introducing EVM Equivalence](https://medium.com/ethereum-optimism/introducing-evm-equivalence-5c2021deb306) ## Permissions ### Ethereum #### Actors ##### SecurityCouncilTokenOwners Addresses: [0xe4D08346609055c091D3DEECdAAd3Bf83119B08c](https://etherscan.io/address/0xe4D08346609055c091D3DEECdAAd3Bf83119B08c) A soulbound token implementation to identify participants of the KromaSecurityCouncil. Owners of the token are members of the council. There are currently 10 members. * Can upgrade **with no delay** * ZKProofVerifier [via: UpgradeGovernor → Timelock → ProxyAdmin] * L2OutputOracle [via: UpgradeGovernor → Timelock → ProxyAdmin] * Timelock [via: UpgradeGovernor → Timelock → ProxyAdmin] * ValidatorManager [via: UpgradeGovernor → Timelock → ProxyAdmin] * KromaPortal [via: UpgradeGovernor → Timelock → ProxyAdmin] * SystemConfig [via: UpgradeGovernor → Timelock → ProxyAdmin] * KromaSecurityCouncil [via: UpgradeGovernor → Timelock → ProxyAdmin] * L1CrossDomainMessenger [via: UpgradeGovernor → Timelock → ProxyAdmin] * L1ERC721Bridge [via: UpgradeGovernor → Timelock → ProxyAdmin] * ZkVerifier [via: UpgradeGovernor → Timelock → ProxyAdmin] * Colosseum [via: UpgradeGovernor → Timelock → ProxyAdmin] * USDCBridge [via: UpgradeGovernor → Timelock] * L1StandardBridge [via: UpgradeGovernor → Timelock → ProxyAdmin] * AssetManager [via: UpgradeGovernor → Timelock → ProxyAdmin] * UpgradeGovernor [via: UpgradeGovernor → Timelock → ProxyAdmin] * SecurityCouncilTokenOwners [via: UpgradeGovernor → Timelock → ProxyAdmin] * ValidatorPool [via: UpgradeGovernor → Timelock → ProxyAdmin] * Can interact with Timelock * cancel queued transactions [via: UpgradeGovernor] * execute transactions that are ready [via: UpgradeGovernor] * manage all access control roles and change the minimum delay [via: UpgradeGovernor → Timelock - or UpgradeGovernor] * propose transactions [via: UpgradeGovernor] * Can interact with SystemConfig * it can update the preconfer address, the batch submitter (Sequencer) address and the gas configuration of the system [via: UpgradeGovernor → Timelock] ##### KromaSecurityCouncil Addresses: [0x3de211088dF516da72efe68D386b561BEE256Ec4](https://etherscan.io/address/0x3de211088dF516da72efe68D386b561BEE256Ec4) Custom Multisig contract in which each signer is identified by a token. The threshold is 8 and the token contract is called SecurityCouncilToken. * Can interact with KromaPortal * Allowed to pause withdrawals. In op stack systems with a proof system, the Guardian can also blacklist dispute games and set the respected game type (permissioned / permissionless) * Can interact with Colosseum * dismiss ongoing challenges and override state roots (`forceDeleteOutput()`) * Can interact with ValidatorPool * become a validator without posting a bond **References** - [Security Council members - Announcing Kroma Security Council](https://blog.kroma.network/announcing-kroma-security-council-435b540d2ab4) ##### SP1VerifierGatewayMultisig Addresses: [0xCafEf00d348Adbd57c37d1B77e0619C6244C6878](https://etherscan.io/address/0xCafEf00d348Adbd57c37d1B77e0619C6244C6878) A Multisig with 2/3 threshold. * Can interact with SP1VerifierGateway * affect the liveness and safety of the gateway - can transfer ownership, add and freeze verifier routes ##### Kroma Multisig Addresses: [0xe57E217d8ed498992452791622711B866403E950](https://etherscan.io/address/0xe57E217d8ed498992452791622711B866403E950) A Multisig with 3/5 threshold. Escrows a pool of KRO used as validator rewards by the AssetManager. ##### EOA 1 Addresses: [0x41b8cD6791De4D8f9E0eaF7861aC506822AdcE12](https://etherscan.io/address/0x41b8cD6791De4D8f9E0eaF7861aC506822AdcE12) * Can interact with SystemConfig * Allowed to commit transactions from the current layer to the host chain ##### 10 EOAs Addresses: [0x16876e5c608cec36968517A9Eb345269D308D94a](https://etherscan.io/address/0x16876e5c608cec36968517A9Eb345269D308D94a) (EOA 2), [0x27EFE61C5266e461995141f57b4D13F13c83f786](https://etherscan.io/address/0x27EFE61C5266e461995141f57b4D13F13c83f786) (EOA 3), [0x3a4F65D1ACFb2A3F5AD93ef7b240bfa1079052e0](https://etherscan.io/address/0x3a4F65D1ACFb2A3F5AD93ef7b240bfa1079052e0) (EOA 4), [0x3aa00bb915A8e78b0523E4c365e3E70A19d329e6](https://etherscan.io/address/0x3aa00bb915A8e78b0523E4c365e3E70A19d329e6) (KromaOperator), [0x42a4f1958A5d99A62C50eb24a80d1D8b142ea3A1](https://etherscan.io/address/0x42a4f1958A5d99A62C50eb24a80d1D8b142ea3A1) (EOA 5), [0x5ddcf494A8b6EeE4904934E829109cCF584EAF80](https://etherscan.io/address/0x5ddcf494A8b6EeE4904934E829109cCF584EAF80) (EOA 6), [0x66FA82F4AEA284d1d208437F179dFE13d8118f3A](https://etherscan.io/address/0x66FA82F4AEA284d1d208437F179dFE13d8118f3A) (EOA 7), [0x77Fe100758c5320cdfBb4f4a0Bed57885c97158A](https://etherscan.io/address/0x77Fe100758c5320cdfBb4f4a0Bed57885c97158A) (EOA 8), [0x8ECF028Cd647379E580DaA6701A11154750fcd3c](https://etherscan.io/address/0x8ECF028Cd647379E580DaA6701A11154750fcd3c) (EOA 9), [0xD417Ff17bf3cFD7260a4De20C6864090aA0503cC](https://etherscan.io/address/0xD417Ff17bf3cFD7260a4De20C6864090aA0503cC) (EOA 10) * Can interact with SecurityCouncilTokenOwners * one of the signers of the KromaSecurityCouncil ## Smart contracts ### Ethereum #### SystemConfig Addresses: [0x3971EB866AA9b2b8aFEa8a7C816F3b7e8b195a35](https://etherscan.io/address/0x3971EB866AA9b2b8aFEa8a7C816F3b7e8b195a35#code), [0x2af8a383C395EBa6551E674EeD02344936fE36f5](https://etherscan.io/address/0x2af8a383C395EBa6551E674EeD02344936fE36f5#code) (Implementation (Upgradable)), [0x665c23A5722B6A237fa6Be2B49c0A94504db1edd](https://etherscan.io/address/0x665c23A5722B6A237fa6Be2B49c0A94504db1edd#code) (Admin) Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address. * Roles: * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners * **batcherHash**: EOA 1 * **owner**: Timelock; ultimately SecurityCouncilTokenOwners Can be upgraded by: SecurityCouncilTokenOwners with no delay #### L1CrossDomainMessenger Addresses: [0x46B8bB4C5dd27bB42807Db477af4d1a7C8A5B746](https://etherscan.io/address/0x46B8bB4C5dd27bB42807Db477af4d1a7C8A5B746#code), [0x675924D68200F2C967Ba12349d5d510676C7214c](https://etherscan.io/address/0x675924D68200F2C967Ba12349d5d510676C7214c#code) (Implementation (Upgradable)), [0x665c23A5722B6A237fa6Be2B49c0A94504db1edd](https://etherscan.io/address/0x665c23A5722B6A237fa6Be2B49c0A94504db1edd#code) (Admin) Sends messages from host chain to this chain, and relays messages back onto host chain. In the event that a message sent from host chain to this chain is rejected for exceeding this chain's epoch gas limit, it can be resubmitted via this contract's replay function. * Roles: * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners Can be upgraded by: SecurityCouncilTokenOwners with no delay #### L1ERC721Bridge Addresses: [0x46d07221dfC313afe1BF104F4bB1f185301D65B9](https://etherscan.io/address/0x46d07221dfC313afe1BF104F4bB1f185301D65B9#code), [0xbB1cDB5Cc35B1c9801DA8772aCBcDbd323A912D9](https://etherscan.io/address/0xbB1cDB5Cc35B1c9801DA8772aCBcDbd323A912D9#code) (Implementation (Upgradable)), [0x665c23A5722B6A237fa6Be2B49c0A94504db1edd](https://etherscan.io/address/0x665c23A5722B6A237fa6Be2B49c0A94504db1edd#code) (Admin) Used to bridge ERC-721 tokens from host chain to this chain. * Roles: * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners Can be upgraded by: SecurityCouncilTokenOwners with no delay #### L1StandardBridge Addresses: [0x827962404D7104202C5aaa6b929115C8211d9596](https://etherscan.io/address/0x827962404D7104202C5aaa6b929115C8211d9596#code), [0x404133EdF24F56b7dD9c6d89Fb56bb35244461B4](https://etherscan.io/address/0x404133EdF24F56b7dD9c6d89Fb56bb35244461B4#code) (Implementation (Upgradable)), [0x665c23A5722B6A237fa6Be2B49c0A94504db1edd](https://etherscan.io/address/0x665c23A5722B6A237fa6Be2B49c0A94504db1edd#code) (Admin) The main entry point to deposit ERC20 tokens from host chain to this chain. * Roles: * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners Can be upgraded by: SecurityCouncilTokenOwners with no delay #### ZKProofVerifier Addresses: [0x005DDC466C804c79adB079c120347dDE48132105](https://etherscan.io/address/0x005DDC466C804c79adB079c120347dDE48132105#code), [0x9f2Ec7196596581806218D3D183581b00e5a444E](https://etherscan.io/address/0x9f2Ec7196596581806218D3D183581b00e5a444E#code) (Implementation (Upgradable)), [0x665c23A5722B6A237fa6Be2B49c0A94504db1edd](https://etherscan.io/address/0x665c23A5722B6A237fa6Be2B49c0A94504db1edd#code) (Admin) * Roles: * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners Can be upgraded by: SecurityCouncilTokenOwners with no delay #### L2OutputOracle Addresses: [0x180c77aE51a9c505a43A2C7D81f8CE70cacb93A6](https://etherscan.io/address/0x180c77aE51a9c505a43A2C7D81f8CE70cacb93A6#code), [0x4B68F22d96a04F6d80e284C20A648f8Da2fD569b](https://etherscan.io/address/0x4B68F22d96a04F6d80e284C20A648f8Da2fD569b#code) (Implementation (Upgradable)), [0x665c23A5722B6A237fa6Be2B49c0A94504db1edd](https://etherscan.io/address/0x665c23A5722B6A237fa6Be2B49c0A94504db1edd#code) (Admin) The L2OutputOracle contract contains a list of proposed state roots which Proposers assert to be a result of block execution. Anyone can participate as a Proposer by depositing in the ValidatorPool. A root can be proposed every 1800 blocks (2s block time). * Roles: * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners Can be upgraded by: SecurityCouncilTokenOwners with no delay #### Timelock Addresses: [0x22605A12cB77Fe420B0cC1263cEb58a77352FDc1](https://etherscan.io/address/0x22605A12cB77Fe420B0cC1263cEb58a77352FDc1#code), [0xe44da6e9fA92E3FD897Da84d38fa6B9322Dd22c3](https://etherscan.io/address/0xe44da6e9fA92E3FD897Da84d38fa6B9322Dd22c3#code) (Implementation (Upgradable)), [0x665c23A5722B6A237fa6Be2B49c0A94504db1edd](https://etherscan.io/address/0x665c23A5722B6A237fa6Be2B49c0A94504db1edd#code) (Admin) A standard timelock with access control. The current minimum delay is 0s. * Roles: * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners * **canceller**: UpgradeGovernor; ultimately SecurityCouncilTokenOwners * **executor**: UpgradeGovernor; ultimately SecurityCouncilTokenOwners * **proposer**: UpgradeGovernor; ultimately SecurityCouncilTokenOwners * **timelockAdmin**: Timelock, UpgradeGovernor; ultimately SecurityCouncilTokenOwners Can be upgraded by: SecurityCouncilTokenOwners with no delay #### ValidatorManager Addresses: [0x232277d9672eEdd53c4B26C0F386C2Eb88DC7363](https://etherscan.io/address/0x232277d9672eEdd53c4B26C0F386C2Eb88DC7363#code), [0x8687b9ecD75ea00997a999B9DdE54C735DE9DEE1](https://etherscan.io/address/0x8687b9ecD75ea00997a999B9DdE54C735DE9DEE1#code) (Implementation (Upgradable)), [0x665c23A5722B6A237fa6Be2B49c0A94504db1edd](https://etherscan.io/address/0x665c23A5722B6A237fa6Be2B49c0A94504db1edd#code) (Admin) Manages the set of Proposers (Validators in Kroma) and selects the next proposer with the window to submit the output root within 30m, after which anyone can propose for them. It is also the entry point for other contracts, such as the L2OutputOracle and the Colosseum, which distribute output rewards and slash challenge losers. It makes successive calls to the AssetManager to apply changes to the proposers' assets. * Roles: * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners Can be upgraded by: SecurityCouncilTokenOwners with no delay #### KromaPortal Addresses: [0x31F648572b67e60Ec6eb8E197E1848CC5F5558de](https://etherscan.io/address/0x31F648572b67e60Ec6eb8E197E1848CC5F5558de#code), [0x5C8eE8323a33ebBF3ea3c6c3b84DACFca44A9316](https://etherscan.io/address/0x5C8eE8323a33ebBF3ea3c6c3b84DACFca44A9316#code) (Implementation (Upgradable)), [0x665c23A5722B6A237fa6Be2B49c0A94504db1edd](https://etherscan.io/address/0x665c23A5722B6A237fa6Be2B49c0A94504db1edd#code) (Admin) This is a fork of the standard OP stack OptimismPortal contract, the main entry point to deposit funds from L1 to L2. It also allows to prove and finalize withdrawals. * Roles: * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners * **guardian**: KromaSecurityCouncil Can be upgraded by: SecurityCouncilTokenOwners with no delay #### ZKMerkleTrie Addresses: [0x339208824010425cBE73201ceD4372308ACD610B](https://etherscan.io/address/0x339208824010425cBE73201ceD4372308ACD610B#code) Merkle Trie contract used to prove withdrawals that were initiated in the legacy system, deprecated for new withdrawals and succeeded by a merkle tree library in the KromaPortal. #### ProxyAdmin Addresses: [0x665c23A5722B6A237fa6Be2B49c0A94504db1edd](https://etherscan.io/address/0x665c23A5722B6A237fa6Be2B49c0A94504db1edd#code) * Roles: * **owner**: Timelock #### ZkVerifier Addresses: [0x6deb6a630D7b486c1C08d4016AEe3835a2F52Fa7](https://etherscan.io/address/0x6deb6a630D7b486c1C08d4016AEe3835a2F52Fa7#code), [0x4cd05aB629055a449617a28E3466660403eA7126](https://etherscan.io/address/0x4cd05aB629055a449617a28E3466660403eA7126#code) (Implementation (Upgradable)), [0x665c23A5722B6A237fa6Be2B49c0A94504db1edd](https://etherscan.io/address/0x665c23A5722B6A237fa6Be2B49c0A94504db1edd#code) (Admin) ZK verifier used to verify the last step of a legacy zkEVM proof, which corresponds to a block. * Roles: * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners Can be upgraded by: SecurityCouncilTokenOwners with no delay #### Colosseum Addresses: [0x713C2BEd44eB45D490afB8D4d1aA6F12290B829a](https://etherscan.io/address/0x713C2BEd44eB45D490afB8D4d1aA6F12290B829a#code), [0xBFcA810D1c26a3aC6F81a32Ab5C023F24bE93dAC](https://etherscan.io/address/0xBFcA810D1c26a3aC6F81a32Ab5C023F24bE93dAC#code) (Implementation (Upgradable)), [0x665c23A5722B6A237fa6Be2B49c0A94504db1edd](https://etherscan.io/address/0x665c23A5722B6A237fa6Be2B49c0A94504db1edd#code) (Admin) Contract used to challenge state roots and prove fraud. If successful, the wrong state root in the L2OutputOracle is replaced. * Roles: * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners * **security_council**: KromaSecurityCouncil Can be upgraded by: SecurityCouncilTokenOwners with no delay #### USDCBridge Addresses: [0x7e1Bdb9ee75B6ef1BCAAE3B1De1c616C7B11ef6e](https://etherscan.io/address/0x7e1Bdb9ee75B6ef1BCAAE3B1De1c616C7B11ef6e#code), [0xE4e9F3AD8A6F224c4b39854D3550AD258441AfE3](https://etherscan.io/address/0xE4e9F3AD8A6F224c4b39854D3550AD258441AfE3#code) (Implementation (Upgradable)), [0x22605A12cB77Fe420B0cC1263cEb58a77352FDc1](https://etherscan.io/address/0x22605A12cB77Fe420B0cC1263cEb58a77352FDc1#code) (Admin) * Roles: * **admin**: Timelock; ultimately SecurityCouncilTokenOwners Can be upgraded by: SecurityCouncilTokenOwners with no delay #### AssetManager Addresses: [0xa295310DE52b86F236A815AFb2f518F3C0F5A6D3](https://etherscan.io/address/0xa295310DE52b86F236A815AFb2f518F3C0F5A6D3#code), [0xf34fa8D3ac4AAcAD8307da8C8E51bDddCDa60Ede](https://etherscan.io/address/0xf34fa8D3ac4AAcAD8307da8C8E51bDddCDa60Ede#code) (Implementation (Upgradable)), [0x665c23A5722B6A237fa6Be2B49c0A94504db1edd](https://etherscan.io/address/0x665c23A5722B6A237fa6Be2B49c0A94504db1edd#code) (Admin) Manages the delegation and undelegation of KRO tokens and Kroma Guardian House (KGH) NFTs for Proposers (Kroma Validators) and distributes rewards. * Roles: * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners Can be upgraded by: SecurityCouncilTokenOwners with no delay #### UpgradeGovernor Addresses: [0xb3c415c2Aad428D5570208e1772cb68e7D06a537](https://etherscan.io/address/0xb3c415c2Aad428D5570208e1772cb68e7D06a537#code), [0x64F8F4EB207D51F74caf6db644Bf710Ad86989b3](https://etherscan.io/address/0x64F8F4EB207D51F74caf6db644Bf710Ad86989b3#code) (Implementation (Upgradable)), [0x665c23A5722B6A237fa6Be2B49c0A94504db1edd](https://etherscan.io/address/0x665c23A5722B6A237fa6Be2B49c0A94504db1edd#code) (Admin) A governance proxy contract using token voting with SecurityCouncilTokenOwners as identification of actors allowed to vote/sign a proposal which is passed to the Timelock afterwards. * Roles: * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners * **token**: SecurityCouncilTokenOwners Can be upgraded by: SecurityCouncilTokenOwners with no delay #### ValidatorPool Addresses: [0xFdFF462845953D90719A78Fd12a2d103541d2103](https://etherscan.io/address/0xFdFF462845953D90719A78Fd12a2d103541d2103#code), [0xE36776FFA20a9206dcD742C981402a3f3d81938d](https://etherscan.io/address/0xE36776FFA20a9206dcD742C981402a3f3d81938d#code) (Implementation (Upgradable)), [0x665c23A5722B6A237fa6Be2B49c0A94504db1edd](https://etherscan.io/address/0x665c23A5722B6A237fa6Be2B49c0A94504db1edd#code) (Admin) Contract used to manage the Proposers. Anyone can submit a deposit and bond to a state root, or create a challenge. It also manages the Proposer rotation for each submittable block using a random selection. If the selected proposer fails to publish a root within 30m then the submission becomes open to everyone. * Roles: * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners * **security_council**: KromaSecurityCouncil Can be upgraded by: SecurityCouncilTokenOwners with no delay #### SP1Verifier Addresses: [0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459](https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code) Verifier contract for SP1 proofs (v5.0.0). #### SP1VerifierGateway Addresses: [0x3B6041173B80E77f038f3F2C0f9744f04837185e](https://etherscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code) This contract is the router for zk proof verification. It stores the mapping between identifiers and the address of onchain verifier contracts, routing each identifier to the corresponding verifier contract. * Roles: * **owner**: SP1VerifierGatewayMultisig #### SP1Verifier Addresses: [0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C](https://etherscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code) Verifier contract for SP1 proofs (v6.0.0). #### SP1Verifier Addresses: [0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A](https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code) Verifier contract for SP1 proofs (v6.1.0). The current deployment carries some associated risks: - Funds can be stolen if a contract receives a malicious code upgrade. There is no delay on code upgrades (CRITICAL).