[Core Protocol] Reason for the fault proof program #47
-
Issue DescriptionI see that outputRoot is submitted by a centralized authority and _outputRootProof object per each withdrawTransaction could be submitted by users. My question roses that, 1. how the user could forge this, 2. what happens if outputRoot changes with the associated transaction already submitted and any possibilities that could happen 3. why do we have a challenge period 4. what is all the fault proof for. Thanks! Additional InformationNo response |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 2 replies
-
So there is an upgradeability of the outputRoot https://github.com/ethereum-optimism/optimism/blob/84437125a7be518efd54e0ad87b1838f93bad073/packages/contracts-bedrock/src/L1/L2OutputOracle.sol#L140, I wonder why the function exists and when could the function being called? |
Beta Was this translation helpful? Give feedback.
-
I have found the likely answer from @ajsutton from the previous discord chat
So no one except the sequencer would be able to forge it right? Users wouldn't be able to post a falsify withdraw data with forged output proof right? https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts-bedrock/src/L1/OptimismPortal.sol#L229 |
Beta Was this translation helpful? Give feedback.
Yeah thats right, to answer your questions in reverse:
A fault proof, also known as fraud proof or interactive game, consists of 3 components:
- VM: given a stateless program and its inputs, trace any instruction step, and prove it on L1.
- Interactive Dispute Game: bisect a dispute down to a single instruction, and resolve the base-case using the VM.
- specs