Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Initialize Vault | 11639176 | 1459 days ago | IN | 0 ETH | 0.02800942 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
VaultProxy
Compiler Version
v0.5.16+commit.9c3226ce
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity 0.5.16; import "./interface/IUpgradeSource.sol"; import "@openzeppelin/upgrades/contracts/upgradeability/BaseUpgradeabilityProxy.sol"; contract VaultProxy is BaseUpgradeabilityProxy { constructor(address _implementation) public { _setImplementation(_implementation); } /** * The main logic. If the timer has elapsed and there is a schedule upgrade, * the governance can upgrade the vault */ function upgrade() external { (bool should, address newImplementation) = IUpgradeSource(address(this)).shouldUpgrade(); require(should, "Upgrade not scheduled"); _upgradeTo(newImplementation); // the finalization needs to be executed on itself to update the storage of this proxy // it also needs to be invoked by the governance, not by address(this), so delegatecall is needed (bool success, bytes memory result) = address(this).delegatecall( abi.encodeWithSignature("finalizeUpgrade()") ); require(success, "Issue when finalizing the upgrade"); } function implementation() external view returns (address) { return _implementation(); } }
pragma solidity 0.5.16; interface IUpgradeSource { function shouldUpgrade() external view returns (bool, address); function finalizeUpgrade() external; }
pragma solidity ^0.5.0; import './Proxy.sol'; import '../utils/Address.sol'; /** * @title BaseUpgradeabilityProxy * @dev This contract implements a proxy that allows to change the * implementation address to which it will delegate. * Such a change is called an implementation upgrade. */ contract BaseUpgradeabilityProxy is Proxy { /** * @dev Emitted when the implementation is upgraded. * @param implementation Address of the new implementation. */ event Upgraded(address indexed 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 Address of the current implementation */ function _implementation() internal view returns (address impl) { bytes32 slot = IMPLEMENTATION_SLOT; 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(OpenZeppelinUpgradesAddress.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address"); bytes32 slot = IMPLEMENTATION_SLOT; assembly { sstore(slot, newImplementation) } } }
pragma solidity ^0.5.0; /** * @title Proxy * @dev Implements delegation of calls to other contracts, with proper * forwarding of return values and bubbling of failures. * It defines a fallback function that delegates all calls to the address * returned by the abstract _implementation() internal function. */ contract Proxy { /** * @dev Fallback function. * Implemented entirely in `_fallback`. */ function () payable external { _fallback(); } /** * @return The Address of the implementation. */ function _implementation() internal view returns (address); /** * @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 implementation Address to delegate. */ function _delegate(address implementation) internal { 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, implementation, 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()); } }
pragma solidity ^0.5.0; /** * Utility library of inline functions on addresses * * Source https://raw.githubusercontent.com/OpenZeppelin/openzeppelin-solidity/v2.1.3/contracts/utils/Address.sol * This contract is copied here and renamed from the original to avoid clashes in the compiled artifacts * when the user imports a zos-lib contract (that transitively causes this contract to be compiled and added to the * build/artifacts folder) as well as the vanilla Address implementation from an openzeppelin version. */ library OpenZeppelinUpgradesAddress { /** * Returns whether the target address is a contract * @dev This function will return false if invoked during the constructor of a contract, * as the code is not actually created until after the constructor finishes. * @param account address of the account to check * @return whether the target address is a contract */ function isContract(address account) internal view returns (bool) { uint256 size; // XXX Currently there is no better way to check if there is a contract in an address // than to check the size of the code at that address. // See https://ethereum.stackexchange.com/a/14016/36603 // for more details about how this works. // TODO Check this again before the Serenity release, because all addresses will be // contracts then. // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_implementation","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516106943803806106948339818101604052602081101561003357600080fd5b81019080805190602001909291905050506100538161005960201b60201c565b50610103565b61006c816100f060201b6104a31760201c565b6100c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180610659603b913960400191505060405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b600080823b905060008111915050919050565b610547806101126000396000f3fe6080604052600436106100295760003560e01c80635c60da1b14610033578063d55ec6971461008a575b6100316100a1565b005b34801561003f57600080fd5b506100486100bb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561009657600080fd5b5061009f6100ca565b005b6100a961036e565b6100b96100b4610370565b6103a1565b565b60006100c5610370565b905090565b6000803073ffffffffffffffffffffffffffffffffffffffff16639d16acfd6040518163ffffffff1660e01b8152600401604080518083038186803b15801561011257600080fd5b505afa158015610126573d6000803e3d6000fd5b505050506040513d604081101561013c57600080fd5b81019080805190602001909291908051906020019092919050505091509150816101ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f55706772616465206e6f74207363686564756c6564000000000000000000000081525060200191505060405180910390fd5b6101d7816103c7565b600060603073ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f9a508c8e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106102a85780518252602082019150602081019050602083039250610285565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610308576040519150601f19603f3d011682016040523d82523d6000602084013e61030d565b606091505b509150915081610368576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806104b76021913960400191505060405180910390fd5b50505050565b565b6000807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b9050805491505090565b3660008037600080366000845af43d6000803e80600081146103c2573d6000f35b3d6000fd5b6103d081610416565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b61041f816104a3565b610474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806104d8603b913960400191505060405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b600080823b90506000811191505091905056fe4973737565207768656e2066696e616c697a696e6720746865207570677261646543616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a265627a7a72315820c179b5731987056f908481ec0f08d35976632cb460636b51b5d318ec30ceb8f464736f6c6343000510003243616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000000000000000009b3be0cc5dd26fd0254088d03d8206792715588b
Deployed Bytecode
0x6080604052600436106100295760003560e01c80635c60da1b14610033578063d55ec6971461008a575b6100316100a1565b005b34801561003f57600080fd5b506100486100bb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561009657600080fd5b5061009f6100ca565b005b6100a961036e565b6100b96100b4610370565b6103a1565b565b60006100c5610370565b905090565b6000803073ffffffffffffffffffffffffffffffffffffffff16639d16acfd6040518163ffffffff1660e01b8152600401604080518083038186803b15801561011257600080fd5b505afa158015610126573d6000803e3d6000fd5b505050506040513d604081101561013c57600080fd5b81019080805190602001909291908051906020019092919050505091509150816101ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f55706772616465206e6f74207363686564756c6564000000000000000000000081525060200191505060405180910390fd5b6101d7816103c7565b600060603073ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f9a508c8e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106102a85780518252602082019150602081019050602083039250610285565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610308576040519150601f19603f3d011682016040523d82523d6000602084013e61030d565b606091505b509150915081610368576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806104b76021913960400191505060405180910390fd5b50505050565b565b6000807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b9050805491505090565b3660008037600080366000845af43d6000803e80600081146103c2573d6000f35b3d6000fd5b6103d081610416565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b61041f816104a3565b610474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806104d8603b913960400191505060405180910390fd5b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b90508181555050565b600080823b90506000811191505091905056fe4973737565207768656e2066696e616c697a696e6720746865207570677261646543616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a265627a7a72315820c179b5731987056f908481ec0f08d35976632cb460636b51b5d318ec30ceb8f464736f6c63430005100032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009b3be0cc5dd26fd0254088d03d8206792715588b
-----Decoded View---------------
Arg [0] : _implementation (address): 0x9B3bE0cc5dD26fd0254088d03D8206792715588B
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009b3be0cc5dd26fd0254088d03d8206792715588b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.