Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
500,000 FPR
Holders
362
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
51.468010722474880042 FPRValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
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:
FPRUpgradeabilityProxy
Compiler Version
v0.4.21+commit.dfe3193c
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-12-22 */ // File: contracts\Proxy.sol // SPDX-License-Identifier: MIT pragma solidity ^0.4.21; /** * @title Proxy * @dev Gives the possibility to delegate any call to a foreign implementation. */ contract Proxy { /** * @dev Tells the address of the implementation where every call will be delegated. * @return address of the implementation to which it will be delegated */ function implementation() public view returns (address); /** * @dev Fallback function allowing to perform a delegatecall to the given implementation. * This function will return whatever the implementation call returns */ function () payable public { address _impl = implementation(); require(_impl != address(0)); assembly { let ptr := mload(0x40) calldatacopy(ptr, 0, calldatasize) let result := delegatecall(gas, _impl, ptr, calldatasize, 0, 0) let size := returndatasize returndatacopy(ptr, 0, size) switch result case 0 { revert(ptr, size) } default { return(ptr, size) } } } } // File: contracts\UpgradeabilityProxy.sol // SPDX-License-Identifier: MIT pragma solidity ^0.4.21; /** * @title UpgradeabilityProxy * @dev This contract represents a proxy where the implementation address to which it will delegate can be upgraded */ contract UpgradeabilityProxy is Proxy { /** * @dev This event will be emitted every time the implementation gets upgraded * @param implementation representing the address of the upgraded implementation */ event Upgraded(address indexed implementation); // Storage position of the address of the current implementation bytes32 private constant implementationPosition = keccak256("org.zeppelinos.proxy.implementation"); /** * @dev Constructor function */ function UpgradeabilityProxy() public {} /** * @dev Tells the address of the current implementation * @return address of the current implementation */ function implementation() public view returns (address impl) { bytes32 position = implementationPosition; assembly { impl := sload(position) } } /** * @dev Sets the address of the current implementation * @param newImplementation address representing the new implementation to be set */ function setImplementation(address newImplementation) internal { bytes32 position = implementationPosition; assembly { sstore(position, newImplementation) } } /** * @dev Upgrades the implementation address * @param newImplementation representing the address of the new implementation to be set */ function _upgradeTo(address newImplementation) internal { address currentImplementation = implementation(); require(currentImplementation != newImplementation); setImplementation(newImplementation); emit Upgraded(newImplementation); } } // File: contracts\FPRUpgradeabilityProxy.sol // SPDX-License-Identifier: MIT pragma solidity ^0.4.21; /** * @title FPRUpgradeabilityProxy * @dev This contract combines an upgradeability proxy with basic authorization control functionalities for FPR token */ contract FPRUpgradeabilityProxy is UpgradeabilityProxy { /** * @dev Event to show ownership has been transferred * @param previousOwner representing the address of the previous owner * @param newOwner representing the address of the new owner */ event ProxyOwnershipTransferred(address previousOwner, address newOwner); // Storage position of the owner of the contract bytes32 private constant proxyOwnerPosition = keccak256("org.zeppelinos.proxy.owner"); /** * @dev the constructor sets the original owner of the contract to the sender account. */ function FPRUpgradeabilityProxy() public { setUpgradeabilityOwner(msg.sender); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyProxyOwner() { require(msg.sender == proxyOwner()); _; } /** * @dev Tells the address of the owner * @return the address of the owner */ function proxyOwner() public view returns (address owner) { bytes32 position = proxyOwnerPosition; assembly { owner := sload(position) } } /** * @dev Sets the address of the owner */ function setUpgradeabilityOwner(address newProxyOwner) internal { bytes32 position = proxyOwnerPosition; assembly { sstore(position, newProxyOwner) } } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferProxyOwnership(address newOwner) public onlyProxyOwner { require(newOwner != address(0)); emit ProxyOwnershipTransferred(proxyOwner(), newOwner); setUpgradeabilityOwner(newOwner); } /** * @dev Allows the proxy owner to upgrade the current version of the proxy. * @param implementation representing the address of the new implementation to be set. */ function upgradeTo(address implementation) public onlyProxyOwner { _upgradeTo(implementation); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"proxyOwner","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"implementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"name":"impl","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"ProxyOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}]
Contract Creation Code
6060604052341561000f57600080fd5b610025336401000000006102f461002a82021704565b610065565b60006040517f6f72672e7a657070656c696e6f732e70726f78792e6f776e65720000000000008152601a016040519081900390209190915550565b6103bc806100746000396000f3006060604052600436106100615763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025313a281146100a75780633659cfe6146100d65780635c60da1b146100f7578063f1739cae1461010a575b600061006b610129565b9050600160a060020a038116151561008257600080fd5b60405136600082376000803683855af43d806000843e8180156100a3578184f35b8184fd5b34156100b257600080fd5b6100ba61018b565b604051600160a060020a03909116815260200160405180910390f35b34156100e157600080fd5b6100f5600160a060020a03600435166101c7565b005b341561010257600080fd5b6100ba610129565b341561011557600080fd5b6100f5600160a060020a03600435166101fa565b6000806040517f6f72672e7a657070656c696e6f732e70726f78792e696d706c656d656e74617481527f696f6e000000000000000000000000000000000000000000000000000000000060208201526023016040519081900390205492915050565b6000806040517f6f72672e7a657070656c696e6f732e70726f78792e6f776e65720000000000008152601a016040519081900390205492915050565b6101cf61018b565b600160a060020a031633600160a060020a03161415156101ee57600080fd5b6101f78161028c565b50565b61020261018b565b600160a060020a031633600160a060020a031614151561022157600080fd5b600160a060020a038116151561023657600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd961025f61018b565b82604051600160a060020a039283168152911660208201526040908101905180910390a16101f7816102f4565b6000610296610129565b9050600160a060020a0380821690831614156102b157600080fd5b6102ba8261032f565b81600160a060020a03167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25050565b60006040517f6f72672e7a657070656c696e6f732e70726f78792e6f776e65720000000000008152601a016040519081900390209190915550565b60006040517f6f72672e7a657070656c696e6f732e70726f78792e696d706c656d656e74617481527f696f6e0000000000000000000000000000000000000000000000000000000000602082015260230160405190819003902091909155505600a165627a7a723058205c13cf055768fce493a542f9c29e1cc42789c8fcc8065fef2a105163369291730029
Deployed Bytecode
0x6060604052600436106100615763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025313a281146100a75780633659cfe6146100d65780635c60da1b146100f7578063f1739cae1461010a575b600061006b610129565b9050600160a060020a038116151561008257600080fd5b60405136600082376000803683855af43d806000843e8180156100a3578184f35b8184fd5b34156100b257600080fd5b6100ba61018b565b604051600160a060020a03909116815260200160405180910390f35b34156100e157600080fd5b6100f5600160a060020a03600435166101c7565b005b341561010257600080fd5b6100ba610129565b341561011557600080fd5b6100f5600160a060020a03600435166101fa565b6000806040517f6f72672e7a657070656c696e6f732e70726f78792e696d706c656d656e74617481527f696f6e000000000000000000000000000000000000000000000000000000000060208201526023016040519081900390205492915050565b6000806040517f6f72672e7a657070656c696e6f732e70726f78792e6f776e65720000000000008152601a016040519081900390205492915050565b6101cf61018b565b600160a060020a031633600160a060020a03161415156101ee57600080fd5b6101f78161028c565b50565b61020261018b565b600160a060020a031633600160a060020a031614151561022157600080fd5b600160a060020a038116151561023657600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd961025f61018b565b82604051600160a060020a039283168152911660208201526040908101905180910390a16101f7816102f4565b6000610296610129565b9050600160a060020a0380821690831614156102b157600080fd5b6102ba8261032f565b81600160a060020a03167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25050565b60006040517f6f72672e7a657070656c696e6f732e70726f78792e6f776e65720000000000008152601a016040519081900390209190915550565b60006040517f6f72672e7a657070656c696e6f732e70726f78792e696d706c656d656e74617481527f696f6e0000000000000000000000000000000000000000000000000000000000602082015260230160405190819003902091909155505600a165627a7a723058205c13cf055768fce493a542f9c29e1cc42789c8fcc8065fef2a105163369291730029
Deployed Bytecode Sourcemap
3226:2024:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;666:13;682:16;:14;:16::i;:::-;666:32;-1:-1:-1;;;;;;713:19:0;;;;705:28;;;;;;777:4;771:11;811:12;808:1;803:3;790:34;893:1;890;876:12;871:3;864:5;859:3;846:49;915:14;960:4;957:1;952:3;937:28;982:6;996:28;;;;1054:4;1049:3;1042:17;996:28;1017:4;1012:3;1005:17;4169:163;;;;;;;;;;;;;;;-1:-1:-1;;;;;4169:163:0;;;;;;;;;;;;;;5141:104;;;;;;;;;;-1:-1:-1;;;;;5141:104:0;;;;;;;2013:169;;;;;;;;;;;;4736:216;;;;;;;;;;-1:-1:-1;;;;;4736:216:0;;;;;2013:169;2060:12;2081:16;1741:48;;;;;;;;;;;;;;;;;;;;2155:15;;2138:39;-1:-1:-1;;2138:39:0:o;4169:163::-;4212:13;4234:16;3667:39;;;;;;;;;;;;;;;4305:15;;4287:40;-1:-1:-1;;4287:40:0:o;5141:104::-;4041:12;:10;:12::i;:::-;-1:-1:-1;;;;;4027:26:0;:10;-1:-1:-1;;;;;4027:26:0;;4019:35;;;;;;;;5213:26;5224:14;5213:10;:26::i;:::-;5141:104;:::o;4736:216::-;4041:12;:10;:12::i;:::-;-1:-1:-1;;;;;4027:26:0;:10;-1:-1:-1;;;;;4027:26:0;;4019:35;;;;;;;;-1:-1:-1;;;;;4823:22:0;;;;4815:31;;;;;;4858:49;4884:12;:10;:12::i;:::-;4898:8;4858:49;;-1:-1:-1;;;;;4858:49:0;;;;;;;;;;;;;;;;;;;;;;4914:32;4937:8;4914:22;:32::i;2687:257::-;2750:29;2782:16;:14;:16::i;:::-;2750:48;-1:-1:-1;;;;;;2813:42:0;;;;;;;;2805:51;;;;;;2863:36;2881:17;2863;:36::i;:::-;2920:17;-1:-1:-1;;;;;2911:27:0;;;;;;;;;;;2687:257;;:::o;4393:176::-;4464:16;3667:39;;;;;;;;;;;;;;;4526:31;;;;-1:-1:-1;4517:47:0:o;2345:183::-;2415:16;1741:48;;;;;;;;;;;;;;;;;;;;2481:35;;;;-1:-1:-1;2472:51:0:o
Swarm Source
bzzr://5c13cf055768fce493a542f9c29e1cc42789c8fcc8065fef2a10516336929173
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.