Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 5,481 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 61177791 | 16 hrs ago | IN | 0 S | 0.00173695 | ||||
| Approve | 61177787 | 16 hrs ago | IN | 0 S | 0.00173349 | ||||
| Approve | 61022815 | 3 days ago | IN | 0 S | 0.00296939 | ||||
| Approve | 60857908 | 5 days ago | IN | 0 S | 0.00173349 | ||||
| Approve | 60852460 | 5 days ago | IN | 0 S | 0.00258195 | ||||
| Approve | 60792348 | 6 days ago | IN | 0 S | 0.00298303 | ||||
| Approve | 60785987 | 6 days ago | IN | 0 S | 0.00298303 | ||||
| Approve | 60698175 | 7 days ago | IN | 0 S | 0.00269925 | ||||
| Approve | 60515146 | 10 days ago | IN | 0 S | 0.0014904 | ||||
| Approve | 60437501 | 11 days ago | IN | 0 S | 0.00173349 | ||||
| Approve | 60434377 | 11 days ago | IN | 0 S | 0.00297126 | ||||
| Approve | 60401504 | 12 days ago | IN | 0 S | 0.00296939 | ||||
| Transfer | 60154368 | 15 days ago | IN | 0 S | 0.002893 | ||||
| Transfer | 60154318 | 15 days ago | IN | 0 S | 0.002893 | ||||
| Transfer | 60154142 | 15 days ago | IN | 0 S | 0.002893 | ||||
| Approve | 60065977 | 16 days ago | IN | 0 S | 0.00173349 | ||||
| Approve | 60038988 | 17 days ago | IN | 0 S | 0.00339267 | ||||
| Approve | 59981491 | 17 days ago | IN | 0 S | 0.0039757 | ||||
| Approve | 59934722 | 18 days ago | IN | 0 S | 0.00257115 | ||||
| Approve | 59793262 | 19 days ago | IN | 0 S | 0.00257115 | ||||
| Approve | 59703560 | 20 days ago | IN | 0 S | 0.00258195 | ||||
| Approve | 59702152 | 20 days ago | IN | 0 S | 0.00472911 | ||||
| Approve | 59619334 | 21 days ago | IN | 0 S | 0.00258195 | ||||
| Approve | 59527811 | 23 days ago | IN | 0 S | 0.00173349 | ||||
| Transfer | 59453022 | 24 days ago | IN | 0 S | 0.002893 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers.
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | ||||
|---|---|---|---|---|---|---|---|
| 61226810 | 28 mins ago | 0 S | |||||
| 61226810 | 28 mins ago | 0 S | |||||
| 61226810 | 28 mins ago | 0 S | |||||
| 61226810 | 28 mins ago | 0 S | |||||
| 61226810 | 28 mins ago | 0 S | |||||
| 61226810 | 28 mins ago | 0 S | |||||
| 61226810 | 28 mins ago | 0 S | |||||
| 61226810 | 28 mins ago | 0 S | |||||
| 61226810 | 28 mins ago | 0 S | |||||
| 61226810 | 28 mins ago | 0 S | |||||
| 61226810 | 28 mins ago | 0 S | |||||
| 61226810 | 28 mins ago | 0 S | |||||
| 61226750 | 29 mins ago | 0 S | |||||
| 61226750 | 29 mins ago | 0 S | |||||
| 61226750 | 29 mins ago | 0 S | |||||
| 61226750 | 29 mins ago | 0 S | |||||
| 61226750 | 29 mins ago | 0 S | |||||
| 61226750 | 29 mins ago | 0 S | |||||
| 61226750 | 29 mins ago | 0 S | |||||
| 61226750 | 29 mins ago | 0 S | |||||
| 61226750 | 29 mins ago | 0 S | |||||
| 61226750 | 29 mins ago | 0 S | |||||
| 61226750 | 29 mins ago | 0 S | |||||
| 61226750 | 29 mins ago | 0 S | |||||
| 61224402 | 1 hr ago | 0 S |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
anSProxy
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 100 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import { InitializeGovernedUpgradeabilityProxy } from "./InitializeGovernedUpgradeabilityProxy.sol";
/**
* @notice anSProxy delegates calls to an anS implementation
*/
contract anSProxy is InitializeGovernedUpgradeabilityProxy {
}
/**
* @notice WrappedAnsProxy delegates calls to a wanS implementation
*/
contract WrappedAnsProxy is InitializeGovernedUpgradeabilityProxy {
}
/**
* @notice AnglesVaultProxy delegates calls to a AnglesVault implementation
*/
contract AnglesVaultProxy is InitializeGovernedUpgradeabilityProxy {
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)
pragma solidity ^0.8.1;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
*
* Furthermore, `isContract` will also return true if the target contract within
* the same transaction is already scheduled for destruction by `SELFDESTRUCT`,
* which only has an effect at the end of a transaction.
* ====
*
* [IMPORTANT]
* ====
* You shouldn't rely on `isContract` to protect against flash loan attacks!
*
* Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
* like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
* constructor.
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize/address.code.length, which returns 0
// for contracts in construction, since the code is only stored at the end
// of the constructor execution.
return account.code.length > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
* the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
*
* _Available since v4.8._
*/
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata,
string memory errorMessage
) internal view returns (bytes memory) {
if (success) {
if (returndata.length == 0) {
// only check isContract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
require(isContract(target), "Address: call to non-contract");
}
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
/**
* @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason or using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function _revert(bytes memory returndata, string memory errorMessage) private pure {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import { Address } from "@openzeppelin/contracts/utils/Address.sol";
import { Governable } from "../token/governance/Governable.sol";
/**
* @title BaseGovernedUpgradeabilityProxy
* @dev This contract combines an upgradeability proxy with our governor system.
* It is based on an older version of OpenZeppelins BaseUpgradeabilityProxy
* with Solidity ^0.8.0.
* @author Origin Protocol Inc
*/
contract InitializeGovernedUpgradeabilityProxy is Governable {
/**
* @dev Emitted when the implementation is upgraded.
* @param implementation Address of the new implementation.
*/
event Upgraded(address indexed implementation);
/**
* @dev Contract initializer with Governor enforcement
* @param _logic Address of the initial implementation.
* @param _initGovernor Address of the initial Governor.
* @param _data Data to send as msg.data to the implementation to initialize
* the proxied contract.
* It should include the signature and the parameters of the function to be
* called, as described in
* https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
* This parameter is optional, if no data is given the initialization call
* to proxied contract will be skipped.
*/
function initialize(
address _logic,
address _initGovernor,
bytes memory _data
) public payable onlyGovernor {
require(_implementation() == address(0));
assert(
IMPLEMENTATION_SLOT ==
bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1)
);
_changeGovernor(_initGovernor);
_setImplementation(_logic);
if (_data.length > 0) {
(bool success, ) = _logic.delegatecall(_data);
require(success);
}
}
/**
* @return The address of the proxy admin/it's also the governor.
*/
function admin() external view returns (address) {
return _governor();
}
/**
* @return The address of the implementation.
*/
function implementation() external view returns (address) {
return _implementation();
}
/**
* @dev Upgrade the backing implementation of the proxy.
* Only the admin can call this function.
* @param newImplementation Address of the new implementation.
*/
function upgradeTo(address newImplementation) external onlyGovernor {
_upgradeTo(newImplementation);
}
/**
* @dev Upgrade the backing implementation of the proxy and call a function
* on the new implementation.
* This is useful to initialize the proxied contract.
* @param newImplementation Address of the new implementation.
* @param data Data to send as msg.data in the low level call.
* It should include the signature and the parameters of the function to be called, as described in
* https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
*/
function upgradeToAndCall(address newImplementation, bytes calldata data)
external
payable
onlyGovernor
{
_upgradeTo(newImplementation);
(bool success, ) = newImplementation.delegatecall(data);
require(success);
}
/**
* @dev Fallback function.
* Implemented entirely in `_fallback`.
*/
fallback() external payable {
_fallback();
}
/**
* @dev Delegates execution to an implementation contract.
* This is a low level function that doesn't return to its internal call site.
* It will return to the external caller whatever the implementation returns.
* @param _impl Address to delegate.
*/
function _delegate(address _impl) internal {
// solhint-disable-next-line no-inline-assembly
assembly {
// Copy msg.data. We take full control of memory in this inline assembly
// block because it will not return to Solidity code. We overwrite the
// Solidity scratch pad at memory position 0.
calldatacopy(0, 0, calldatasize())
// Call the implementation.
// out and outsize are 0 because we don't know the size yet.
let result := delegatecall(gas(), _impl, 0, calldatasize(), 0, 0)
// Copy the returned data.
returndatacopy(0, 0, returndatasize())
switch result
// delegatecall returns 0 on error.
case 0 {
revert(0, returndatasize())
}
default {
return(0, returndatasize())
}
}
}
/**
* @dev Function that is run as the first thing in the fallback function.
* Can be redefined in derived contracts to add functionality.
* Redefinitions must call super._willFallback().
*/
function _willFallback() internal {}
/**
* @dev fallback implementation.
* Extracted to enable manual triggering.
*/
function _fallback() internal {
_willFallback();
_delegate(_implementation());
}
/**
* @dev Storage slot with the address of the current implementation.
* This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
* validated in the constructor.
*/
bytes32 internal constant IMPLEMENTATION_SLOT =
0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
/**
* @dev Returns the current implementation.
* @return impl Address of the current implementation
*/
function _implementation() internal view returns (address impl) {
bytes32 slot = IMPLEMENTATION_SLOT;
// solhint-disable-next-line no-inline-assembly
assembly {
impl := sload(slot)
}
}
/**
* @dev Upgrades the proxy to a new implementation.
* @param newImplementation Address of the new implementation.
*/
function _upgradeTo(address newImplementation) internal {
_setImplementation(newImplementation);
emit Upgraded(newImplementation);
}
/**
* @dev Sets the implementation address of the proxy.
* @param newImplementation Address of the new implementation.
*/
function _setImplementation(address newImplementation) internal {
require(
Address.isContract(newImplementation),
"Cannot set a proxy implementation to a non-contract address"
);
bytes32 slot = IMPLEMENTATION_SLOT;
// solhint-disable-next-line no-inline-assembly
assembly {
sstore(slot, newImplementation)
}
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @title Base for contracts that are managed by the Origin Protocol's Governor.
* @dev Copy of the openzeppelin Ownable.sol contract with nomenclature change
* from owner to governor and renounce methods removed. Does not use
* Context.sol like Ownable.sol does for simplification.
* @author Origin Protocol Inc
*/
contract Governable {
// Storage position of the owner and pendingOwner of the contract
// keccak256("OUSD.governor");
bytes32 private constant governorPosition =
0x7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a;
// keccak256("OUSD.pending.governor");
bytes32 private constant pendingGovernorPosition =
0x44c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51db;
// keccak256("OUSD.reentry.status");
bytes32 private constant reentryStatusPosition =
0x53bf423e48ed90e97d02ab0ebab13b2a235a6bfbe9c321847d5c175333ac4535;
// See OpenZeppelin ReentrancyGuard implementation
uint256 constant _NOT_ENTERED = 1;
uint256 constant _ENTERED = 2;
event PendingGovernorshipTransfer(
address indexed previousGovernor,
address indexed newGovernor
);
event GovernorshipTransferred(
address indexed previousGovernor,
address indexed newGovernor
);
/**
* @dev Initializes the contract setting the deployer as the initial Governor.
*/
constructor() {
_setGovernor(msg.sender);
emit GovernorshipTransferred(address(0), _governor());
}
/**
* @notice Returns the address of the current Governor.
*/
function governor() public view returns (address) {
return _governor();
}
/**
* @dev Returns the address of the current Governor.
*/
function _governor() internal view returns (address governorOut) {
bytes32 position = governorPosition;
// solhint-disable-next-line no-inline-assembly
assembly {
governorOut := sload(position)
}
}
/**
* @dev Returns the address of the pending Governor.
*/
function _pendingGovernor()
internal
view
returns (address pendingGovernor)
{
bytes32 position = pendingGovernorPosition;
// solhint-disable-next-line no-inline-assembly
assembly {
pendingGovernor := sload(position)
}
}
/**
* @dev Throws if called by any account other than the Governor.
*/
modifier onlyGovernor() {
require(isGovernor(), "Caller is not the Governor");
_;
}
/**
* @notice Returns true if the caller is the current Governor.
*/
function isGovernor() public view returns (bool) {
return msg.sender == _governor();
}
function _setGovernor(address newGovernor) internal {
bytes32 position = governorPosition;
// solhint-disable-next-line no-inline-assembly
assembly {
sstore(position, newGovernor)
}
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and make it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
bytes32 position = reentryStatusPosition;
uint256 _reentry_status;
// solhint-disable-next-line no-inline-assembly
assembly {
_reentry_status := sload(position)
}
// On the first call to nonReentrant, _notEntered will be true
require(_reentry_status != _ENTERED, "Reentrant call");
// Any calls to nonReentrant after this point will fail
// solhint-disable-next-line no-inline-assembly
assembly {
sstore(position, _ENTERED)
}
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
// solhint-disable-next-line no-inline-assembly
assembly {
sstore(position, _NOT_ENTERED)
}
}
function _setPendingGovernor(address newGovernor) internal {
bytes32 position = pendingGovernorPosition;
// solhint-disable-next-line no-inline-assembly
assembly {
sstore(position, newGovernor)
}
}
/**
* @notice Transfers Governance of the contract to a new account (`newGovernor`).
* Can only be called by the current Governor. Must be claimed for this to complete
* @param _newGovernor Address of the new Governor
*/
function transferGovernance(address _newGovernor) external onlyGovernor {
_setPendingGovernor(_newGovernor);
emit PendingGovernorshipTransfer(_governor(), _newGovernor);
}
/**
* @notice Claim Governance of the contract to a new account (`newGovernor`).
* Can only be called by the new Governor.
*/
function claimGovernance() external {
require(
msg.sender == _pendingGovernor(),
"Only the pending Governor can complete the claim"
);
_changeGovernor(msg.sender);
}
/**
* @dev Change Governance of the contract to a new account (`newGovernor`).
* @param _newGovernor Address of the new Governor
*/
function _changeGovernor(address _newGovernor) internal {
require(_newGovernor != address(0), "New Governor is address(0)");
emit GovernorshipTransferred(_governor(), _newGovernor);
_setGovernor(_newGovernor);
}
}{
"optimizer": {
"enabled": true,
"runs": 100
},
"evmVersion": "paris",
"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":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"GovernorshipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"PendingGovernorshipTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"governor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"_initGovernor","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"isGovernor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newGovernor","type":"address"}],"name":"transferGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}]Contract Creation Code
6080604052348015600f57600080fd5b506025336000805160206109ac83398151915255565b6000805160206109ac833981519152546040516001600160a01b03909116906000907fc7c0c772add429241571afb3805861fb3cfa2af374534088b76cdb4325a87e9a908290a36109318061007b6000396000f3fe6080604052600436106100765760003560e01c80630c340a24146100805780633659cfe6146100b25780634f1ef286146100d25780635c60da1b146100e55780635d36b190146100fa578063c7af33521461010f578063cf7a1d7714610134578063d38bfff414610147578063f851a44014610080575b61007e610167565b005b34801561008c57600080fd5b50610095610179565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100be57600080fd5b5061007e6100cd366004610691565b610188565b61007e6100e03660046106b3565b6101c1565b3480156100f157600080fd5b5061009561025e565b34801561010657600080fd5b5061007e610268565b34801561011b57600080fd5b5061012461030c565b60405190151581526020016100a9565b61007e61014236600461074e565b61032f565b34801561015357600080fd5b5061007e610162366004610691565b6103ef565b610177610172610485565b610498565b565b60006101836104bc565b905090565b61019061030c565b6101b55760405162461bcd60e51b81526004016101ac90610828565b60405180910390fd5b6101be816104e1565b50565b6101c961030c565b6101e55760405162461bcd60e51b81526004016101ac90610828565b6101ee836104e1565b6000836001600160a01b0316838360405161020a92919061085f565b600060405180830381855af49150503d8060008114610245576040519150601f19603f3d011682016040523d82523d6000602084013e61024a565b606091505b505090508061025857600080fd5b50505050565b6000610183610485565b7f44c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51db546001600160a01b0316336001600160a01b0316146103035760405162461bcd60e51b815260206004820152603060248201527f4f6e6c79207468652070656e64696e6720476f7665726e6f722063616e20636f60448201526f6d706c6574652074686520636c61696d60801b60648201526084016101ac565b61017733610521565b60006103166104bc565b6001600160a01b0316336001600160a01b031614905090565b61033761030c565b6103535760405162461bcd60e51b81526004016101ac90610828565b600061035d610485565b6001600160a01b03161461037057600080fd5b61039b60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61086f565b6000805160206108dc833981519152146103b7576103b7610896565b6103c082610521565b6103c9836105e6565b8051156103ea576000836001600160a01b03168260405161020a91906108ac565b505050565b6103f761030c565b6104135760405162461bcd60e51b81526004016101ac90610828565b61043b817f44c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51db55565b806001600160a01b031661044d6104bc565b6001600160a01b03167fa39cc5eb22d0f34d8beaefee8a3f17cc229c1a1d1ef87a5ad47313487b1c4f0d60405160405180910390a350565b6000805160206108dc8339815191525490565b3660008037600080366000845af43d6000803e8080156104b7573d6000f35b3d6000fd5b7f7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a5490565b6104ea816105e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105775760405162461bcd60e51b815260206004820152601a60248201527f4e657720476f7665726e6f72206973206164647265737328302900000000000060448201526064016101ac565b806001600160a01b03166105896104bc565b6001600160a01b03167fc7c0c772add429241571afb3805861fb3cfa2af374534088b76cdb4325a87e9a60405160405180910390a36101be817f7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a55565b6001600160a01b0381163b6106635760405162461bcd60e51b815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000060648201526084016101ac565b6000805160206108dc83398151915255565b80356001600160a01b038116811461068c57600080fd5b919050565b6000602082840312156106a357600080fd5b6106ac82610675565b9392505050565b6000806000604084860312156106c857600080fd5b6106d184610675565b9250602084013567ffffffffffffffff8111156106ed57600080fd5b8401601f810186136106fe57600080fd5b803567ffffffffffffffff81111561071557600080fd5b86602082840101111561072757600080fd5b939660209190910195509293505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561076357600080fd5b61076c84610675565b925061077a60208501610675565b9150604084013567ffffffffffffffff81111561079657600080fd5b8401601f810186136107a757600080fd5b803567ffffffffffffffff8111156107c1576107c1610738565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156107f0576107f0610738565b60405281815282820160200188101561080857600080fd5b816020840160208301376000602083830101528093505050509250925092565b6020808252601a908201527f43616c6c6572206973206e6f742074686520476f7665726e6f72000000000000604082015260600190565b8183823760009101908152919050565b8181038181111561089057634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052600160045260246000fd5b6000825160005b818110156108cd57602081860181015185830152016108b3565b50600092019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220370882874eb3297f69c1973a0e553b743c79fb5a8a78ee6147d422b5702b3dd764736f6c634300081c00337bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a
Deployed Bytecode
0x6080604052600436106100765760003560e01c80630c340a24146100805780633659cfe6146100b25780634f1ef286146100d25780635c60da1b146100e55780635d36b190146100fa578063c7af33521461010f578063cf7a1d7714610134578063d38bfff414610147578063f851a44014610080575b61007e610167565b005b34801561008c57600080fd5b50610095610179565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100be57600080fd5b5061007e6100cd366004610691565b610188565b61007e6100e03660046106b3565b6101c1565b3480156100f157600080fd5b5061009561025e565b34801561010657600080fd5b5061007e610268565b34801561011b57600080fd5b5061012461030c565b60405190151581526020016100a9565b61007e61014236600461074e565b61032f565b34801561015357600080fd5b5061007e610162366004610691565b6103ef565b610177610172610485565b610498565b565b60006101836104bc565b905090565b61019061030c565b6101b55760405162461bcd60e51b81526004016101ac90610828565b60405180910390fd5b6101be816104e1565b50565b6101c961030c565b6101e55760405162461bcd60e51b81526004016101ac90610828565b6101ee836104e1565b6000836001600160a01b0316838360405161020a92919061085f565b600060405180830381855af49150503d8060008114610245576040519150601f19603f3d011682016040523d82523d6000602084013e61024a565b606091505b505090508061025857600080fd5b50505050565b6000610183610485565b7f44c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51db546001600160a01b0316336001600160a01b0316146103035760405162461bcd60e51b815260206004820152603060248201527f4f6e6c79207468652070656e64696e6720476f7665726e6f722063616e20636f60448201526f6d706c6574652074686520636c61696d60801b60648201526084016101ac565b61017733610521565b60006103166104bc565b6001600160a01b0316336001600160a01b031614905090565b61033761030c565b6103535760405162461bcd60e51b81526004016101ac90610828565b600061035d610485565b6001600160a01b03161461037057600080fd5b61039b60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61086f565b6000805160206108dc833981519152146103b7576103b7610896565b6103c082610521565b6103c9836105e6565b8051156103ea576000836001600160a01b03168260405161020a91906108ac565b505050565b6103f761030c565b6104135760405162461bcd60e51b81526004016101ac90610828565b61043b817f44c4d30b2eaad5130ad70c3ba6972730566f3e6359ab83e800d905c61b1c51db55565b806001600160a01b031661044d6104bc565b6001600160a01b03167fa39cc5eb22d0f34d8beaefee8a3f17cc229c1a1d1ef87a5ad47313487b1c4f0d60405160405180910390a350565b6000805160206108dc8339815191525490565b3660008037600080366000845af43d6000803e8080156104b7573d6000f35b3d6000fd5b7f7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a5490565b6104ea816105e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105775760405162461bcd60e51b815260206004820152601a60248201527f4e657720476f7665726e6f72206973206164647265737328302900000000000060448201526064016101ac565b806001600160a01b03166105896104bc565b6001600160a01b03167fc7c0c772add429241571afb3805861fb3cfa2af374534088b76cdb4325a87e9a60405160405180910390a36101be817f7bea13895fa79d2831e0a9e28edede30099005a50d652d8957cf8a607ee6ca4a55565b6001600160a01b0381163b6106635760405162461bcd60e51b815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e74726163742061646472657373000000000060648201526084016101ac565b6000805160206108dc83398151915255565b80356001600160a01b038116811461068c57600080fd5b919050565b6000602082840312156106a357600080fd5b6106ac82610675565b9392505050565b6000806000604084860312156106c857600080fd5b6106d184610675565b9250602084013567ffffffffffffffff8111156106ed57600080fd5b8401601f810186136106fe57600080fd5b803567ffffffffffffffff81111561071557600080fd5b86602082840101111561072757600080fd5b939660209190910195509293505050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561076357600080fd5b61076c84610675565b925061077a60208501610675565b9150604084013567ffffffffffffffff81111561079657600080fd5b8401601f810186136107a757600080fd5b803567ffffffffffffffff8111156107c1576107c1610738565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156107f0576107f0610738565b60405281815282820160200188101561080857600080fd5b816020840160208301376000602083830101528093505050509250925092565b6020808252601a908201527f43616c6c6572206973206e6f742074686520476f7665726e6f72000000000000604082015260600190565b8183823760009101908152919050565b8181038181111561089057634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052600160045260246000fd5b6000825160005b818110156108cd57602081860181015185830152016108b3565b50600092019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220370882874eb3297f69c1973a0e553b743c79fb5a8a78ee6147d422b5702b3dd764736f6c634300081c0033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in S
Multichain Portfolio | 35 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.