Overview
Max Total Supply
2,162,695.510718653150060798 veDOUGH
Holders
342 (0.00%)
Transfers
-
0
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
PProxy
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 800 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.7.1;
import "./PProxyStorage.sol";
contract PProxy is PProxyStorage {
bytes32 constant IMPLEMENTATION_SLOT = keccak256(abi.encodePacked("IMPLEMENTATION_SLOT"));
bytes32 constant OWNER_SLOT = keccak256(abi.encodePacked("OWNER_SLOT"));
modifier onlyProxyOwner() {
require(msg.sender == readAddress(OWNER_SLOT), "PProxy.onlyProxyOwner: msg sender not owner");
_;
}
constructor () public {
setAddress(OWNER_SLOT, msg.sender);
}
function getProxyOwner() public view returns (address) {
return readAddress(OWNER_SLOT);
}
function setProxyOwner(address _newOwner) onlyProxyOwner public {
setAddress(OWNER_SLOT, _newOwner);
}
function getImplementation() public view returns (address) {
return readAddress(IMPLEMENTATION_SLOT);
}
function setImplementation(address _newImplementation) onlyProxyOwner public {
setAddress(IMPLEMENTATION_SLOT, _newImplementation);
}
fallback () external payable {
return internalFallback();
}
function internalFallback() internal virtual {
address contractAddr = readAddress(IMPLEMENTATION_SLOT);
assembly {
let ptr := mload(0x40)
calldatacopy(ptr, 0, calldatasize())
let result := delegatecall(gas(), contractAddr, ptr, calldatasize(), 0, 0)
let size := returndatasize()
returndatacopy(ptr, 0, size)
switch result
case 0 { revert(ptr, size) }
default { return(ptr, size) }
}
}
}pragma solidity ^0.7.1;
contract PProxyStorage {
function readBool(bytes32 _key) public view returns(bool) {
return storageRead(_key) == bytes32(uint256(1));
}
function setBool(bytes32 _key, bool _value) internal {
if(_value) {
storageSet(_key, bytes32(uint256(1)));
} else {
storageSet(_key, bytes32(uint256(0)));
}
}
function readAddress(bytes32 _key) public view returns(address) {
return bytes32ToAddress(storageRead(_key));
}
function setAddress(bytes32 _key, address _value) internal {
storageSet(_key, addressToBytes32(_value));
}
function storageRead(bytes32 _key) public view returns(bytes32) {
bytes32 value;
//solium-disable-next-line security/no-inline-assembly
assembly {
value := sload(_key)
}
return value;
}
function storageSet(bytes32 _key, bytes32 _value) internal {
// targetAddress = _address; // No!
bytes32 implAddressStorageKey = _key;
//solium-disable-next-line security/no-inline-assembly
assembly {
sstore(implAddressStorageKey, _value)
}
}
function bytes32ToAddress(bytes32 _value) public pure returns(address) {
return address(uint160(uint256(_value)));
}
function addressToBytes32(address _value) public pure returns(bytes32) {
return bytes32(uint256(_value));
}
}{
"optimizer": {
"enabled": true,
"runs": 800
},
"metadata": {
"bytecodeHash": "none",
"useLiteralContent": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"_value","type":"address"}],"name":"addressToBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_value","type":"bytes32"}],"name":"bytes32ToAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProxyOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"readAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"readBool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newImplementation","type":"address"}],"name":"setImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"setProxyOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"storageRead","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b5061005460405160200180806913d5d3915497d4d313d560b21b815250600a019050604051602081830303815290604052805190602001203361005960201b60201c565b61007f565b61006b826100668361006f565b61007b565b5050565b6001600160a01b031690565b9055565b61056f8061008e6000396000f3fe6080604052600436106100965760003560e01c80639d84ae6911610069578063bb15ac8e1161004e578063bb15ac8e146101a9578063caaee91c146101e7578063d784d4261461021a57610096565b80639d84ae691461016a578063aaf10f421461019457610096565b80631ab7710d146100a057806337a440e6146100d15780635ced058e1461010d57806382c947b714610137575b61009e61024d565b005b3480156100ac57600080fd5b506100b56102bb565b604080516001600160a01b039092168252519081900360200190f35b3480156100dd57600080fd5b506100fb600480360360208110156100f457600080fd5b50356102fe565b60408051918252519081900360200190f35b34801561011957600080fd5b506100b56004803603602081101561013057600080fd5b5035610302565b34801561014357600080fd5b506100fb6004803603602081101561015a57600080fd5b50356001600160a01b0316610305565b34801561017657600080fd5b506100b56004803603602081101561018d57600080fd5b5035610311565b3480156101a057600080fd5b506100b561032a565b3480156101b557600080fd5b506101d3600480360360208110156101cc57600080fd5b5035610371565b604080519115158252519081900360200190f35b3480156101f357600080fd5b5061009e6004803603602081101561020a57600080fd5b50356001600160a01b0316610385565b34801561022657600080fd5b5061009e6004803603602081101561023d57600080fd5b50356001600160a01b0316610450565b600061029460405160200180807212535413115351539510551253d397d4d313d5606a1b815250601301905060405160208183030381529060405280519060200120610311565b905060405136600082376000803683855af43d806000843e8180156102b7578184f35b8184fd5b60006102f960405160200180806913d5d3915497d4d313d560b21b815250600a01905060405160208183030381529060405280519060200120610311565b905090565b5490565b90565b6001600160a01b031690565b600061032461031f836102fe565b610302565b92915050565b60006102f960405160200180807212535413115351539510551253d397d4d313d5606a1b815250601301905060405160208183030381529060405280519060200120610311565b6000600161037e836102fe565b1492915050565b6103c160405160200180806913d5d3915497d4d313d560b21b815250600a01905060405160208183030381529060405280519060200120610311565b6001600160a01b0316336001600160a01b0316146104105760405162461bcd60e51b815260040180806020018281038252602b815260200180610538602b913960400191505060405180910390fd5b61044d60405160200180806913d5d3915497d4d313d560b21b815250600a019050604051602081830303815290604052805190602001208261051d565b50565b61048c60405160200180806913d5d3915497d4d313d560b21b815250600a01905060405160208183030381529060405280519060200120610311565b6001600160a01b0316336001600160a01b0316146104db5760405162461bcd60e51b815260040180806020018281038252602b815260200180610538602b913960400191505060405180910390fd5b61044d60405160200180807212535413115351539510551253d397d4d313d5606a1b815250601301905060405160208183030381529060405280519060200120825b61052f8261052a83610305565b610533565b5050565b905556fe5050726f78792e6f6e6c7950726f78794f776e65723a206d73672073656e646572206e6f74206f776e6572a164736f6c6343000706000a
Deployed Bytecode
0x6080604052600436106100965760003560e01c80639d84ae6911610069578063bb15ac8e1161004e578063bb15ac8e146101a9578063caaee91c146101e7578063d784d4261461021a57610096565b80639d84ae691461016a578063aaf10f421461019457610096565b80631ab7710d146100a057806337a440e6146100d15780635ced058e1461010d57806382c947b714610137575b61009e61024d565b005b3480156100ac57600080fd5b506100b56102bb565b604080516001600160a01b039092168252519081900360200190f35b3480156100dd57600080fd5b506100fb600480360360208110156100f457600080fd5b50356102fe565b60408051918252519081900360200190f35b34801561011957600080fd5b506100b56004803603602081101561013057600080fd5b5035610302565b34801561014357600080fd5b506100fb6004803603602081101561015a57600080fd5b50356001600160a01b0316610305565b34801561017657600080fd5b506100b56004803603602081101561018d57600080fd5b5035610311565b3480156101a057600080fd5b506100b561032a565b3480156101b557600080fd5b506101d3600480360360208110156101cc57600080fd5b5035610371565b604080519115158252519081900360200190f35b3480156101f357600080fd5b5061009e6004803603602081101561020a57600080fd5b50356001600160a01b0316610385565b34801561022657600080fd5b5061009e6004803603602081101561023d57600080fd5b50356001600160a01b0316610450565b600061029460405160200180807212535413115351539510551253d397d4d313d5606a1b815250601301905060405160208183030381529060405280519060200120610311565b905060405136600082376000803683855af43d806000843e8180156102b7578184f35b8184fd5b60006102f960405160200180806913d5d3915497d4d313d560b21b815250600a01905060405160208183030381529060405280519060200120610311565b905090565b5490565b90565b6001600160a01b031690565b600061032461031f836102fe565b610302565b92915050565b60006102f960405160200180807212535413115351539510551253d397d4d313d5606a1b815250601301905060405160208183030381529060405280519060200120610311565b6000600161037e836102fe565b1492915050565b6103c160405160200180806913d5d3915497d4d313d560b21b815250600a01905060405160208183030381529060405280519060200120610311565b6001600160a01b0316336001600160a01b0316146104105760405162461bcd60e51b815260040180806020018281038252602b815260200180610538602b913960400191505060405180910390fd5b61044d60405160200180806913d5d3915497d4d313d560b21b815250600a019050604051602081830303815290604052805190602001208261051d565b50565b61048c60405160200180806913d5d3915497d4d313d560b21b815250600a01905060405160208183030381529060405280519060200120610311565b6001600160a01b0316336001600160a01b0316146104db5760405162461bcd60e51b815260040180806020018281038252602b815260200180610538602b913960400191505060405180910390fd5b61044d60405160200180807212535413115351539510551253d397d4d313d5606a1b815250601301905060405160208183030381529060405280519060200120825b61052f8261052a83610305565b610533565b5050565b905556fe5050726f78792e6f6e6c7950726f78794f776e65723a206d73672073656e646572206e6f74206f776e6572a164736f6c6343000706000a
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)