Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 19 from a total of 19 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Set Guardian | 19245000 | 744 days ago | IN | 0 ETH | 0.00101307 | ||||
| Set Address | 19244991 | 744 days ago | IN | 0 ETH | 0.00102832 | ||||
| Set Address | 19244957 | 744 days ago | IN | 0 ETH | 0.00065212 | ||||
| Confirm Guardian | 19244951 | 744 days ago | IN | 0 ETH | 0.00047878 | ||||
| Set Guardian | 19158037 | 757 days ago | IN | 0 ETH | 0.00101307 | ||||
| Set Address | 19158035 | 757 days ago | IN | 0 ETH | 0.00102832 | ||||
| Set Address | 19158033 | 757 days ago | IN | 0 ETH | 0.00102832 | ||||
| Set Address | 19158031 | 757 days ago | IN | 0 ETH | 0.00102832 | ||||
| Set Address | 19158029 | 757 days ago | IN | 0 ETH | 0.00102806 | ||||
| Set Address | 19158027 | 757 days ago | IN | 0 ETH | 0.00102832 | ||||
| Set Address | 19158025 | 757 days ago | IN | 0 ETH | 0.00102832 | ||||
| Set Address | 19158023 | 757 days ago | IN | 0 ETH | 0.00102832 | ||||
| Set Address | 19158017 | 757 days ago | IN | 0 ETH | 0.00102832 | ||||
| Set Address | 19158015 | 757 days ago | IN | 0 ETH | 0.00102832 | ||||
| Set Address | 19158012 | 757 days ago | IN | 0 ETH | 0.00102832 | ||||
| Set Address | 19158011 | 757 days ago | IN | 0 ETH | 0.001027 | ||||
| Set Address | 19158010 | 757 days ago | IN | 0 ETH | 0.00102726 | ||||
| Set Address | 19158009 | 757 days ago | IN | 0 ETH | 0.00102832 | ||||
| Set Address | 19158008 | 757 days ago | IN | 0 ETH | 0.00102832 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
FrensStorage
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity 0.8.20;
// SPDX-License-Identifier: GPL-3.0-only
/// @title The primary persistent storage for Frens Staking Pools
/// @author modified 04-Dec-2022 by 0xWildhare originally by David Rugendyke (h/t David and Rocket Pool!)
/// @dev this code is modified from the Rocket Pool RocketStorage contract all "Rocket" replaced with "Frens" - everything not used by frens has beed removed.
import "./interfaces/IFrensStorage.sol";
contract FrensStorage is IFrensStorage{
// Events
event GuardianChanged(address oldGuardian, address newGuardian);
// Storage maps
mapping(bytes32 => uint256) private uintStorage;
mapping(bytes32 => address) private addressStorage;
mapping(bytes32 => bool) private booleanStorage;
// Guardian address
address guardian;
address newGuardian;
/**
* @dev Throws if called by any account other than a guardian account (temporary account allowed access to settings before DAO is fully enabled)
*/
modifier onlyGuardian() {
require(msg.sender == guardian, "Account is not a guardian");
_;
}
/// @dev Construct FrensStorage
constructor() {
// Set the guardian upon deployment
guardian = msg.sender;
}
// Get guardian address
function getGuardian() external override view returns (address) {
return guardian;
}
// Transfers guardianship to a new address
function setGuardian(address _newAddress) external override onlyGuardian{
// Store new address awaiting confirmation
newGuardian = _newAddress;
}
// Confirms change of guardian
function confirmGuardian() external override {
// Check tx came from new guardian address
require(msg.sender == newGuardian, "Confirmation must come from new guardian address");
// Store old guardian for event
address oldGuardian = guardian;
// Update guardian and clear storage
guardian = newGuardian;
delete newGuardian;
// Emit event
emit GuardianChanged(oldGuardian, guardian);
}
// Confirms burning guardianship
function burnKeys() external override onlyGuardian{
// Check that new guardian has been set to zero address (are you sure?)
require(address(0) == newGuardian, "must set guardian to 0x00 first");
// Store old guardian for event
address oldGuardian = guardian;
// delete guardian
delete guardian;
// Emit event
emit GuardianChanged(oldGuardian, guardian);
}
/// @param _key The key for the record
function getAddress(bytes32 _key) override external view returns (address r) {
return addressStorage[_key];
}
/// @param _key The key for the record
function getUint(bytes32 _key) override external view returns (uint256 r) {
return uintStorage[_key];
}
/// @param _key The key for the record
function getBool(bytes32 _key) override external view returns (bool r) {
return booleanStorage[_key];
}
/// @param _key The key for the record
function setAddress(bytes32 _key, address _value) onlyGuardian override external {
addressStorage[_key] = _value;
}
/*
/// @param _key The key for the record
function setAddress(string memory _key, address _value) external {
bytes32 key = keccak256(abi.encodePacked(_key, msg.sender));
addressStorage[key] = _value;
}
*/
/// @param _key The key for the record
function setUint(bytes32 _key, uint _value) onlyGuardian override external {
uintStorage[_key] = _value;
}
/// @param _key The key for the record
function setBool(bytes32 _key, bool _value) onlyGuardian override external {
booleanStorage[_key] = _value;
}
/// @param _key The key for the record
function deleteAddress(bytes32 _key) onlyGuardian override external {
delete addressStorage[_key];
}
/// @param _key The key for the record - added for Frens ~ 0xWildhare
function deleteUint(bytes32 _key) onlyGuardian override external {
delete uintStorage[_key];
}
/// @param _key The key for the record
function deleteBool(bytes32 _key) onlyGuardian override external {
delete booleanStorage[_key];
}
/// @param _key The key for the record
/// @param _amount An amount to add to the record's value - 0xWildhare removed safeMath
function addUint(bytes32 _key, uint256 _amount) onlyGuardian override external {
uintStorage[_key] += _amount;
}
/// @param _key The key for the record
/// @param _amount An amount to subtract from the record's value - 0xWildhare removed safeMath
function subUint(bytes32 _key, uint256 _amount) onlyGuardian override external {
uintStorage[_key] -= _amount;
}
}pragma solidity 0.8.20;
// SPDX-License-Identifier: GPL-3.0-only
//modified from IRocketStorage on 03/12/2022 by 0xWildhare
interface IFrensStorage {
// Guardian
function getGuardian() external view returns(address);
function setGuardian(address _newAddress) external;
function confirmGuardian() external;
function burnKeys() external;
// Getters
function getAddress(bytes32 _key) external view returns (address);
function getUint(bytes32 _key) external view returns (uint);
function getBool(bytes32 _key) external view returns (bool);
// Setters
function setAddress(bytes32 _key, address _value) external;
function setUint(bytes32 _key, uint _value) external;
function setBool(bytes32 _key, bool _value) external;
// Deleters
function deleteAddress(bytes32 _key) external;
function deleteUint(bytes32 _key) external;
function deleteBool(bytes32 _key) external;
// Arithmetic
function addUint(bytes32 _key, uint256 _amount) external;
function subUint(bytes32 _key, uint256 _amount) external;
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"viaIR": true,
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldGuardian","type":"address"},{"indexed":false,"internalType":"address","name":"newGuardian","type":"address"}],"name":"GuardianChanged","type":"event"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"addUint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnKeys","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"confirmGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"deleteAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"deleteBool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"deleteUint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"getAddress","outputs":[{"internalType":"address","name":"r","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"getBool","outputs":[{"internalType":"bool","name":"r","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGuardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"getUint","outputs":[{"internalType":"uint256","name":"r","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"address","name":"_value","type":"address"}],"name":"setAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"setBool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"setGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setUint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"subUint","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6080806040523461002857600380546001600160a01b03191633179055610620908161002d8239f35b5f80fdfe60406080815260049081361015610014575f80fd5b5f91823560e01c80630e14a376146105425780631e0ea61e1461046b57806321f8a721146104395780632c62ff2d146103fd57806367a6a9171461033d5780637ae1cfca146103115780638a0dac4a146102c8578063a75b87d21461029f578063abfdcced1461024c578063adb353dc1461020c578063bd02d0f5146101e6578063ca446dd91461018c578063e2a4853a1461015557838163e2b202bf1461011b575063ebb9d8c9146100c5575f80fd5b34610117576100d336610584565b92906100ea60018060a01b0360035416331461059e565b845283602052832090815492830392831161010457505580f35b634e487b7160e01b845260119052602483fd5b8280fd5b808484346101515760203660031901126101515761014460018060a01b0360035416331461059e565b3582528160205281205580f35b5050fd5b5050346101885761016536610584565b919061017c60018060a01b0360035416331461059e565b83528260205282205580f35b5080fd5b5090346101175780600319360112610117576024356001600160a01b0381811693918490036101e2576101c49060035416331461059e565b3583526001602052822080546001600160a01b031916909117905580f35b8480fd5b503461011757602036600319011261011757602092829135815280845220549051908152f35b50346101175761021b36610584565b929061023260018060a01b0360035416331461059e565b845283602052832090815492830180931161010457505580f35b5090346101175780600319360112610117576024359182151580930361029b5761028160018060a01b0360035416331461059e565b358352600260205282209060ff8019835416911617905580f35b8380fd5b50503461018857816003193601126101885760035490516001600160a01b039091168152602090f35b8382346101885760203660031901126101885780356001600160a01b038181169182900361029b576102ff9060035416331461059e565b81546001600160a01b03191617905580f35b5034610117576020366003190112610117578160209360ff923581526002855220541690519015158152f35b50919034610188578160031936011261018857600354926001600160a01b03808516919061036c33841461059e565b8154166103ba57507fa14fc14d8620a708a896fd11392a235647d99385500a295f0d7da2a258b2e96792936bffffffffffffffffffffffff60a01b166003558151908152836020820152a180f35b606490602084519162461bcd60e51b8352820152601f60248201527f6d7573742073657420677561726469616e20746f2030783030206669727374006044820152fd5b50346101175760203660031901126101175761042460018060a01b0360035416331461059e565b35825260026020528120805460ff1916905580f35b50346101175760203660031901126101175735825260016020908152918190205490516001600160a01b039091168152f35b5091903461018857816003193601126101885782546001600160a01b0380821690338290036104e6577fa14fc14d8620a708a896fd11392a235647d99385500a295f0d7da2a258b2e9679495600354936bffffffffffffffffffffffff60a01b9084828716176003551690558351921682526020820152a180f35b835162461bcd60e51b8152602081880152603060248201527f436f6e6669726d6174696f6e206d75737420636f6d652066726f6d206e65772060448201526f677561726469616e206164647265737360801b6064820152608490fd5b50346101175760203660031901126101175761056960018060a01b0360035416331461059e565b3582526001602052812080546001600160a01b031916905580f35b604090600319011261059a576004359060243590565b5f80fd5b156105a557565b60405162461bcd60e51b815260206004820152601960248201527f4163636f756e74206973206e6f74206120677561726469616e000000000000006044820152606490fdfea2646970667358221220e272679208f01687a2dd00daf3273c1236d6dd25fc9ed4d1aac46bcb6612f7c764736f6c63430008140033
Deployed Bytecode
0x60406080815260049081361015610014575f80fd5b5f91823560e01c80630e14a376146105425780631e0ea61e1461046b57806321f8a721146104395780632c62ff2d146103fd57806367a6a9171461033d5780637ae1cfca146103115780638a0dac4a146102c8578063a75b87d21461029f578063abfdcced1461024c578063adb353dc1461020c578063bd02d0f5146101e6578063ca446dd91461018c578063e2a4853a1461015557838163e2b202bf1461011b575063ebb9d8c9146100c5575f80fd5b34610117576100d336610584565b92906100ea60018060a01b0360035416331461059e565b845283602052832090815492830392831161010457505580f35b634e487b7160e01b845260119052602483fd5b8280fd5b808484346101515760203660031901126101515761014460018060a01b0360035416331461059e565b3582528160205281205580f35b5050fd5b5050346101885761016536610584565b919061017c60018060a01b0360035416331461059e565b83528260205282205580f35b5080fd5b5090346101175780600319360112610117576024356001600160a01b0381811693918490036101e2576101c49060035416331461059e565b3583526001602052822080546001600160a01b031916909117905580f35b8480fd5b503461011757602036600319011261011757602092829135815280845220549051908152f35b50346101175761021b36610584565b929061023260018060a01b0360035416331461059e565b845283602052832090815492830180931161010457505580f35b5090346101175780600319360112610117576024359182151580930361029b5761028160018060a01b0360035416331461059e565b358352600260205282209060ff8019835416911617905580f35b8380fd5b50503461018857816003193601126101885760035490516001600160a01b039091168152602090f35b8382346101885760203660031901126101885780356001600160a01b038181169182900361029b576102ff9060035416331461059e565b81546001600160a01b03191617905580f35b5034610117576020366003190112610117578160209360ff923581526002855220541690519015158152f35b50919034610188578160031936011261018857600354926001600160a01b03808516919061036c33841461059e565b8154166103ba57507fa14fc14d8620a708a896fd11392a235647d99385500a295f0d7da2a258b2e96792936bffffffffffffffffffffffff60a01b166003558151908152836020820152a180f35b606490602084519162461bcd60e51b8352820152601f60248201527f6d7573742073657420677561726469616e20746f2030783030206669727374006044820152fd5b50346101175760203660031901126101175761042460018060a01b0360035416331461059e565b35825260026020528120805460ff1916905580f35b50346101175760203660031901126101175735825260016020908152918190205490516001600160a01b039091168152f35b5091903461018857816003193601126101885782546001600160a01b0380821690338290036104e6577fa14fc14d8620a708a896fd11392a235647d99385500a295f0d7da2a258b2e9679495600354936bffffffffffffffffffffffff60a01b9084828716176003551690558351921682526020820152a180f35b835162461bcd60e51b8152602081880152603060248201527f436f6e6669726d6174696f6e206d75737420636f6d652066726f6d206e65772060448201526f677561726469616e206164647265737360801b6064820152608490fd5b50346101175760203660031901126101175761056960018060a01b0360035416331461059e565b3582526001602052812080546001600160a01b031916905580f35b604090600319011261059a576004359060243590565b5f80fd5b156105a557565b60405162461bcd60e51b815260206004820152601960248201527f4163636f756e74206973206e6f74206120677561726469616e000000000000006044820152606490fdfea2646970667358221220e272679208f01687a2dd00daf3273c1236d6dd25fc9ed4d1aac46bcb6612f7c764736f6c63430008140033
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
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.