github.com/ethereum-optimism/optimism@v1.7.2/packages/contracts-bedrock/invariant-docs/OptimismPortal.md (about)

     1  # `OptimismPortal` Invariants
     2  
     3  ## Deposits of any value should always succeed unless `_to` = `address(0)` or `_isCreation` = `true`.
     4  **Test:** [`OptimismPortal.t.sol#L149`](../test/invariants/OptimismPortal.t.sol#L149)
     5  
     6  All deposits, barring creation transactions and transactions sent to `address(0)`, should always succeed. 
     7  
     8  ## `finalizeWithdrawalTransaction` should revert if the finalization period has not elapsed.
     9  **Test:** [`OptimismPortal.t.sol#L172`](../test/invariants/OptimismPortal.t.sol#L172)
    10  
    11  A withdrawal that has been proven should not be able to be finalized until after the finalization period has elapsed. 
    12  
    13  ## `finalizeWithdrawalTransaction` should revert if the withdrawal has already been finalized.
    14  **Test:** [`OptimismPortal.t.sol#L202`](../test/invariants/OptimismPortal.t.sol#L202)
    15  
    16  Ensures that there is no chain of calls that can be made that allows a withdrawal to be finalized twice. 
    17  
    18  ## A withdrawal should **always** be able to be finalized `FINALIZATION_PERIOD_SECONDS` after it was successfully proven.
    19  **Test:** [`OptimismPortal.t.sol#L231`](../test/invariants/OptimismPortal.t.sol#L231)
    20  
    21  This invariant asserts that there is no chain of calls that can be made that will prevent a withdrawal from being finalized exactly `FINALIZATION_PERIOD_SECONDS` after it was successfully proven.