Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
119387187 | 416 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ActionStorageV4
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.17; import "../interfaces/IPActionStorageV4.sol"; import "./RouterStorage.sol"; contract ActionStorageV4 is RouterStorage, IPActionStorageV4 { modifier onlyOwner() { require(msg.sender == owner(), "Ownable: caller is not the owner"); _; } function owner() public view returns (address) { return _getCoreStorage().owner; } function pendingOwner() public view returns (address) { return _getCoreStorage().pendingOwner; } function setSelectorToFacets(SelectorsToFacet[] calldata arr) external onlyOwner { CoreStorage storage $ = _getCoreStorage(); for (uint256 i = 0; i < arr.length; i++) { SelectorsToFacet memory s = arr[i]; for (uint256 j = 0; j < s.selectors.length; j++) { $.selectorToFacet[s.selectors[j]] = s.facet; emit SelectorToFacetSet(s.selectors[j], s.facet); } } } function selectorToFacet(bytes4 selector) external view returns (address) { CoreStorage storage $ = _getCoreStorage(); return $.selectorToFacet[selector]; } // Ownable function transferOwnership(address newOwner, bool direct, bool renounce) external onlyOwner { CoreStorage storage $ = _getCoreStorage(); if (direct) { require(newOwner != address(0) || renounce, "Ownable: zero address"); emit OwnershipTransferred($.owner, newOwner); $.owner = newOwner; $.pendingOwner = address(0); } else { $.pendingOwner = newOwner; } } function claimOwnership() external { CoreStorage storage $ = _getCoreStorage(); address _pendingOwner = $.pendingOwner; require(msg.sender == _pendingOwner, "Ownable: caller != pending owner"); emit OwnershipTransferred($.owner, _pendingOwner); $.owner = _pendingOwner; $.pendingOwner = address(0); } }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.0; interface IPActionStorageV4 { struct SelectorsToFacet { address facet; bytes4[] selectors; } event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event SelectorToFacetSet(bytes4 indexed selector, address indexed facet); function owner() external view returns (address); function pendingOwner() external view returns (address); function transferOwnership(address newOwner, bool direct, bool renounce) external; function claimOwnership() external; function setSelectorToFacets(SelectorsToFacet[] calldata arr) external; function selectorToFacet(bytes4 selector) external view returns (address); }
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.17; abstract contract RouterStorage { struct CoreStorage { address owner; address pendingOwner; mapping(bytes4 => address) selectorToFacet; } // keccak256(abi.encode(uint256(keccak256("pendle.routerv4.Core")) - 1)) & ~bytes32(uint256(0xff)) bytes32 private constant CORE_STORAGE_LOCATION = 0xf168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab800; function _getCoreStorage() internal pure returns (CoreStorage storage $) { assembly { $.slot := CORE_STORAGE_LOCATION } } }
{ "optimizer": { "enabled": true, "runs": 1000000 }, "viaIR": true, "evmVersion": "shanghai", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":true,"internalType":"address","name":"facet","type":"address"}],"name":"SelectorToFacetSet","type":"event"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"selectorToFacet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"facet","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"internalType":"struct IPActionStorageV4.SelectorsToFacet[]","name":"arr","type":"tuple[]"}],"name":"setSelectorToFacets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"},{"internalType":"bool","name":"direct","type":"bool"},{"internalType":"bool","name":"renounce","type":"bool"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60808060405234610016576109b4908161001b8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063078dfbe7146106f95780634e71e0c8146105b25780638da5cb5b14610542578063a47dbf8214610176578063ae7473ac146100cf5763e30c39781461005b575f80fd5b346100cb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100cb57602073ffffffffffffffffffffffffffffffffffffffff7ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab8015416604051908152f35b5f80fd5b346100cb5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100cb576004357fffffffff0000000000000000000000000000000000000000000000000000000081168091036100cb575f527ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab802602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b346100cb576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100cb5767ffffffffffffffff600435116100cb573660236004350112156100cb5767ffffffffffffffff60043560040135116100cb573660246004356004013560051b6004350101116100cb5761023273ffffffffffffffffffffffffffffffffffffffff7ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab800541633146108d8565b5f905b60043560040135821061024457005b60248260051b6004350101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9d6004353603018112156100cb576004350160407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82360301126100cb57604051906040820182811067ffffffffffffffff82111761051557604052602481013573ffffffffffffffffffffffffffffffffffffffff811681036100cb578252604481013567ffffffffffffffff81116100cb573660438284010112156100cb5767ffffffffffffffff6024828401013511610515576040519167ffffffffffffffff8282016024013560051b603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016840190811190841117610515578082016024810135600581901b603f81017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168601604052908552016044019185840191903684116100cb5701604401905b8282106104dd575050508282019081525f5b815180518210156104cf578160019692879273ffffffffffffffffffffffffffffffffffffffff8751169061042a7fffffffff0000000000000000000000000000000000000000000000000000000093849261093d565b51165f527ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab802885260405f20907fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905561048882865161093d565b511673ffffffffffffffffffffffffffffffffffffffff865116907e38aaccfeca40ea50135fcc37980765ee22033e320eaf575624561bdbbe93005f80a3019094506103d3565b505050509060010190610235565b81357fffffffff00000000000000000000000000000000000000000000000000000000811681036100cb5781529085019085016103c1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b346100cb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100cb57602073ffffffffffffffffffffffffffffffffffffffff7ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab8005416604051908152f35b346100cb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100cb577ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab801805473ffffffffffffffffffffffffffffffffffffffff9081811680330361069b577ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab800908082549485167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a37fffffffffffffffffffffffff0000000000000000000000000000000000000000938416179055169055005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346100cb5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100cb5760043573ffffffffffffffffffffffffffffffffffffffff908181168091036100cb576024359081151582036100cb5760443580151581036100cb577ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab800926107948585541633146108d8565b1561088b57811590811591610883575b5015610825578082549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a37fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790557ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab80180549091169055005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b9050846107a4565b507ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab80180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055005b156108df57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b80518210156109515760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220ff9e11393dd79e3f2c34e356573dc93fbc86ec74763402d43c814d6e59b7e0a864736f6c63430008180033
Deployed Bytecode
0x60806040526004361015610011575f80fd5b5f3560e01c8063078dfbe7146106f95780634e71e0c8146105b25780638da5cb5b14610542578063a47dbf8214610176578063ae7473ac146100cf5763e30c39781461005b575f80fd5b346100cb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100cb57602073ffffffffffffffffffffffffffffffffffffffff7ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab8015416604051908152f35b5f80fd5b346100cb5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100cb576004357fffffffff0000000000000000000000000000000000000000000000000000000081168091036100cb575f527ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab802602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b346100cb576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100cb5767ffffffffffffffff600435116100cb573660236004350112156100cb5767ffffffffffffffff60043560040135116100cb573660246004356004013560051b6004350101116100cb5761023273ffffffffffffffffffffffffffffffffffffffff7ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab800541633146108d8565b5f905b60043560040135821061024457005b60248260051b6004350101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9d6004353603018112156100cb576004350160407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82360301126100cb57604051906040820182811067ffffffffffffffff82111761051557604052602481013573ffffffffffffffffffffffffffffffffffffffff811681036100cb578252604481013567ffffffffffffffff81116100cb573660438284010112156100cb5767ffffffffffffffff6024828401013511610515576040519167ffffffffffffffff8282016024013560051b603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016840190811190841117610515578082016024810135600581901b603f81017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168601604052908552016044019185840191903684116100cb5701604401905b8282106104dd575050508282019081525f5b815180518210156104cf578160019692879273ffffffffffffffffffffffffffffffffffffffff8751169061042a7fffffffff0000000000000000000000000000000000000000000000000000000093849261093d565b51165f527ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab802885260405f20907fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905561048882865161093d565b511673ffffffffffffffffffffffffffffffffffffffff865116907e38aaccfeca40ea50135fcc37980765ee22033e320eaf575624561bdbbe93005f80a3019094506103d3565b505050509060010190610235565b81357fffffffff00000000000000000000000000000000000000000000000000000000811681036100cb5781529085019085016103c1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b346100cb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100cb57602073ffffffffffffffffffffffffffffffffffffffff7ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab8005416604051908152f35b346100cb575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100cb577ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab801805473ffffffffffffffffffffffffffffffffffffffff9081811680330361069b577ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab800908082549485167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a37fffffffffffffffffffffffff0000000000000000000000000000000000000000938416179055169055005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b346100cb5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100cb5760043573ffffffffffffffffffffffffffffffffffffffff908181168091036100cb576024359081151582036100cb5760443580151581036100cb577ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab800926107948585541633146108d8565b1561088b57811590811591610883575b5015610825578082549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a37fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790557ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab80180549091169055005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b9050846107a4565b507ff168c5b0cb4aca9a68f931815c18a144c61ad01d6dd7ca15bd6741672a0ab80180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055005b156108df57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b80518210156109515760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220ff9e11393dd79e3f2c34e356573dc93fbc86ec74763402d43c814d6e59b7e0a864736f6c63430008180033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.