Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
12450437 | 254 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x10131E54...8b365C34e The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
DapiProxyWithOev
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 1000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./DapiProxy.sol"; import "./interfaces/IOevProxy.sol"; /// @title An immutable proxy contract that is used to read a specific dAPI of /// a specific Api3ServerV1 contract and inform Api3ServerV1 about the /// beneficiary of the respective OEV proceeds /// @notice In an effort to reduce the bytecode of this contract, its /// constructor arguments are validated by ProxyFactory, rather than /// internally. If you intend to deploy this contract without using /// ProxyFactory, you are recommended to implement an equivalent validation. /// @dev See DapiProxy.sol for comments about usage contract DapiProxyWithOev is DapiProxy, IOevProxy { /// @notice OEV beneficiary address address public immutable override oevBeneficiary; /// @param _api3ServerV1 Api3ServerV1 address /// @param _dapiNameHash Hash of the dAPI name /// @param _oevBeneficiary OEV beneficiary constructor( address _api3ServerV1, bytes32 _dapiNameHash, address _oevBeneficiary ) DapiProxy(_api3ServerV1, _dapiNameHash) { oevBeneficiary = _oevBeneficiary; } /// @notice Reads the dAPI that this proxy maps to /// @return value dAPI value /// @return timestamp dAPI timestamp function read() external view virtual override returns (int224 value, uint32 timestamp) { (value, timestamp) = IApi3ServerV1(api3ServerV1) .readDataFeedWithDapiNameHashAsOevProxy(dapiNameHash); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../../utils/interfaces/ISelfMulticall.sol"; interface IAccessControlRegistryAdminned is ISelfMulticall { function accessControlRegistry() external view returns (address); function adminRoleDescription() external view returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IAccessControlRegistryAdminned.sol"; interface IAccessControlRegistryAdminnedWithManager is IAccessControlRegistryAdminned { function manager() external view returns (address); function adminRole() external view returns (bytes32); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IOevDapiServer.sol"; import "./IBeaconUpdatesWithSignedData.sol"; interface IApi3ServerV1 is IOevDapiServer, IBeaconUpdatesWithSignedData { function readDataFeedWithId( bytes32 dataFeedId ) external view returns (int224 value, uint32 timestamp); function readDataFeedWithDapiNameHash( bytes32 dapiNameHash ) external view returns (int224 value, uint32 timestamp); function readDataFeedWithIdAsOevProxy( bytes32 dataFeedId ) external view returns (int224 value, uint32 timestamp); function readDataFeedWithDapiNameHashAsOevProxy( bytes32 dapiNameHash ) external view returns (int224 value, uint32 timestamp); function dataFeeds( bytes32 dataFeedId ) external view returns (int224 value, uint32 timestamp); function oevProxyToIdToDataFeed( address proxy, bytes32 dataFeedId ) external view returns (int224 value, uint32 timestamp); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IDataFeedServer.sol"; interface IBeaconUpdatesWithSignedData is IDataFeedServer { function updateBeaconWithSignedData( address airnode, bytes32 templateId, uint256 timestamp, bytes calldata data, bytes calldata signature ) external returns (bytes32 beaconId); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../../access-control-registry/interfaces/IAccessControlRegistryAdminnedWithManager.sol"; import "./IDataFeedServer.sol"; interface IDapiServer is IAccessControlRegistryAdminnedWithManager, IDataFeedServer { event SetDapiName( bytes32 indexed dataFeedId, bytes32 indexed dapiName, address sender ); function setDapiName(bytes32 dapiName, bytes32 dataFeedId) external; function dapiNameToDataFeedId( bytes32 dapiName ) external view returns (bytes32); // solhint-disable-next-line func-name-mixedcase function DAPI_NAME_SETTER_ROLE_DESCRIPTION() external view returns (string memory); function dapiNameSetterRole() external view returns (bytes32); function dapiNameHashToDataFeedId( bytes32 dapiNameHash ) external view returns (bytes32 dataFeedId); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../../utils/interfaces/IExtendedSelfMulticall.sol"; interface IDataFeedServer is IExtendedSelfMulticall { event UpdatedBeaconWithSignedData( bytes32 indexed beaconId, int224 value, uint32 timestamp ); event UpdatedBeaconSetWithBeacons( bytes32 indexed beaconSetId, int224 value, uint32 timestamp ); function updateBeaconSetWithBeacons( bytes32[] memory beaconIds ) external returns (bytes32 beaconSetId); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IOevDataFeedServer.sol"; import "./IDapiServer.sol"; interface IOevDapiServer is IOevDataFeedServer, IDapiServer {}
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IDataFeedServer.sol"; interface IOevDataFeedServer is IDataFeedServer { event UpdatedOevProxyBeaconWithSignedData( bytes32 indexed beaconId, address indexed proxy, bytes32 indexed updateId, int224 value, uint32 timestamp ); event UpdatedOevProxyBeaconSetWithSignedData( bytes32 indexed beaconSetId, address indexed proxy, bytes32 indexed updateId, int224 value, uint32 timestamp ); event Withdrew( address indexed oevProxy, address oevBeneficiary, uint256 amount ); function updateOevProxyDataFeedWithSignedData( address oevProxy, bytes32 dataFeedId, bytes32 updateId, uint256 timestamp, bytes calldata data, bytes[] calldata packedOevUpdateSignatures ) external payable; function withdraw(address oevProxy) external; function oevProxyToBalance( address oevProxy ) external view returns (uint256 balance); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./interfaces/IDapiProxy.sol"; import "../interfaces/IApi3ServerV1.sol"; /// @title An immutable proxy contract that is used to read a specific dAPI of /// a specific Api3ServerV1 contract /// @notice In an effort to reduce the bytecode of this contract, its /// constructor arguments are validated by ProxyFactory, rather than /// internally. If you intend to deploy this contract without using /// ProxyFactory, you are recommended to implement an equivalent validation. /// @dev The proxy contracts are generalized to support most types of numerical /// data feeds. This means that the user of this proxy is expected to validate /// the read values according to the specific use-case. For example, `value` is /// a signed integer, yet it being negative may not make sense in the case that /// the data feed represents the spot price of an asset. In that case, the user /// is responsible with ensuring that `value` is not negative. /// In the case that the data feed is from a single source, `timestamp` is the /// system time of the Airnode when it signed the data. In the case that the /// data feed is from multiple sources, `timestamp` is the median of system /// times of the Airnodes when they signed the respective data. There are two /// points to consider while using `timestamp` in your contract logic: (1) It /// is based on the system time of the Airnodes, and not the block timestamp. /// This may be relevant when either of them drifts. (2) `timestamp` is an /// off-chain value that is being reported, similar to `value`. Both should /// only be trusted as much as the Airnode(s) that report them. contract DapiProxy is IDapiProxy { /// @notice Api3ServerV1 address address public immutable override api3ServerV1; /// @notice Hash of the dAPI name bytes32 public immutable override dapiNameHash; /// @param _api3ServerV1 Api3ServerV1 address /// @param _dapiNameHash Hash of the dAPI name constructor(address _api3ServerV1, bytes32 _dapiNameHash) { api3ServerV1 = _api3ServerV1; dapiNameHash = _dapiNameHash; } /// @notice Reads the dAPI that this proxy maps to /// @return value dAPI value /// @return timestamp dAPI timestamp function read() external view virtual override returns (int224 value, uint32 timestamp) { (value, timestamp) = IApi3ServerV1(api3ServerV1) .readDataFeedWithDapiNameHash(dapiNameHash); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IProxy.sol"; interface IDapiProxy is IProxy { function dapiNameHash() external view returns (bytes32); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IOevProxy { function oevBeneficiary() external view returns (address); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /// @dev See DapiProxy.sol for comments about usage interface IProxy { function read() external view returns (int224 value, uint32 timestamp); function api3ServerV1() external view returns (address); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./ISelfMulticall.sol"; interface IExtendedSelfMulticall is ISelfMulticall { function getChainId() external view returns (uint256); function getBalance(address account) external view returns (uint256); function containsBytecode(address account) external view returns (bool); function getBlockNumber() external view returns (uint256); function getBlockTimestamp() external view returns (uint256); function getBlockBasefee() external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface ISelfMulticall { function multicall( bytes[] calldata data ) external returns (bytes[] memory returndata); function tryMulticall( bytes[] calldata data ) external returns (bool[] memory successes, bytes[] memory returndata); }
{ "optimizer": { "enabled": true, "runs": 1000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_api3ServerV1","type":"address"},{"internalType":"bytes32","name":"_dapiNameHash","type":"bytes32"},{"internalType":"address","name":"_oevBeneficiary","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"api3ServerV1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dapiNameHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oevBeneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"read","outputs":[{"internalType":"int224","name":"value","type":"int224"},{"internalType":"uint32","name":"timestamp","type":"uint32"}],"stateMutability":"view","type":"function"}]
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80630e15999d146100515780632d6a744e146100a257806357de26a4146100c9578063dcf8da92146100f0575b600080fd5b6100787f00000000000000000000000081bc85f329cdb28936fbb239f734ae495121f9a681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100787f000000000000000000000000709944a48caf83535e43471680fda4905fb3920a81565b6100d1610125565b60408051601b9390930b835263ffffffff909116602083015201610099565b6101177ff95a90733a8a0e87042f7ec04d5fd6349627d730d5920df0471d344e9b660d5081565b604051908152602001610099565b6040517f32be8f0b0000000000000000000000000000000000000000000000000000000081527ff95a90733a8a0e87042f7ec04d5fd6349627d730d5920df0471d344e9b660d506004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000709944a48caf83535e43471680fda4905fb3920a16906332be8f0b906024016040805180830381865afa1580156101d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f79190610200565b90939092509050565b6000806040838503121561021357600080fd5b825180601b0b811461022457600080fd5b602084015190925063ffffffff8116811461023e57600080fd5b80915050925092905056fea2646970667358221220165f090121acbfb6f16face0e037df12b601e08d2e0fd3fd3f5e021e053308ce64736f6c63430008110033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 29 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.