Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| 0x60806040 | 17932615 | 942 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DelayedImplementationManager
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 100000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-2.0-or-later
// Copyright 2017 Loopring Technology Limited.
pragma solidity ^0.7.0;
import "../lib/Ownable.sol";
/**
* @title DelayedImplementationManager
* @author Kongliang Zhong - <kongliang@loopring.org>
*/
contract DelayedImplementationManager is Ownable {
address public currImpl;
address public nextImpl;
uint public nextEffectiveTime;
event UpgradeScheduled(address nextImpl, uint effectiveTime);
event UpgradeCancelled(address nextImpl);
event ImplementationChanged(address newImpl);
constructor(address initImpl) {
require(initImpl != address(0), "ZERO_ADDRESS");
currImpl = initImpl;
}
/**
* @dev Allows the proxy owner to upgrade the current version of the proxy.
* @param _nextImpl representing the address of the next implementation to be set.
* @param _daysToDelay representing the amount of days after the next implementation take effect.
*/
function delayedUpgradeTo(address _nextImpl, uint _daysToDelay) public onlyOwner {
if (_nextImpl == address(0)) {
require(nextImpl != address(0) && _daysToDelay == 0, "INVALID_ARGS");
emit UpgradeCancelled(nextImpl);
nextImpl = address(0);
} else {
require(_daysToDelay >= 1, "INVALID_DAYS");
uint _nextEffectiveTime = block.timestamp + _daysToDelay * 1 days;
nextImpl = _nextImpl;
nextEffectiveTime = _nextEffectiveTime;
emit UpgradeScheduled(_nextImpl, _nextEffectiveTime);
}
}
/**
* @dev Allows everyone to replace implementation after effective time.
*/
function executeUpgrade() public {
require(nextImpl != address(0) && block.timestamp >= nextEffectiveTime, "NOT_IN_EFFECT");
currImpl = nextImpl;
nextImpl = address(0);
emit ImplementationChanged(currImpl);
}
}// SPDX-License-Identifier: GPL-2.0-or-later
// Copyright 2017 Loopring Technology Limited.
pragma solidity ^0.7.0;
/// @title Ownable
/// @author Brecht Devos - <brecht@loopring.org>
/// @dev The Ownable contract has an owner address, and provides basic
/// authorization control functions, this simplifies the implementation of
/// "user permissions".
contract Ownable
{
address public owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
/// @dev The Ownable constructor sets the original `owner` of the contract
/// to the sender.
constructor()
{
owner = msg.sender;
}
/// @dev Throws if called by any account other than the owner.
modifier onlyOwner()
{
require(msg.sender == owner, "UNAUTHORIZED");
_;
}
/// @dev Allows the current owner to transfer control of the contract to a
/// new owner.
/// @param newOwner The address to transfer ownership to.
function transferOwnership(
address newOwner
)
public
virtual
onlyOwner
{
require(newOwner != address(0), "ZERO_ADDRESS");
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
function renounceOwnership()
public
onlyOwner
{
emit OwnershipTransferred(owner, address(0));
owner = address(0);
}
}{
"optimizer": {
"enabled": true,
"runs": 100000
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"initImpl","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newImpl","type":"address"}],"name":"ImplementationChanged","type":"event"},{"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":false,"internalType":"address","name":"nextImpl","type":"address"}],"name":"UpgradeCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"nextImpl","type":"address"},{"indexed":false,"internalType":"uint256","name":"effectiveTime","type":"uint256"}],"name":"UpgradeScheduled","type":"event"},{"inputs":[],"name":"currImpl","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_nextImpl","type":"address"},{"internalType":"uint256","name":"_daysToDelay","type":"uint256"}],"name":"delayedUpgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"executeUpgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nextEffectiveTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextImpl","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b506040516109073803806109078339818101604052602081101561003357600080fd5b5051600080546001600160a01b031916331790556001600160a01b038116610091576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055610847806100c06000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100d8578063b11a8c00146100e0578063d4bc334a146100fa578063f2fde38b1461013357610088565b80633d1623d51461008d5780634cce860b146100be578063715018a6146100c65780637e896214146100d0575b600080fd5b610095610166565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610095610182565b6100ce61019e565b005b6100ce610293565b6100956103ad565b6100e86103c9565b60408051918252519081900360200190f35b6100ce6004803603604081101561011057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103cf565b6100ce6004803603602081101561014957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661067c565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461022457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60025473ffffffffffffffffffffffffffffffffffffffff16158015906102bc57506003544210155b61032757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4f545f494e5f45464645435400000000000000000000000000000000000000604482015290519081900360640190fd5b600280546001805473ffffffffffffffffffffffffffffffffffffffff8084167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161792839055921690925560408051929091168252517f2989b377844ae55f0ca303ad21490d8519f8cf871ad6b5ba3dbec736bb54c63f916020908290030190a1565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60005473ffffffffffffffffffffffffffffffffffffffff16331461045557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166105795760025473ffffffffffffffffffffffffffffffffffffffff1615801590610495575080155b61050057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f494e56414c49445f415247530000000000000000000000000000000000000000604482015290519081900360640190fd5b6002546040805173ffffffffffffffffffffffffffffffffffffffff9092168252517f3198dc80249fcfedbd0d06e1ff49a7695a51b006592328ce0b127cdeab77e9369181900360200190a1600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610678565b60018110156105e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f494e56414c49445f444159530000000000000000000000000000000000000000604482015290519081900360640190fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155620151808202420160038190556040805192835260208301829052805191927fe1009627653eb47f7d0f3b4435749f7984a803c21f84a076cc4dcb0412cf066f929081900390910190a1505b5050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461070257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661078457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905556fea2646970667358221220cb947fab2869d97ad705cc180a11a6186da36135ac4977b41707fc17401e867364736f6c63430007060033000000000000000000000000df7e7f110e76449f217e799692eb8eb11b4f5557
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100d8578063b11a8c00146100e0578063d4bc334a146100fa578063f2fde38b1461013357610088565b80633d1623d51461008d5780634cce860b146100be578063715018a6146100c65780637e896214146100d0575b600080fd5b610095610166565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610095610182565b6100ce61019e565b005b6100ce610293565b6100956103ad565b6100e86103c9565b60408051918252519081900360200190f35b6100ce6004803603604081101561011057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103cf565b6100ce6004803603602081101561014957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661067c565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461022457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60025473ffffffffffffffffffffffffffffffffffffffff16158015906102bc57506003544210155b61032757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4f545f494e5f45464645435400000000000000000000000000000000000000604482015290519081900360640190fd5b600280546001805473ffffffffffffffffffffffffffffffffffffffff8084167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161792839055921690925560408051929091168252517f2989b377844ae55f0ca303ad21490d8519f8cf871ad6b5ba3dbec736bb54c63f916020908290030190a1565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60005473ffffffffffffffffffffffffffffffffffffffff16331461045557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166105795760025473ffffffffffffffffffffffffffffffffffffffff1615801590610495575080155b61050057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f494e56414c49445f415247530000000000000000000000000000000000000000604482015290519081900360640190fd5b6002546040805173ffffffffffffffffffffffffffffffffffffffff9092168252517f3198dc80249fcfedbd0d06e1ff49a7695a51b006592328ce0b127cdeab77e9369181900360200190a1600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610678565b60018110156105e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f494e56414c49445f444159530000000000000000000000000000000000000000604482015290519081900360640190fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155620151808202420160038190556040805192835260208301829052805191927fe1009627653eb47f7d0f3b4435749f7984a803c21f84a076cc4dcb0412cf066f929081900390910190a1505b5050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461070257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661078457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905556fea2646970667358221220cb947fab2869d97ad705cc180a11a6186da36135ac4977b41707fc17401e867364736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000df7e7f110e76449f217e799692eb8eb11b4f5557
-----Decoded View---------------
Arg [0] : initImpl (address): 0xdf7E7f110E76449F217e799692eb8EB11B4F5557
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000df7e7f110e76449f217e799692eb8eb11b4f5557
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.