Source Code
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
StorageSetterRestricted
Compiler Version
v0.8.15+commit.e14f2714
Optimization Enabled:
Yes with 999999 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import { Storage } from "./Storage.sol";
/// @title StorageSetter
/// @notice A simple contract that only allows clearing slot 0.
/// WARNING: this contract is not safe to be called by untrusted parties.
/// It is only meant as an intermediate step during upgrades.
contract StorageSetterRestricted {
/// @notice Semantic version.
/// @custom:semver 1.2.1-beta.2
string public constant version = "1.2.1-beta.2";
/// @notice Stores a bytes32 `_value` at `_slot`. Any storage slots that
/// are packed should be set through this interface.
function clearSlotZero() public {
Storage.setBytes32(bytes32(uint256(0)), bytes32(uint256(0)));
}
/// @notice Retrieves a bytes32 value from `_slot`.
function getBytes32(bytes32 _slot) external view returns (bytes32 value_) {
value_ = Storage.getBytes32(_slot);
}
/// @notice Retrieves a uint256 value from `_slot`.
function getUint(bytes32 _slot) external view returns (uint256 value_) {
value_ = Storage.getUint(_slot);
}
/// @notice Retrieves an address value from `_slot`.
function getAddress(bytes32 _slot) external view returns (address addr_) {
addr_ = Storage.getAddress(_slot);
}
/// @notice Retrieves a bool value from `_slot`.
function getBool(bytes32 _slot) external view returns (bool value_) {
value_ = Storage.getBool(_slot);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/// @title Storage
/// @notice Storage handles reading and writing to arbitary storage locations
library Storage {
/// @notice Returns an address stored in an arbitrary storage slot.
/// These storage slots decouple the storage layout from
/// solc's automation.
/// @param _slot The storage slot to retrieve the address from.
function getAddress(bytes32 _slot) internal view returns (address addr_) {
assembly {
addr_ := sload(_slot)
}
}
/// @notice Stores an address in an arbitrary storage slot, `_slot`.
/// @param _slot The storage slot to store the address in.
/// @param _address The protocol version to store
/// @dev WARNING! This function must be used cautiously, as it allows for overwriting addresses
/// in arbitrary storage slots.
function setAddress(bytes32 _slot, address _address) internal {
assembly {
sstore(_slot, _address)
}
}
/// @notice Returns a uint256 stored in an arbitrary storage slot.
/// These storage slots decouple the storage layout from
/// solc's automation.
/// @param _slot The storage slot to retrieve the address from.
function getUint(bytes32 _slot) internal view returns (uint256 value_) {
assembly {
value_ := sload(_slot)
}
}
/// @notice Stores a value in an arbitrary storage slot, `_slot`.
/// @param _slot The storage slot to store the uint in.
/// @param _value The protocol version to store
/// @dev WARNING! This function must be used cautiously, as it allows for overwriting values
/// in arbitrary storage slots.
function setUint(bytes32 _slot, uint256 _value) internal {
assembly {
sstore(_slot, _value)
}
}
/// @notice Returns a bytes32 stored in an arbitrary storage slot.
/// These storage slots decouple the storage layout from
/// solc's automation.
/// @param _slot The storage slot to retrieve the address from.
function getBytes32(bytes32 _slot) internal view returns (bytes32 value_) {
assembly {
value_ := sload(_slot)
}
}
/// @notice Stores a bytes32 value in an arbitrary storage slot, `_slot`.
/// @param _slot The storage slot to store the address in.
/// @param _value The bytes32 value to store.
/// @dev WARNING! This function must be used cautiously, as it allows for overwriting values
/// in arbitrary storage slots.
function setBytes32(bytes32 _slot, bytes32 _value) internal {
assembly {
sstore(_slot, _value)
}
}
/// @notice Stores a bool value in an arbitrary storage slot, `_slot`.
/// @param _slot The storage slot to store the bool in.
/// @param _value The bool value to store
/// @dev WARNING! This function must be used cautiously, as it allows for overwriting values
/// in arbitrary storage slots.
function setBool(bytes32 _slot, bool _value) internal {
assembly {
sstore(_slot, _value)
}
}
/// @notice Returns a bool stored in an arbitrary storage slot.
/// @param _slot The storage slot to retrieve the bool from.
function getBool(bytes32 _slot) internal view returns (bool value_) {
assembly {
value_ := sload(_slot)
}
}
}{
"remappings": [
"frax-std/=lib/frax-standard-solidity/src/",
"@fraxtal/=lib/fraxtal/packages/",
"lib/fraxtal/packages/contracts-bedrock:src/=lib/fraxtal/packages/contracts-bedrock/src/",
"lib/fraxtal/packages/contracts-bedrock:test/=lib/fraxtal/packages/contracts-bedrock/test/",
"lib/fraxtal/packages/contracts-bedrock:scripts/=lib/fraxtal/packages/contracts-bedrock/scripts/",
"lib/fraxtal/packages/contracts-bedrock:@cwia/=lib/fraxtal/packages/contracts-bedrock/lib/clones-with-immutable-args/src/",
"lib/fraxtal/packages/contracts-bedrock:@openzeppelin/contracts-upgradeable/=lib/fraxtal/packages/contracts-bedrock/lib/openzeppelin-contracts-upgradeable/contracts/",
"lib/fraxtal/packages/contracts-bedrock:@openzeppelin/contracts/=lib/fraxtal/packages/contracts-bedrock/lib/openzeppelin-contracts/contracts/",
"lib/fraxtal/packages/contracts-bedrock:@rari-capital/solmate/=lib/fraxtal/packages/contracts-bedrock/lib/solmate/",
"lib/fraxtal/packages/contracts-bedrock:@lib-keccak/=lib/fraxtal/packages/contracts-bedrock/lib/lib-keccak/contracts/lib/",
"lib/fraxtal/packages/contracts-bedrock:@solady/=lib/fraxtal/packages/contracts-bedrock/lib/solady/src/",
"lib/fraxtal/packages/contracts-bedrock:solady/=lib/fraxtal/packages/contracts-bedrock/lib/solady/src/",
"lib/fraxtal/packages/contracts-bedrock:@solmate/=lib/fraxtal/packages/contracts-bedrock/lib/solmate/src/",
"lib/fraxtal/packages/contracts-bedrock:solmate/=lib/fraxtal/packages/contracts-bedrock/lib/solmate/src/",
"lib/fraxtal/packages/contracts-bedrock:forge-std/=lib/fraxtal/packages/contracts-bedrock/lib/forge-std/src/",
"lib/fraxtal/packages/contracts-bedrock:ds-test/=lib/fraxtal/packages/contracts-bedrock/lib/forge-std/lib/ds-test/src/",
"lib/fraxtal/packages/contracts-bedrock:safe-contracts/=lib/fraxtal/packages/contracts-bedrock/lib/safe-contracts/contracts/",
"lib/fraxtal/packages/contracts-bedrock:kontrol-cheatcodes/=lib/fraxtal/packages/contracts-bedrock/lib/kontrol-cheatcodes/src/",
"@eth-optimism/=lib/optimism/packages/",
"lib/optimism/packages/contracts-bedrock:src/=lib/optimism/packages/contracts-bedrock/src/",
"lib/optimism/packages/contracts-bedrock:test/=lib/optimism/packages/contracts-bedrock/test/",
"lib/optimism/packages/contracts-bedrock:scripts/=lib/optimism/packages/contracts-bedrock/scripts/",
"lib/optimism/packages/contracts-bedrock:@cwia/=lib/optimism/packages/contracts-bedrock/lib/clones-with-immutable-args/src/",
"lib/optimism/packages/contracts-bedrock:@openzeppelin/contracts-upgradeable/=lib/optimism/packages/contracts-bedrock/lib/openzeppelin-contracts-upgradeable/contracts/",
"lib/optimism/packages/contracts-bedrock:@openzeppelin/contracts/=lib/optimism/packages/contracts-bedrock/lib/openzeppelin-contracts/contracts/",
"lib/optimism/packages/contracts-bedrock:@rari-capital/solmate/=lib/optimism/packages/contracts-bedrock/lib/solmate/",
"lib/optimism/packages/contracts-bedrock:@lib-keccak/=lib/optimism/packages/contracts-bedrock/lib/lib-keccak/contracts/lib/",
"lib/optimism/packages/contracts-bedrock:@solady/=lib/optimism/packages/contracts-bedrock/lib/solady/src/",
"lib/optimism/packages/contracts-bedrock:solady/=lib/optimism/packages/contracts-bedrock/lib/solady/src/",
"lib/optimism/packages/contracts-bedrock:@solmate/=lib/optimism/packages/contracts-bedrock/lib/solmate/src/",
"lib/optimism/packages/contracts-bedrock:solmate/=lib/optimism/packages/contracts-bedrock/lib/solmate/src/",
"lib/optimism/packages/contracts-bedrock:forge-std/=lib/optimism/packages/contracts-bedrock/lib/forge-std/src/",
"lib/optimism/packages/contracts-bedrock:ds-test/=lib/optimism/packages/contracts-bedrock/lib/forge-std/lib/ds-test/src/",
"lib/optimism/packages/contracts-bedrock:safe-contracts/=lib/optimism/packages/contracts-bedrock/lib/safe-contracts/contracts/",
"lib/optimism/packages/contracts-bedrock:kontrol-cheatcodes/=lib/optimism/packages/contracts-bedrock/lib/kontrol-cheatcodes/src/",
"src/=src/",
"@chainlink/=lib/frax-standard-solidity/node_modules/@chainlink/",
"@openzeppelin-4/=node_modules/@openzeppelin-4/",
"@openzeppelin-5/=node_modules/@openzeppelin-5/",
"@openzeppelin/=node_modules/@openzeppelin/",
"@rari-capital/=node_modules/@rari-capital/",
"automate/=lib/fraxtal/packages/contracts-bedrock/lib/automate/contracts/",
"clones-with-immutable-args/=lib/optimism/packages/contracts-bedrock/lib/clones-with-immutable-args/src/",
"ds-test/=lib/frax-standard-solidity/lib/forge-std/lib/ds-test/src/",
"erc4626-tests/=lib/fraxtal/packages/contracts-bedrock/lib/openzeppelin-contracts-v5/lib/erc4626-tests/",
"forge-std/=lib/frax-standard-solidity/lib/forge-std/src/",
"frax-standard-solidity/=lib/frax-standard-solidity/src/",
"fraxtal/=lib/fraxtal/",
"kontrol-cheatcodes/=lib/fraxtal/packages/contracts-bedrock/lib/kontrol-cheatcodes/src/",
"lib-keccak/=lib/fraxtal/packages/contracts-bedrock/lib/lib-keccak/contracts/",
"openzeppelin-contracts-upgradeable/=lib/fraxtal/packages/contracts-bedrock/lib/openzeppelin-contracts-upgradeable/",
"openzeppelin-contracts-v5/=lib/fraxtal/packages/contracts-bedrock/lib/openzeppelin-contracts-v5/",
"openzeppelin-contracts/=lib/fraxtal/packages/contracts-bedrock/lib/openzeppelin-contracts/",
"optimism/=lib/optimism/",
"prb-test/=lib/fraxtal/packages/contracts-bedrock/lib/automate/lib/prb-test/src/",
"safe-contracts/=lib/fraxtal/packages/contracts-bedrock/lib/safe-contracts/contracts/",
"solady-v0.0.245/=lib/fraxtal/packages/contracts-bedrock/lib/solady-v0.0.245/src/",
"solady/=lib/fraxtal/packages/contracts-bedrock/lib/solady/",
"solidity-bytes-utils/=lib/frax-standard-solidity/lib/solidity-bytes-utils/",
"solmate/=lib/fraxtal/packages/contracts-bedrock/lib/solmate/src/"
],
"optimizer": {
"enabled": true,
"runs": 999999
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs"
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "london",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"name":"clearSlotZero","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_slot","type":"bytes32"}],"name":"getAddress","outputs":[{"internalType":"address","name":"addr_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_slot","type":"bytes32"}],"name":"getBool","outputs":[{"internalType":"bool","name":"value_","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_slot","type":"bytes32"}],"name":"getBytes32","outputs":[{"internalType":"bytes32","name":"value_","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_slot","type":"bytes32"}],"name":"getUint","outputs":[{"internalType":"uint256","name":"value_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b5061021e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806396a090791161005057806396a090791461011b578063a6ed563e14610125578063bd02d0f51461012557600080fd5b806321f8a7211461007757806354fd4d50146100b45780637ae1cfca146100fd575b600080fd5b61008a61008536600461015c565b610141565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f06040518060400160405280600c81526020017f312e322e312d626574612e32000000000000000000000000000000000000000081525081565b6040516100ab9190610175565b61010b61008536600461015c565b60405190151581526020016100ab565b610123610151565b005b61013361008536600461015c565b6040519081526020016100ab565b600061014b825490565b92915050565b61015a60008055565b565b60006020828403121561016e57600080fd5b5035919050565b600060208083528351808285015260005b818110156101a257858101830151858201604001528201610186565b818111156101b4576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201604001939250505056fea264697066735822122069c743ef3191c98ebe546897a9be607494e20fe02b0fa57e26f883fd2be310c264736f6c634300080f0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100725760003560e01c806396a090791161005057806396a090791461011b578063a6ed563e14610125578063bd02d0f51461012557600080fd5b806321f8a7211461007757806354fd4d50146100b45780637ae1cfca146100fd575b600080fd5b61008a61008536600461015c565b610141565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100f06040518060400160405280600c81526020017f312e322e312d626574612e32000000000000000000000000000000000000000081525081565b6040516100ab9190610175565b61010b61008536600461015c565b60405190151581526020016100ab565b610123610151565b005b61013361008536600461015c565b6040519081526020016100ab565b600061014b825490565b92915050565b61015a60008055565b565b60006020828403121561016e57600080fd5b5035919050565b600060208083528351808285015260005b818110156101a257858101830151858201604001528201610186565b818111156101b4576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201604001939250505056fea264697066735822122069c743ef3191c98ebe546897a9be607494e20fe02b0fa57e26f883fd2be310c264736f6c634300080f0033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in FRAX
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.