Address Contract Partially Verified
Address
0x25eC98773D7b4ceD4cAFaB96A2A1c0945f145e10
Balance
0 ETH
Nonce
1
Code Size
1609 bytes
Creator
0xBaCE84E4...A963 at tx 0x0285e724...2ec167
Indexed Transactions
0
Contract Bytecode
1609 bytes
0x60806040526004361061007b5760003560e01c8063c1e803341161004e578063c1e8033414610195578063e992a041146101aa578063e9c714f2146101ca578063f851a440146101df5761007b565b806326782247146100f9578063396f7b23146101355780635c60da1b14610155578063b71d1a0c14610175575b6002546040516000916001600160a01b03169061009b90839036906105d3565b600060405180830381855af49150503d80600081146100d6576040519150601f19603f3d011682016040523d82523d6000602084013e6100db565b606091505b505090506040513d806000833e8280156100f3578183f35b8183fd5b005b34801561010557600080fd5b50600154610119906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b34801561014157600080fd5b50600354610119906001600160a01b031681565b34801561016157600080fd5b50600254610119906001600160a01b031681565b34801561018157600080fd5b506100f76101903660046105e3565b6101ff565b3480156101a157600080fd5b506100f76102c0565b3480156101b657600080fd5b506100f76101c53660046105e3565b6103f2565b3480156101d657600080fd5b506100f76104b5565b3480156101eb57600080fd5b50600054610119906001600160a01b031681565b6000546001600160a01b0316331461025e5760405162461bcd60e51b815260206004820152601d60248201527f5345545f50454e44494e475f41444d494e5f4f574e45525f434845434b00000060448201526064015b60405180910390fd5b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991015b60405180910390a15050565b6003546001600160a01b0316331480156102e457506003546001600160a01b031615155b6103445760405162461bcd60e51b815260206004820152602b60248201527f4143434550545f50454e44494e475f494d504c454d454e544154494f4e5f414460448201526a44524553535f434845434b60a81b6064820152608401610255565b60028054600380546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a1600354604080516001600160a01b03808516825290921660208301527fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d81591016102b4565b6000546001600160a01b0316331461045b5760405162461bcd60e51b815260206004820152602660248201527f5345545f50454e44494e475f494d504c454d454e544154494f4e5f4f574e45526044820152655f434845434b60d01b6064820152608401610255565b600380546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d81591016102b4565b6001546001600160a01b0316331480156104d957506001546001600160a01b031615155b6105255760405162461bcd60e51b815260206004820181905260248201527f4143434550545f41444d494e5f50454e44494e475f41444d494e5f434845434b6044820152606401610255565b60008054600180546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a1600154604080516001600160a01b03808516825290921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991016102b4565b8183823760009101908152919050565b6000602082840312156105f557600080fd5b81356001600160a01b038116811461060c57600080fd5b939250505056fea26469706673582212201ce1a4f1cf1aae5cd645f976c5825aac21cbcafd8456760f5fbd1240c830f29b64736f6c63430008120033
Verified Source Code Partial Match
Compiler: v0.8.18+commit.87f61d96
EVM: paris
Optimization: Yes (200 runs)
StUSDTProxy.sol 162 lines
// File contracts/AdminStorage.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract AdminStorage {
/**
* @notice Administrator for this contract
*/
address public admin;
/**
* @notice Pending administrator for this contract
*/
address public pendingAdmin;
/**
* @notice Active brains of this contract
*/
address public implementation;
/**
* @notice Pending brains of this contract
*/
address public pendingImplementation;
}
// File contracts/AdminProxy.sol
pragma solidity ^0.8.18;
abstract contract AdminProxy is AdminStorage {
/**
* @notice Emitted when pendingImplementation is changed
*/
event NewPendingImplementation(address oldPendingImplementation, address newPendingImplementation);
/**
* @notice Emitted when pendingImplementation is accepted, which means implementation is updated
*/
event NewImplementation(address oldImplementation, address newImplementation);
/**
* @notice Emitted when pendingAdmin is changed
*/
event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin);
/**
* @notice Emitted when pendingAdmin is accepted, which means admin is updated
*/
event NewAdmin(address oldAdmin, address newAdmin);
/**
* @dev Delegates execution to an implementation contract.
* It returns to the external caller whatever the implementation returns
* or forwards reverts.
*/
fallback() external payable {
// delegate all other functions to current implementation
(bool success, ) = implementation.delegatecall(msg.data);
assembly {
let free_mem_ptr := mload(0x40)
let size := returndatasize()
returndatacopy(free_mem_ptr, 0, size)
switch success
case 0 { revert(free_mem_ptr, size) }
default { return(free_mem_ptr, size) }
}
}
/*** Admin Functions ***/
function _setPendingImplementation(address newPendingImplementation) public {
require(msg.sender == admin, "SET_PENDING_IMPLEMENTATION_OWNER_CHECK");
address oldPendingImplementation = pendingImplementation;
pendingImplementation = newPendingImplementation;
emit NewPendingImplementation(oldPendingImplementation, pendingImplementation);
}
/**
* @notice Accepts new implementation of comptroller. msg.sender must be pendingImplementation
* @dev Admin function for new implementation to accept it's role as implementation
*/
function _acceptImplementation() public {
// Check caller is pendingImplementation and pendingImplementation ≠ address(0)
require(msg.sender == pendingImplementation && pendingImplementation != address(0),
"ACCEPT_PENDING_IMPLEMENTATION_ADDRESS_CHECK");
// Save current values for inclusion in log
address oldImplementation = implementation;
address oldPendingImplementation = pendingImplementation;
implementation = pendingImplementation;
pendingImplementation = address(0);
emit NewImplementation(oldImplementation, implementation);
emit NewPendingImplementation(oldPendingImplementation, pendingImplementation);
}
/**
* @notice Begins transfer of admin rights. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.
* @dev Admin function to begin change of admin. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.
* @param newPendingAdmin New pending admin.
*/
function _setPendingAdmin(address newPendingAdmin) public {
// Check caller = admin
require(msg.sender == admin, "SET_PENDING_ADMIN_OWNER_CHECK");
// Save current value, if any, for inclusion in log
address oldPendingAdmin = pendingAdmin;
// Store pendingAdmin with value newPendingAdmin
pendingAdmin = newPendingAdmin;
// Emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin)
emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin);
}
/**
* @notice Accepts transfer of admin rights. msg.sender must be pendingAdmin
* @dev Admin function for pending admin to accept role and update admin
*/
function _acceptAdmin() public {
// Check caller is pendingAdmin and pendingAdmin ≠ address(0)
require(msg.sender == pendingAdmin && pendingAdmin != address(0), "ACCEPT_ADMIN_PENDING_ADMIN_CHECK");
// Save current values for inclusion in log
address oldAdmin = admin;
address oldPendingAdmin = pendingAdmin;
// Store admin with value pendingAdmin
admin = pendingAdmin;
// Clear the pending value
pendingAdmin = address(0);
emit NewAdmin(oldAdmin, admin);
emit NewPendingAdmin(oldPendingAdmin, pendingAdmin);
}
}
// File contracts/StUSDTProxy.sol
pragma solidity ^0.8.18;
contract StUSDTProxy is AdminProxy {
constructor(address _implementation) {
// Set admin to caller
admin = msg.sender;
implementation = _implementation;
}
}
Read Contract
admin 0xf851a440 → address
implementation 0x5c60da1b → address
pendingAdmin 0x26782247 → address
pendingImplementation 0x396f7b23 → address
Write Contract 4 functions
These functions modify contract state and require a wallet transaction to execute.
_acceptAdmin 0xe9c714f2
No parameters
_acceptImplementation 0xc1e80334
No parameters
_setPendingAdmin 0xb71d1a0c
address newPendingAdmin
_setPendingImplementation 0xe992a041
address newPendingImplementation
Recent Transactions
No transactions found for this address