{
"self": {
"stateValidation": {
"value": "None",
"description": "Currently the system permits invalid state roots. More details in project overview.",
"sentiment": "bad",
"orderHint": null
},
"dataAvailability": {
"value": "PoS network",
"description": "Data is guaranteed to be available by an external proof of stake network of validators. On Ethereum, DA is attested via signed block headers.",
"sentiment": "warning"
},
"exitWindow": {
"value": "None",
"description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable.",
"sentiment": "bad",
"orderHint": 0
},
"sequencerFailure": {
"value": "Enqueue via L1",
"description": "Users can submit transactions to an L1 queue, but can't force them. The sequencers cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencers censor or are down, they are so for everyone. In Polygon PoS, the sequencers network corresponds to the PoS validators network, which is composed of 105 members.",
"description": "Users can submit transactions to an L1 queue, but can't force them. The sequencers cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencers censor or are down, they are so for everyone. In Polygon PoS, the sequencers network corresponds to the PoS validators network, which is composed of 104 members.",
"sentiment": "warning"
},
"proposerFailure": {
"value": "Cannot withdraw",
"description": "The PoS network is composed of 105 validators. Blocks are included in the chain only if signed by 2/3+1 of the network stake. It's currently not possible to join the set if the validator cap is reached. The current validator cap is set to 105. In the event of a failure in reaching consensus, withdrawals are frozen.",
"description": "The PoS network is composed of 104 validators. Blocks are included in the chain only if signed by 2/3+1 of the network stake. It's currently not possible to join the set if the validator cap is reached. The current validator cap is set to 105. In the event of a failure in reaching consensus, withdrawals are frozen.",
"sentiment": "warning"
}
}
}
scalingDa+1-1
[
{
"layer": {
"value": "Polygon PoS DA",
"sentiment": "warning",
"description": "The data is guaranteed to be available by Polygon proof of stake validators. On Ethereum, the data is indirectly referenced in the signed block header."
},
"bridge": {
"value": "105 validators",
"value": "104 validators",
"sentiment": "warning",
"description": "The bridge verifies that at least 2/3+1 of the Polygon PoS stake has signed off on the checkpoint. The StakeManager contract is the source of truth for the current validator set."
},
"mode": {
"value": "Transaction data"
}
}
]
{
"dataAvailability": [
{
"name": "All data required for proofs is published on chain",
"description": "All the data that is used to construct the system state is published on chain in the form of blobs. This ensures that it will be available for enough time.",
"references": [],
"risks": []
}
],
"exitMechanisms": [
{
"name": "Regular exit",
"description": "The user initiates the withdrawal by submitting a regular transaction on this chain. When the block containing that transaction is finalized the funds become available for withdrawal on L1. Finally the user submits an L1 transaction to claim the funds. This transaction requires a merkle proof.",
"risks": [],
"references": []
}
],
"forceTransactions": {
"name": "Users can force any transaction via L1",
"description": "Users can submit a blob containing a standalone transaction by calling the `storeForcedInclusion()` function on the `ForcedInclusionStore` contract. \n This forced transaction mechanism allows users to submit a transaction without running a prover.\n This mechanism ensures that at least one forced transaction from the queue is processed every 255 batches. However, if many transactions (k) are added to the queue, an individual transaction could experience a worst-case delay of up to k * 255 batches while waiting for its turn. Also, right now there is no mechanism that forces L2 Sequencer to include transactions from the queue in an L2 block, since L1 batches submission is permissioned behind a whitelist.",
"references": [
{
"title": "ForcedInclusionStore.sol - Etherscan source code, storeForcedInclusion function",
"url": "https://etherscan.io/address/0xcdb25e201ad3fdcfe16730a6ca2cc0b1ce2137a2#code"
}
],
"risks": [
{
"category": "Users can be censored if",
"text": "the operator refuses to include their transactions."
}
]
},
"operator": {
"name": "The system uses whitelist-based rotating operators",
"description": "The system uses a whitelist-based sequencing mechanism to allow for fast preconfirmations on the L2. On the L1, whitelisted preconfirmers (or the fallback operator) can sequence Taiko L2 blocks by proposing them on the TaikoL1 contract.\n The whitelist is managed by the `PreconfWhitelist` contract, which currently has 3 active operators registered.\n The proposer of a block is assigned the designated prover role, and will be the only entity allowed to provide a proof for the block during the 2h proving window.\n Currently, proving a block requires the block proposer to run a SGX instance with Geth, plus either SGX (Reth), SP1, or RISC0 to prove the block.\n Unless the block proposer proves the block within the proving window, it will forfeit half of its liveness bond to the TaikoL1 smart contract.",
"description": "The system uses a whitelist-based sequencing mechanism to allow for fast preconfirmations on the L2. On the L1, whitelisted preconfirmers (or the fallback operator) can sequence Taiko L2 blocks by proposing them on the TaikoL1 contract.\n The whitelist is managed by the `PreconfWhitelist` contract, which currently has 2 active operators registered.\n The proposer of a block is assigned the designated prover role, and will be the only entity allowed to provide a proof for the block during the 2h proving window.\n Currently, proving a block requires the block proposer to run a SGX instance with Geth, plus either SGX (Reth), SP1, or RISC0 to prove the block.\n Unless the block proposer proves the block within the proving window, it will forfeit half of its liveness bond to the TaikoL1 smart contract.",
"references": [
{
"title": "TaikoL1.sol - Etherscan source code, proposeBatch function",
"url": "https://etherscan.io/address/0xB0600e011e02eD35A142B45B506B16A35493c3F5#code"
},
{
"title": "PreconfWhitelist.sol - Etherscan source code",
"url": "https://etherscan.io/address/0xFD019460881e6EeC632258222393d5821029b2ac#code"
}
],
"risks": [
{
"category": "MEV can be extracted if",
"text": "the operator exploits their centralized position and frontruns user transactions."
}
]
},
"stateValidation": {
"categories": [
{
"title": "Validity proofs",
"description": "Taiko uses a multi-proof system to validate state transitions. The system requires two proofs among four available verifiers: SGX (Geth), SGX (Reth), SP1, and RISC0. The use of SGX (Geth) is mandatory, while the other three can be used interchangeably. This means that a block can be proven without providing a ZK proof if SGX (Geth) and SGX (Reth) are used together. Batch proposers are required to stake a liveness bond of 25.0 TAIKO, half of which is forfeited if they fail to prove the block within the proving window of 2h. The multi-proof system allows to detect bugs in the verifiers if they produce different results for the same block. If such a bug is detected, the system gets automatically paused.",
"references": [
{
"title": "TaikoL1.sol - Etherscan source code, liveness bond",
"url": "https://etherscan.io/address/0xB0600e011e02eD35A142B45B506B16A35493c3F5#code"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a malicious block is proven by compromised SGX instances."
}
]
}
]
}
}
permissions+5-19
{
"ethereum": {
"roles": [
{
"id": "Sequencer",
"name": "Sequencer",
"description": "Allowed to commit transactions from the current layer to the host chain.",
"accounts": [
{
"address": "eth:0x000cb000E880A92a8f383D69dA2142a969B93DE7",
"type": "EOA",
"isVerified": true,
"name": "EOA 1",
"url": "#EOA-1,-EOA-3-and-EOA-4"
"url": "#EOA-1-and-EOA-3"
},
{
"address": "eth:0x5F62d006C10C009ff50C878Cd6157aC861C99990",
"type": "EOA",
"isVerified": true,
"name": "EOA 3",
"url": "#EOA-1,-EOA-3-and-EOA-4"
},
{
"address": "eth:0xCbeB5d484b54498d3893A0c3Eb790331962e9e9d",
"type": "EOA",
"isVerified": true,
"name": "EOA 4",
"url": "#EOA-1,-EOA-3-and-EOA-4"
"name": "EOA 3",
"url": "#EOA-1-and-EOA-3"
}
],
"chain": "ethereum",
"discoveryDrivenData": true
}
],
"actors": [
{
"id": "DAO",
"name": "DAO",
"accounts": [
{
"address": "eth:0x9CDf589C941ee81D75F34d3755671d614f7cf261",
"type": "Contract",
"isVerified": true,
"name": "0x9CDf…f261",
"url": "https://etherscan.io/address/0x9CDf589C941ee81D75F34d3755671d614f7cf261"
}
],
"chain": "ethereum",
"description": "The main contract and entrypoint of the Aragon-based DAO governance framework. Fine-grained DAO permissions, proposals, voting and thresholds are configured here.\n* Can upgrade **with no delay**\n * ForcedInclusionStore [via: TaikoDAOController]\n * TaikoL1 [via: TaikoDAOController]\n * AutomataDcapV3Attestation [via: TaikoDAOController]\n * Taiko Token [via: TaikoDAOController]\n * DefaultResolver [via: TaikoDAOController]\n * Risc0VerifierGateway [via: TaikoDAOController]\n * TaikoDAOController \n * SgxVerifier [via: TaikoDAOController]\n * AutomataDcapV3Attestation [via: TaikoDAOController]\n * DefaultResolver [via: TaikoDAOController]\n * QuotaManager [via: TaikoDAOController]\n * MainnetERC20Vault [via: TaikoDAOController]\n * MainnetSignalService [via: TaikoDAOController]\n * SgxVerifier [via: TaikoDAOController]\n * TaikoWrapper [via: TaikoDAOController]\n * VerifierGateway [via: TaikoDAOController]\n * SP1VerifierGateway [via: TaikoDAOController]\n * PreconfRouter [via: TaikoDAOController]\n * MainnetBridge [via: TaikoDAOController]\n * L1SharedAddressManager [via: TaikoDAOController]\n * TaikoDAOController \n * PreconfWhitelist [via: TaikoDAOController]\n* Can interact with AutomataDcapV3Attestation\n * can update the program being verified [via: TaikoDAOController]\n* Can interact with DefaultResolver\n * can update the contract address for a given name [via: TaikoDAOController]\n* Can interact with Risc0VerifierGateway\n * can update the program being verified [via: TaikoDAOController]\n* Can interact with SgxVerifier\n * can add new instances without a DCAP attestation [via: TaikoDAOController]\n* Can interact with AutomataDcapV3Attestation\n * can update the program being verified [via: TaikoDAOController]\n* Can interact with DefaultResolver\n * can update the contract address for a given name [via: TaikoDAOController]\n* Can interact with SgxVerifier\n * can add new instances without a DCAP attestation [via: TaikoDAOController]\n* Can interact with SP1VerifierGateway\n * can update the program being verified [via: TaikoDAOController]\n* Can interact with L1SharedAddressManager\n * can update the contract address for a given name [via: TaikoDAOController]",
"discoveryDrivenData": true
},
{
"id": "Taiko Foundation Treasury Multisig",
"name": "Taiko Foundation Treasury Multisig",
"description": "A Multisig with 2/3 threshold. ",
"accounts": [
{
"address": "eth:0x363e846B91AF677Fb82f709b6c35BD1AaFc6B3Da",
"type": "Contract",
"isVerified": true,
"name": "0x363e…B3Da",
"url": "https://etherscan.io/address/0x363e846B91AF677Fb82f709b6c35BD1AaFc6B3Da"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x75Ba76403b13b26AD1beC70D6eE937314eeaCD0a",
"type": "Contract",
"isVerified": true,
"name": "TaikoDAOController",
"url": "https://etherscan.io/address/0x75Ba76403b13b26AD1beC70D6eE937314eeaCD0a"
},
{
"address": "eth:0x0F026a3efE44E0Fe34B87375EFe69b16c05D0438",
"type": "EOA",
"isVerified": true,
"name": "EOA 2",
"url": "#EOA-2"
},
{
"address": "eth:0x3b1D1F89E0b6803174A2dE72e21A6f6f8464d5F1",
"type": "EOA",
"isVerified": true,
"name": "0x3b1D…d5F1",
"url": "https://etherscan.io/address/0x3b1D1F89E0b6803174A2dE72e21A6f6f8464d5F1"
}
],
"discoveryDrivenData": true
},
{
"id": "Gattaca",
"name": "Gattaca",
"description": "A Multisig with 1/2 threshold. ",
"accounts": [
{
"address": "eth:0x6268d189E011Aa53A2f09A1FE159445BeB3d878E",
"type": "Contract",
"isVerified": true,
"name": "0x6268…878E",
"url": "https://etherscan.io/address/0x6268d189E011Aa53A2f09A1FE159445BeB3d878E"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x39cc8f0FEb8DFBa96674098a80eC304879576E6D",
"type": "EOA",
"isVerified": true,
"name": "0x39cc…6E6D",
"url": "https://etherscan.io/address/0x39cc8f0FEb8DFBa96674098a80eC304879576E6D"
},
{
"address": "eth:0xc4414B079bC4A013916B3dc241555F6f505c1619",
"type": "EOA",
"isVerified": true,
"name": "Gattaca Agent",
"url": "https://etherscan.io/address/0xc4414B079bC4A013916B3dc241555F6f505c1619"
}
],
"discoveryDrivenData": true
},
{
"id": "Taiko Multisig",
"name": "Taiko Multisig",
"description": "A Multisig with 4/6 threshold. ",
"accounts": [
{
"address": "eth:0x9CBeE534B5D8a6280e01a14844Ee8aF350399C7F",
"type": "Contract",
"isVerified": true,
"name": "0x9CBe…9C7F",
"url": "https://etherscan.io/address/0x9CBeE534B5D8a6280e01a14844Ee8aF350399C7F"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xAC5898b0FFFd23F4Ef09F0E50Fa1bC4896eF7163",
"type": "EOA",
"isVerified": true,
"name": "Gustavo Gonzalez Agent",
"url": "https://etherscan.io/address/0xAC5898b0FFFd23F4Ef09F0E50Fa1bC4896eF7163"
},
{
"address": "eth:0xDC4ece5620659F4d5d1536Cab52BD5e5B15F8a0a",
"type": "EOA",
"isVerified": true,
"name": "0xDC4e…8a0a",
"url": "https://etherscan.io/address/0xDC4ece5620659F4d5d1536Cab52BD5e5B15F8a0a"
},
{
"address": "eth:0x0aED2375549D1115e180bd0caea829C429Ea50B3",
"type": "EOA",
"isVerified": true,
"name": "0x0aED…50B3",
"url": "https://etherscan.io/address/0x0aED2375549D1115e180bd0caea829C429Ea50B3"
},
{
"address": "eth:0xCf76A87E24FE2054DCF02a5f65eAc0F24A34c439",
"type": "EOA",
"isVerified": true,
"name": "0xCf76…c439",
"url": "https://etherscan.io/address/0xCf76A87E24FE2054DCF02a5f65eAc0F24A34c439"
},
{
"address": "eth:0x0F026a3efE44E0Fe34B87375EFe69b16c05D0438",
"type": "EOA",
"isVerified": true,
"name": "EOA 2",
"url": "#EOA-2"
},
{
"address": "eth:0x3b1D1F89E0b6803174A2dE72e21A6f6f8464d5F1",
"type": "EOA",
"isVerified": true,
"name": "0x3b1D…d5F1",
"url": "https://etherscan.io/address/0x3b1D1F89E0b6803174A2dE72e21A6f6f8464d5F1"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1,-EOA-3-and-EOA-4",
"name": "EOA 1, EOA 3 and EOA 4",
"id": "EOA-1-and-EOA-3",
"name": "EOA 1 and EOA 3",
"accounts": [
{
"address": "eth:0x000cb000E880A92a8f383D69dA2142a969B93DE7",
"type": "EOA",
"isVerified": true,
"name": "0x000c…3DE7",
"url": "https://etherscan.io/address/0x000cb000E880A92a8f383D69dA2142a969B93DE7"
},
{
"address": "eth:0x5F62d006C10C009ff50C878Cd6157aC861C99990",
"type": "EOA",
"isVerified": true,
"name": "0x5F62…9990",
"url": "https://etherscan.io/address/0x5F62d006C10C009ff50C878Cd6157aC861C99990"
},
{
"address": "eth:0xCbeB5d484b54498d3893A0c3Eb790331962e9e9d",
"type": "EOA",
"isVerified": true,
"name": "0xCbeB…9e9d",
"url": "https://etherscan.io/address/0xCbeB5d484b54498d3893A0c3Eb790331962e9e9d"
}
],
"chain": "ethereum",
"description": "* A Sequencer - acting directly",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0x0F026a3efE44E0Fe34B87375EFe69b16c05D0438",
"type": "EOA",
"isVerified": true,
"name": "0x0F02…0438",
"url": "https://etherscan.io/address/0x0F026a3efE44E0Fe34B87375EFe69b16c05D0438"
}
],
"chain": "ethereum",
"description": "Member of Taiko Foundation Treasury Multisig, Taiko Multisig.\n* Can upgrade **with no delay**\n * ProverSet ",
"discoveryDrivenData": true
}
]
},
"taiko": {
"roles": [],
"actors": [
{
"id": "DelegateController",
"name": "DelegateController",
"accounts": [
{
"address": "taiko:0xfA06E15B8b4c5BF3FC5d9cfD083d45c53Cbe8C7C",
"type": "Contract",
"isVerified": true,
"name": "0xfA06…8C7C",
"url": "https://taikoscan.io/address/0xfA06E15B8b4c5BF3FC5d9cfD083d45c53Cbe8C7C"
}
],
"chain": "taiko",
"description": "* Can upgrade **with no delay**\n * Bridge \n * SignalService \n * L2AddressManager \n * TaikoAnchor \n * DefaultResolver \n * DelegateController \n* Can interact with L2AddressManager\n * can update the contract address for a given name \n* Can interact with DefaultResolver\n * can update the contract address for a given name ",
"discoveryDrivenData": true
}
]
}
}