Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Loading...
Loading
Contract Name:
UpgradeArbOSVersionAction
Compiler Version
v0.8.16+commit.07a7930e
Optimization Enabled:
Yes with 20000 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: Apache-2.0
pragma solidity 0.8.16;
import "@arbitrum/nitro-contracts/src/precompiles/ArbOwner.sol";
/// @notice should be included in an operation batch in the L1 timelock along with SetWasmModuleRootAction
contract UpgradeArbOSVersionAction {
uint64 public immutable newArbOSVersion;
uint64 public immutable upgradeTimeDelaySeconds;
constructor(uint64 _newArbOSVersion, uint64 _upgradeTimeDelaySeconds) {
newArbOSVersion = _newArbOSVersion;
upgradeTimeDelaySeconds = _upgradeTimeDelaySeconds;
}
function perform() external {
ArbOwner arbOwner = ArbOwner(0x0000000000000000000000000000000000000070);
arbOwner.scheduleArbOSUpgrade({
newVersion: newArbOSVersion,
timestamp: uint64(block.timestamp) + upgradeTimeDelaySeconds
});
}
}// Copyright 2021-2022, Offchain Labs, Inc.
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
// SPDX-License-Identifier: BUSL-1.1
pragma solidity >=0.4.21 <0.9.0;
/// @title Provides owners with tools for managing the rollup.
/// @notice Calls by non-owners will always revert.
/// Most of Arbitrum Classic's owner methods have been removed since they no longer make sense in Nitro:
/// - What were once chain parameters are now parts of ArbOS's state, and those that remain are set at genesis.
/// - ArbOS upgrades happen with the rest of the system rather than being independent
/// - Exemptions to address aliasing are no longer offered. Exemptions were intended to support backward compatibility for contracts deployed before aliasing was introduced, but no exemptions were ever requested.
/// Precompiled contract that exists in every Arbitrum chain at 0x0000000000000000000000000000000000000070.
interface ArbOwner {
/// @notice Add account as a chain owner
function addChainOwner(address newOwner) external;
/// @notice Remove account from the list of chain owners
function removeChainOwner(address ownerToRemove) external;
/// @notice See if the user is a chain owner
function isChainOwner(address addr) external view returns (bool);
/// @notice Retrieves the list of chain owners
function getAllChainOwners() external view returns (address[] memory);
/// @notice Set how slowly ArbOS updates its estimate of the L1 basefee
function setL1BaseFeeEstimateInertia(uint64 inertia) external;
/// @notice Set the L2 basefee directly, bypassing the pool calculus
function setL2BaseFee(uint256 priceInWei) external;
/// @notice Set the minimum basefee needed for a transaction to succeed
function setMinimumL2BaseFee(uint256 priceInWei) external;
/// @notice Set the computational speed limit for the chain
function setSpeedLimit(uint64 limit) external;
/// @notice Set the maximum size a tx (and block) can be
function setMaxTxGasLimit(uint64 limit) external;
/// @notice Set the L2 gas pricing inertia
function setL2GasPricingInertia(uint64 sec) external;
/// @notice Set the L2 gas backlog tolerance
function setL2GasBacklogTolerance(uint64 sec) external;
/// @notice Get the network fee collector
function getNetworkFeeAccount() external view returns (address);
/// @notice Get the infrastructure fee collector
function getInfraFeeAccount() external view returns (address);
/// @notice Set the network fee collector
function setNetworkFeeAccount(address newNetworkFeeAccount) external;
/// @notice Set the infrastructure fee collector
function setInfraFeeAccount(address newInfraFeeAccount) external;
/// @notice Upgrades ArbOS to the requested version at the requested timestamp
function scheduleArbOSUpgrade(uint64 newVersion, uint64 timestamp) external;
/// @notice Sets equilibration units parameter for L1 price adjustment algorithm
function setL1PricingEquilibrationUnits(uint256 equilibrationUnits) external;
/// @notice Sets inertia parameter for L1 price adjustment algorithm
function setL1PricingInertia(uint64 inertia) external;
/// @notice Sets reward recipient address for L1 price adjustment algorithm
function setL1PricingRewardRecipient(address recipient) external;
/// @notice Sets reward amount for L1 price adjustment algorithm, in wei per unit
function setL1PricingRewardRate(uint64 weiPerUnit) external;
/// @notice Set how much ArbOS charges per L1 gas spent on transaction data.
function setL1PricePerUnit(uint256 pricePerUnit) external;
/// @notice Sets the base charge (in L1 gas) attributed to each data batch in the calldata pricer
function setPerBatchGasCharge(int64 cost) external;
/**
* @notice Sets the Brotli compression level used for fast compression
* Available in ArbOS version 12 with default level as 1
*/
function setBrotliCompressionLevel(uint64 level) external;
/// @notice Sets the cost amortization cap in basis points
function setAmortizedCostCapBips(uint64 cap) external;
/// @notice Releases surplus funds from L1PricerFundsPoolAddress for use
function releaseL1PricerSurplusFunds(uint256 maxWeiToRelease) external returns (uint256);
/// @notice Sets serialized chain config in ArbOS state
function setChainConfig(string calldata chainConfig) external;
// Emitted when a successful call is made to this precompile
event OwnerActs(bytes4 indexed method, address indexed owner, bytes data);
}{
"remappings": [
"forge-std/=lib/forge-std/src/",
"solady/=lib/solady/src/",
"@arbitrum/token-bridge-contracts/=node_modules/@arbitrum/token-bridge-contracts/",
"@arbitrum/nitro-contracts/=node_modules/@arbitrum/nitro-contracts/",
"@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/",
"@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/",
"@gnosis.pm/safe-contracts/=node_modules/@gnosis.pm/safe-contracts/",
"ds-test/=lib/forge-std/lib/ds-test/src/"
],
"optimizer": {
"enabled": true,
"runs": 20000
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs"
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "london",
"viaIR": false,
"libraries": {}
}Contract ABI
API[{"inputs":[{"internalType":"uint64","name":"_newArbOSVersion","type":"uint64"},{"internalType":"uint64","name":"_upgradeTimeDelaySeconds","type":"uint64"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"newArbOSVersion","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"perform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"upgradeTimeDelaySeconds","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60c060405234801561001057600080fd5b506040516102d33803806102d383398101604081905261002f91610062565b6001600160401b039182166080521660a052610095565b80516001600160401b038116811461005d57600080fd5b919050565b6000806040838503121561007557600080fd5b61007e83610046565b915061008c60208401610046565b90509250929050565b60805160a05161020f6100c4600039600081816099015260e9015260008181604b015260c5015261020f6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630959267e14610046578063b147f40c1461008a578063c0d1422f14610094575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff909116815260200160405180910390f35b6100926100bb565b005b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b60708063e388b3817f000000000000000000000000000000000000000000000000000000000000000061010e7f00000000000000000000000000000000000000000000000000000000000000004261018a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815267ffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b15801561016f57600080fd5b505af1158015610183573d6000803e3d6000fd5b5050505050565b67ffffffffffffffff8181168382160190808211156101d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b509291505056fea2646970667358221220cf6f2aef03921910a61131a69808af42d59d0d9655a9a888b38e6d3f6342061164736f6c6343000810003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630959267e14610046578063b147f40c1461008a578063c0d1422f14610094575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000002081565b60405167ffffffffffffffff909116815260200160405180910390f35b6100926100bb565b005b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b60708063e388b3817f000000000000000000000000000000000000000000000000000000000000002061010e7f00000000000000000000000000000000000000000000000000000000000000004261018a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815267ffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b15801561016f57600080fd5b505af1158015610183573d6000803e3d6000fd5b5050505050565b67ffffffffffffffff8181168382160190808211156101d2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b509291505056fea2646970667358221220cf6f2aef03921910a61131a69808af42d59d0d9655a9a888b38e6d3f6342061164736f6c63430008100033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _newArbOSVersion (uint64): 32
Arg [1] : _upgradeTimeDelaySeconds (uint64): 0
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.