Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions snapshots/semver-lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,10 @@
"initCodeHash": "0x3a82e248129d19764bb975bb79b48a982f077f33bb508480bf8d2ec1c0c9810d",
"sourceCodeHash": "0x955bd0c9b47e43219865e4e92abf28d916c96de20cbdf2f94c8ab14d02083759"
},
"src/revenue-share/FeeDisburser.sol:FeeDisburser": {
"initCodeHash": "0x32d40b0ba1476f3576f6edeb300583deb485134ebeb6b6a4d32dd4dea46b071c",
"sourceCodeHash": "0x9e25eb9eb75e642476e7b8b8799cada4d86a0a9548bc2c7ed997c2cb9722a313"
},
"src/safe/DeputyPauseModule.sol:DeputyPauseModule": {
"initCodeHash": "0x18422b48c4901ed6fd9338d76d3c5aecfff9a7add34b05c6e21c23d0011ed6bf",
"sourceCodeHash": "0xd15f4bb43e81a10317902cd8e27394581a59df2656b130727eb67543c985c72e"
Expand Down
8 changes: 5 additions & 3 deletions src/L1/SuperchainConfig.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import { ProxyAdminOwnedBase } from "src/L1/ProxyAdminOwnedBase.sol";
import { ISemver } from "interfaces/universal/ISemver.sol";

/// @custom:proxied true
/// @custom:audit none This contracts is not yet audited.
/// @title SuperchainConfig
/// @notice The SuperchainConfig contract is used to manage configuration of global superchain values.
/// @dev WARNING: When upgrading this contract, any active pause states will be lost as the pause state
Expand Down Expand Up @@ -43,7 +42,7 @@ contract SuperchainConfig is ProxyAdminOwnedBase, ISemver {
mapping(address => uint256) public pauseTimestamps;

/// @notice Emitted when the pause is triggered.
/// @param identifier A string helping to identify provenance of the pause transaction.
/// @param identifier An address helping to identify provenance of the pause transaction.
event Paused(address identifier);

/// @notice Emitted when the pause is lifted.
Expand Down Expand Up @@ -86,7 +85,10 @@ contract SuperchainConfig is ProxyAdminOwnedBase, ISemver {
_assertOnlyGuardianOrIncidentResponder();

// Cannot pause if the identifier is already paused to prevent re-pausing without either
// unpausing, extending, or resetting the pause timestamp.
// unpausing, extending, or resetting the pause timestamp. Note that this check intentionally
// prevents re-pausing even after a pause has expired (when paused() returns false but the
// timestamp is still non-zero). This is a Stage 1 Decentralization requirement: the guardian
// must explicitly unpause before pausing again, ensuring deliberate action is taken.
if (pauseTimestamps[_identifier] != 0) {
revert SuperchainConfig_AlreadyPaused(_identifier);
}
Expand Down
11 changes: 9 additions & 2 deletions src/revenue-share/FeeDisburser.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@ pragma solidity 0.8.25;

import { IL2StandardBridge } from "interfaces/L2/IL2StandardBridge.sol";
import { IFeeVault, Types } from "interfaces/L2/IFeeVault.sol";
import { ISemver } from "interfaces/universal/ISemver.sol";
import { Predeploys } from "src/libraries/Predeploys.sol";

/// @custom:proxied true
/// @title FeeDisburser
/// @notice Withdraws funds from system FeeVault contracts and bridges to L1.
contract FeeDisburser {
contract FeeDisburser is ISemver {
////////////////////////////////////////////////////////////////
/// Constants
////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -101,7 +103,7 @@ contract FeeDisburser {
function disburseFees() external virtual {
if (block.timestamp < lastDisbursementTime + FEE_DISBURSEMENT_INTERVAL) revert IntervalNotReached();

// Sequencer and base FeeVaults will withdraw fees to the FeeDisburser contract mutating netFeeRevenue
// Sequencer, base, and L1 FeeVaults will withdraw fees to the FeeDisburser contract.
_feeVaultWithdrawal(payable(Predeploys.SEQUENCER_FEE_WALLET));
_feeVaultWithdrawal(payable(Predeploys.BASE_FEE_VAULT));
_feeVaultWithdrawal(payable(Predeploys.L1_FEE_VAULT));
Expand Down Expand Up @@ -130,6 +132,11 @@ contract FeeDisburser {
emit FeesReceived(msg.sender, msg.value);
}

/// @custom:semver 1.0.0
function version() external pure virtual returns (string memory) {
return "1.0.0";
}

////////////////////////////////////////////////////////////////
/// Private Functions
////////////////////////////////////////////////////////////////
Expand Down