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:
PushOracleOwner
Compiler Version
v0.8.25+commit.b61c2a91
Optimization Enabled:
Yes with 200 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.8.13;
import {Owned} from "src/utils/Owned.sol";
interface IPushOracle {
function setPrice(
address base,
address quote,
uint256 bqPrice,
uint256 qbPrice
) external;
}
contract PushOracleOwner is Owned {
IPushOracle public oracle;
address public keeper;
event KeeperUpdated(address previous, address current);
error NotKeeperNorOwner();
constructor(address _oracle, address _owner) Owned(_owner) {
oracle = IPushOracle(_oracle);
}
function setPrice(
address base,
address quote,
uint256 bqPrice,
uint256 qbPrice
) external onlyKeeperOrOwner {
oracle.setPrice(base, quote, bqPrice, qbPrice);
}
function setKeeper(address _keeper) external onlyOwner {
emit KeeperUpdated(keeper, _keeper);
keeper = _keeper;
}
function acceptOracleOwnership() external onlyOwner {
Owned(address(oracle)).acceptOwnership();
}
modifier onlyKeeperOrOwner() {
if (msg.sender != owner && msg.sender != keeper)
revert NotKeeperNorOwner();
_;
}
}// SPDX-License-Identifier: GPL-3.0
// Docgen-SOLC: 0.8.25
pragma solidity ^0.8.25;
// https://docs.synthetix.io/contracts/source/contracts/owned
contract Owned {
address public owner;
address public nominatedOwner;
constructor(address _owner) {
require(_owner != address(0), "Owner address cannot be 0");
owner = _owner;
emit OwnerChanged(address(0), _owner);
}
function nominateNewOwner(address _owner) external virtual onlyOwner {
nominatedOwner = _owner;
emit OwnerNominated(_owner);
}
function acceptOwnership() external virtual {
require(msg.sender == nominatedOwner, "You must be nominated before you can accept ownership");
emit OwnerChanged(owner, nominatedOwner);
owner = nominatedOwner;
nominatedOwner = address(0);
}
modifier onlyOwner() {
_onlyOwner();
_;
}
function _onlyOwner() private view {
require(msg.sender == owner, "Only the contract owner may perform this action");
}
event OwnerNominated(address newOwner);
event OwnerChanged(address oldOwner, address newOwner);
}{
"remappings": [
"ds-test/=lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",
"openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"solmate/=lib/solmate/src/",
"solady/=lib/solady/src/",
"@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"ERC-7540-Reference/=lib/ERC-7540-Reference/src/",
"erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
"safe-smart-account/=lib/safe-smart-account/",
"v3-core/=lib/v3-core/",
"v3-periphery/=lib/v3-periphery/contracts/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "shanghai",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_oracle","type":"address"},{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotKeeperNorOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previous","type":"address"},{"indexed":false,"internalType":"address","name":"current","type":"address"}],"name":"KeeperUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"inputs":[],"name":"acceptOracleOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"keeper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracle","outputs":[{"internalType":"contract IPushOracle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_keeper","type":"address"}],"name":"setKeeper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"base","type":"address"},{"internalType":"address","name":"quote","type":"address"},{"internalType":"uint256","name":"bqPrice","type":"uint256"},{"internalType":"uint256","name":"qbPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561000f575f80fd5b506040516106a73803806106a783398101604081905261002e91610121565b806001600160a01b0381166100895760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015260640160405180910390fd5b5f80546001600160a01b0319166001600160a01b03831690811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a15050600280546001600160a01b0319166001600160a01b0392909216919091179055610152565b80516001600160a01b038116811461011c575f80fd5b919050565b5f8060408385031215610132575f80fd5b61013b83610106565b915061014960208401610106565b90509250929050565b6105488061015f5f395ff3fe608060405234801561000f575f80fd5b5060043610610090575f3560e01c80637dc0d1d0116100635780637dc0d1d0146100f35780638da5cb5b14610106578063a405d31214610118578063aced16611461012b578063fd5835d01461013e575f80fd5b80631627540c1461009457806353a47bb7146100a9578063748747e6146100d857806379ba5097146100eb575b5f80fd5b6100a76100a23660046104b3565b610146565b005b6001546100bc906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6100a76100e63660046104b3565b6101a2565b6100a7610213565b6002546100bc906001600160a01b031681565b5f546100bc906001600160a01b031681565b6100a76101263660046104d3565b610300565b6003546100bc906001600160a01b031681565b6100a76103b9565b61014e610425565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b6101aa610425565b600354604080516001600160a01b03928316815291831660208301527f53d3703fe259def57584466f32d1b94c30278008c683c21b04501c4966f13a69910160405180910390a1600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146102905760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b60648201526084015b60405180910390fd5b5f54600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a1600180545f80546001600160a01b03199081166001600160a01b03841617909155169055565b5f546001600160a01b0316331480159061032557506003546001600160a01b03163314155b156103435760405163c6764d6d60e01b815260040160405180910390fd5b600254604051635202e98960e11b81526001600160a01b038681166004830152858116602483015260448201859052606482018490529091169063a405d312906084015f604051808303815f87803b15801561039d575f80fd5b505af11580156103af573d5f803e3d5ffd5b5050505050505050565b6103c1610425565b60025f9054906101000a90046001600160a01b03166001600160a01b03166379ba50976040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561040d575f80fd5b505af115801561041f573d5f803e3d5ffd5b50505050565b5f546001600160a01b031633146104965760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610287565b565b80356001600160a01b03811681146104ae575f80fd5b919050565b5f602082840312156104c3575f80fd5b6104cc82610498565b9392505050565b5f805f80608085870312156104e6575f80fd5b6104ef85610498565b93506104fd60208601610498565b9396939550505050604082013591606001359056fea26469706673582212207dfdc690ae7fdc90c851fb8b4c098aa88f99423eb97044d0d3ba19fa8e2f596564736f6c63430008190033000000000000000000000000e8f047dc264d62288bf16a0ad7ff158ddfd149130000000000000000000000002c3b135cd7dc6c673b358bef214843dab3464278
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610090575f3560e01c80637dc0d1d0116100635780637dc0d1d0146100f35780638da5cb5b14610106578063a405d31214610118578063aced16611461012b578063fd5835d01461013e575f80fd5b80631627540c1461009457806353a47bb7146100a9578063748747e6146100d857806379ba5097146100eb575b5f80fd5b6100a76100a23660046104b3565b610146565b005b6001546100bc906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6100a76100e63660046104b3565b6101a2565b6100a7610213565b6002546100bc906001600160a01b031681565b5f546100bc906001600160a01b031681565b6100a76101263660046104d3565b610300565b6003546100bc906001600160a01b031681565b6100a76103b9565b61014e610425565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b6101aa610425565b600354604080516001600160a01b03928316815291831660208301527f53d3703fe259def57584466f32d1b94c30278008c683c21b04501c4966f13a69910160405180910390a1600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146102905760405162461bcd60e51b815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527402063616e20616363657074206f776e65727368697605c1b60648201526084015b60405180910390fd5b5f54600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a1600180545f80546001600160a01b03199081166001600160a01b03841617909155169055565b5f546001600160a01b0316331480159061032557506003546001600160a01b03163314155b156103435760405163c6764d6d60e01b815260040160405180910390fd5b600254604051635202e98960e11b81526001600160a01b038681166004830152858116602483015260448201859052606482018490529091169063a405d312906084015f604051808303815f87803b15801561039d575f80fd5b505af11580156103af573d5f803e3d5ffd5b5050505050505050565b6103c1610425565b60025f9054906101000a90046001600160a01b03166001600160a01b03166379ba50976040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561040d575f80fd5b505af115801561041f573d5f803e3d5ffd5b50505050565b5f546001600160a01b031633146104965760405162461bcd60e51b815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201526e37b936903a3434b99030b1ba34b7b760891b6064820152608401610287565b565b80356001600160a01b03811681146104ae575f80fd5b919050565b5f602082840312156104c3575f80fd5b6104cc82610498565b9392505050565b5f805f80608085870312156104e6575f80fd5b6104ef85610498565b93506104fd60208601610498565b9396939550505050604082013591606001359056fea26469706673582212207dfdc690ae7fdc90c851fb8b4c098aa88f99423eb97044d0d3ba19fa8e2f596564736f6c63430008190033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000e8f047dc264d62288bf16a0ad7ff158ddfd149130000000000000000000000002c3b135cd7dc6c673b358bef214843dab3464278
-----Decoded View---------------
Arg [0] : _oracle (address): 0xe8f047DC264D62288BF16a0aD7Ff158ddfd14913
Arg [1] : _owner (address): 0x2C3B135cd7dc6C673b358BEF214843DAb3464278
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000e8f047dc264d62288bf16a0ad7ff158ddfd14913
Arg [1] : 0000000000000000000000002c3b135cd7dc6c673b358bef214843dab3464278
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.