Feature Tip: Add private address tag to any address under My Name Tag !
Overview
Max Total Supply
30,994.000006 BOTS EURO
Holders
20
Transfers
-
0
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 6 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
Proxy
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Proxy {
bytes32 private constant implementationPosition =
keccak256("implementation.contract:2022");
bytes32 private constant proxyOwnerPosition =
keccak256("owner.contract:2022");
event Upgraded(address indexed implementation);
event ProxyOwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor(address _impl) {
_setUpgradeabilityOwner(msg.sender);
_setImplementation(_impl);
}
modifier onlyProxyOwner() {
require(msg.sender == proxyOwner(), "Proxy: Caller not proxy owner");
_;
}
function proxyOwner() public view returns (address owner) {
bytes32 position = proxyOwnerPosition;
assembly {
owner := sload(position)
}
}
function implementation() public view returns (address impl) {
bytes32 position = implementationPosition;
assembly {
impl := sload(position)
}
}
function transferProxyOwnership(address _newOwner) public onlyProxyOwner {
require(_newOwner != address(0), "Proxy: new owner is address zero");
require(_newOwner != proxyOwner(), "Proxy: new owner is the current owner");
emit ProxyOwnershipTransferred(proxyOwner(), _newOwner);
_setUpgradeabilityOwner(_newOwner);
}
function upgradeTo(address _newImplementation) public onlyProxyOwner {
address currentImplementation = implementation();
require(currentImplementation != _newImplementation, "Proxy: new implementation is the current implementation");
_setImplementation(_newImplementation);
emit Upgraded(_newImplementation);
}
function _setImplementation(address _newImplementation) internal {
bytes32 position = implementationPosition;
assembly {
sstore(position, _newImplementation)
}
}
function _setUpgradeabilityOwner(address _newProxyOwner) internal {
bytes32 position = proxyOwnerPosition;
assembly {
sstore(position, _newProxyOwner)
}
}
function transferOwnership(address /*_account */) external onlyProxyOwner{
_delegatecall();
}
function _delegatecall() internal {
address _impl = implementation();
require(_impl != address(0), "Impl address is 0");
assembly {
let ptr := mload(0x40)
calldatacopy(ptr, 0, calldatasize())
let result := delegatecall(
sub(gas(), 10000),
_impl,
ptr,
calldatasize(),
0,
0
)
let size := returndatasize()
returndatacopy(ptr, 0, size)
switch result
case 0 {
revert(ptr, size)
}
default {
return(ptr, size)
}
}
}
fallback() external {
_delegatecall();
}
receive() external payable {
_delegatecall();
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"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":"_impl","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"ProxyOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"impl","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyOwner","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405234801561001057600080fd5b5060405161065c38038061065c83398101604081905261002f91610085565b610057337fe5e0c3d198ec6f12dff112a0be8a35a365b3a1eac673f5a3e1f5ca9e6e914f2555565b61007f817f25f79f54c2493e1fcb8ec8142a20f642f9b285503924a428782f2da3ab98279355565b506100b5565b60006020828403121561009757600080fd5b81516001600160a01b03811681146100ae57600080fd5b9392505050565b610598806100c46000396000f3fe60806040526004361061004e5760003560e01c8063025313a2146100725780633659cfe6146100ac5780635c60da1b146100cc578063f1739cae146100ee578063f2fde38b1461010e5761005d565b3661005d5761005b61012e565b005b34801561006957600080fd5b5061005b61012e565b34801561007e57600080fd5b50600080516020610543833981519152545b6040516001600160a01b03909116815260200160405180910390f35b3480156100b857600080fd5b5061005b6100c73660046104bb565b6101c0565b3480156100d857600080fd5b5060008051602061052383398151915254610090565b3480156100fa57600080fd5b5061005b6101093660046104bb565b6102f0565b34801561011a57600080fd5b5061005b6101293660046104bb565b610473565b60006101466000805160206105238339815191525490565b90506001600160a01b0381166101975760405162461bcd60e51b81526020600482015260116024820152700496d706c2061646472657373206973203607c1b60448201526064015b60405180910390fd5b60405136600082376000803683856127105a03f43d806000843e8180156101bc578184f35b8184fd5b600080516020610543833981519152546001600160a01b0316336001600160a01b0316146102005760405162461bcd60e51b815260040161018e906104eb565b60006102186000805160206105238339815191525490565b9050816001600160a01b0316816001600160a01b031614156102a25760405162461bcd60e51b815260206004820152603760248201527f50726f78793a206e657720696d706c656d656e746174696f6e2069732074686560448201527f2063757272656e7420696d706c656d656e746174696f6e000000000000000000606482015260840161018e565b6102b88260008051602061052383398151915255565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b600080516020610543833981519152546001600160a01b0316336001600160a01b0316146103305760405162461bcd60e51b815260040161018e906104eb565b6001600160a01b0381166103865760405162461bcd60e51b815260206004820181905260248201527f50726f78793a206e6577206f776e65722069732061646472657373207a65726f604482015260640161018e565b600080516020610543833981519152546001600160a01b0316816001600160a01b031614156104055760405162461bcd60e51b815260206004820152602560248201527f50726f78793a206e6577206f776e6572206973207468652063757272656e742060448201526437bbb732b960d91b606482015260840161018e565b806001600160a01b03166104256000805160206105438339815191525490565b6001600160a01b03167f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd960405160405180910390a36104708160008051602061054383398151915255565b50565b600080516020610543833981519152546001600160a01b0316336001600160a01b0316146104b35760405162461bcd60e51b815260040161018e906104eb565b61047061012e565b6000602082840312156104cd57600080fd5b81356001600160a01b03811681146104e457600080fd5b9392505050565b6020808252601d908201527f50726f78793a2043616c6c6572206e6f742070726f7879206f776e657200000060408201526060019056fe25f79f54c2493e1fcb8ec8142a20f642f9b285503924a428782f2da3ab982793e5e0c3d198ec6f12dff112a0be8a35a365b3a1eac673f5a3e1f5ca9e6e914f25a264697066735822122042c952bcf8c7b02f00b63be60f4dbb18aaa186f4f9464ce25e15761c12082b8664736f6c63430008070033000000000000000000000000ff0dcc7a6c1649ffc33f8df0086582b6ba95a497
Deployed Bytecode
0x60806040526004361061004e5760003560e01c8063025313a2146100725780633659cfe6146100ac5780635c60da1b146100cc578063f1739cae146100ee578063f2fde38b1461010e5761005d565b3661005d5761005b61012e565b005b34801561006957600080fd5b5061005b61012e565b34801561007e57600080fd5b50600080516020610543833981519152545b6040516001600160a01b03909116815260200160405180910390f35b3480156100b857600080fd5b5061005b6100c73660046104bb565b6101c0565b3480156100d857600080fd5b5060008051602061052383398151915254610090565b3480156100fa57600080fd5b5061005b6101093660046104bb565b6102f0565b34801561011a57600080fd5b5061005b6101293660046104bb565b610473565b60006101466000805160206105238339815191525490565b90506001600160a01b0381166101975760405162461bcd60e51b81526020600482015260116024820152700496d706c2061646472657373206973203607c1b60448201526064015b60405180910390fd5b60405136600082376000803683856127105a03f43d806000843e8180156101bc578184f35b8184fd5b600080516020610543833981519152546001600160a01b0316336001600160a01b0316146102005760405162461bcd60e51b815260040161018e906104eb565b60006102186000805160206105238339815191525490565b9050816001600160a01b0316816001600160a01b031614156102a25760405162461bcd60e51b815260206004820152603760248201527f50726f78793a206e657720696d706c656d656e746174696f6e2069732074686560448201527f2063757272656e7420696d706c656d656e746174696f6e000000000000000000606482015260840161018e565b6102b88260008051602061052383398151915255565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a25050565b600080516020610543833981519152546001600160a01b0316336001600160a01b0316146103305760405162461bcd60e51b815260040161018e906104eb565b6001600160a01b0381166103865760405162461bcd60e51b815260206004820181905260248201527f50726f78793a206e6577206f776e65722069732061646472657373207a65726f604482015260640161018e565b600080516020610543833981519152546001600160a01b0316816001600160a01b031614156104055760405162461bcd60e51b815260206004820152602560248201527f50726f78793a206e6577206f776e6572206973207468652063757272656e742060448201526437bbb732b960d91b606482015260840161018e565b806001600160a01b03166104256000805160206105438339815191525490565b6001600160a01b03167f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd960405160405180910390a36104708160008051602061054383398151915255565b50565b600080516020610543833981519152546001600160a01b0316336001600160a01b0316146104b35760405162461bcd60e51b815260040161018e906104eb565b61047061012e565b6000602082840312156104cd57600080fd5b81356001600160a01b03811681146104e457600080fd5b9392505050565b6020808252601d908201527f50726f78793a2043616c6c6572206e6f742070726f7879206f776e657200000060408201526060019056fe25f79f54c2493e1fcb8ec8142a20f642f9b285503924a428782f2da3ab982793e5e0c3d198ec6f12dff112a0be8a35a365b3a1eac673f5a3e1f5ca9e6e914f25a264697066735822122042c952bcf8c7b02f00b63be60f4dbb18aaa186f4f9464ce25e15761c12082b8664736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ff0dcc7a6c1649ffc33f8df0086582b6ba95a497
-----Decoded View---------------
Arg [0] : _impl (address): 0xFf0dCc7A6C1649Ffc33f8Df0086582B6BA95a497
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ff0dcc7a6c1649ffc33f8df0086582b6ba95a497
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)