Feature Tip: Add private address tag to any address under My Name Tag !
ERC-721
Overview
Max Total Supply
0 GS
Holders
218
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
0 GSLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
UnstructuredProxy
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-09 */ // File: @openzeppelin/contracts/proxy/Proxy.sol pragma solidity ^0.8.0; /** * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to * be specified by overriding the virtual {_implementation} function. * * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a * different contract through the {_delegate} function. * * The success and return data of the delegated call will be returned back to the caller of the proxy. */ abstract contract Proxy { /** * @dev Delegates the current call to `implementation`. * * This function does not return to its internall call site, it will return directly to the external caller. */ function _delegate(address implementation) internal virtual { assembly { // Copy msg.data. We take full control of memory in this inline assembly // block because it will not return to Solidity code. We overwrite the // Solidity scratch pad at memory position 0. calldatacopy(0, 0, calldatasize()) // Call the implementation. // out and outsize are 0 because we don't know the size yet. let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0) // Copy the returned data. returndatacopy(0, 0, returndatasize()) switch result // delegatecall returns 0 on error. case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } /** * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function * and {_fallback} should delegate. */ function _implementation() internal view virtual returns (address); /** * @dev Delegates the current call to the address returned by `_implementation()`. * * This function does not return to its internall call site, it will return directly to the external caller. */ function _fallback() internal virtual { _beforeFallback(); _delegate(_implementation()); } /** * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other * function in the contract matches the call data. */ fallback() external payable virtual { _fallback(); } /** * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data * is empty. */ receive() external payable virtual { _fallback(); } /** * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback` * call, or as part of the Solidity `fallback` or `receive` functions. * * If overriden should call `super._beforeFallback()`. */ function _beforeFallback() internal virtual {} } // File: contracts/Proxy.sol pragma solidity ^0.8.4; contract UnstructuredProxy is Proxy { // Storage position of the address of the current implementation bytes32 private constant implementationPosition = keccak256("org.smartdefi.implementation.address"); // Storage position of the owner of the contract bytes32 private constant proxyOwnerPosition = keccak256("org.smartdefi.proxy.owner"); /** * @dev Throws if called by any account other than the owner. */ modifier onlyProxyOwner() { require (msg.sender == proxyOwner(), "Not Proxy owner"); _; } /** * @dev the constructor sets owner */ constructor() { _setUpgradeabilityOwner(msg.sender); } /** * @dev Allows the current owner to transfer ownership * @param _newOwner The address to transfer ownership to */ function transferProxyOwnership(address _newOwner) public onlyProxyOwner { require(_newOwner != address(0)); _setUpgradeabilityOwner(_newOwner); } /** * @dev Allows the proxy owner to upgrade the implementation * @param _impl address of the new implementation */ function upgradeTo(address _impl) public onlyProxyOwner { _upgradeTo(_impl); } /** * @dev Tells the address of the current implementation * @return impl address of the current implementation */ function _implementation() internal view override returns (address impl) { bytes32 position = implementationPosition; assembly { impl := sload(position) } } function implementation() external view returns (address) { return _implementation(); } /** * @dev Tells the address of the owner * @return owner 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 current implementation * @param _newImplementation address of the new implementation */ function _setImplementation(address _newImplementation) internal { bytes32 position = implementationPosition; assembly { sstore(position, _newImplementation) } } /** * @dev Upgrades the implementation address * @param _newImplementation address of the new implementation */ function _upgradeTo(address _newImplementation) internal { address currentImplementation = _implementation(); require(currentImplementation != _newImplementation); _setImplementation(_newImplementation); } /** * @dev Sets the address of the owner */ function _setUpgradeabilityOwner(address _newProxyOwner) internal { bytes32 position = proxyOwnerPosition; assembly { sstore(position, _newProxyOwner) } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyOwner","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_impl","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b506100203361002560201b60201c565b610051565b60007f41abdf0bc588410884c48a0fda5e2a0b74e12008127712c9a6c9ef14b05dadeb90508181555050565b610504806100606000396000f3fe6080604052600436106100435760003560e01c8063025313a21461005c5780633659cfe6146100875780635c60da1b146100b0578063f1739cae146100db57610052565b3661005257610050610104565b005b61005a610104565b005b34801561006857600080fd5b5061007161011e565b60405161007e919061040b565b60405180910390f35b34801561009357600080fd5b506100ae60048036038101906100a991906103ac565b61014c565b005b3480156100bc57600080fd5b506100c56101cd565b6040516100d2919061040b565b60405180910390f35b3480156100e757600080fd5b5061010260048036038101906100fd91906103ac565b6101dc565b005b61010c610297565b61011c610117610299565b6102c7565b565b6000807f41abdf0bc588410884c48a0fda5e2a0b74e12008127712c9a6c9ef14b05dadeb9050805491505090565b61015461011e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101b890610426565b60405180910390fd5b6101ca816102ed565b50565b60006101d7610299565b905090565b6101e461011e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024890610426565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561028b57600080fd5b6102948161033f565b50565b565b6000807ffede9e42e1fa6028f70c9467c66f74b1840d179d4e78cd28a66d5f518a70a7ae9050805491505090565b3660008037600080366000845af43d6000803e80600081146102e8573d6000f35b3d6000fd5b60006102f7610299565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561033257600080fd5b61033b8261036b565b5050565b60007f41abdf0bc588410884c48a0fda5e2a0b74e12008127712c9a6c9ef14b05dadeb90508181555050565b60007ffede9e42e1fa6028f70c9467c66f74b1840d179d4e78cd28a66d5f518a70a7ae90508181555050565b6000813590506103a6816104b7565b92915050565b6000602082840312156103c2576103c1610489565b5b60006103d084828501610397565b91505092915050565b6103e281610457565b82525050565b60006103f5600f83610446565b91506104008261048e565b602082019050919050565b600060208201905061042060008301846103d9565b92915050565b6000602082019050818103600083015261043f816103e8565b9050919050565b600082825260208201905092915050565b600061046282610469565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b7f4e6f742050726f7879206f776e65720000000000000000000000000000000000600082015250565b6104c081610457565b81146104cb57600080fd5b5056fea2646970667358221220da76c2af21c828b8e721029fbbf7a1bf578edb964b4856ee3b950e2f251e34a464736f6c63430008070033
Deployed Bytecode
0x6080604052600436106100435760003560e01c8063025313a21461005c5780633659cfe6146100875780635c60da1b146100b0578063f1739cae146100db57610052565b3661005257610050610104565b005b61005a610104565b005b34801561006857600080fd5b5061007161011e565b60405161007e919061040b565b60405180910390f35b34801561009357600080fd5b506100ae60048036038101906100a991906103ac565b61014c565b005b3480156100bc57600080fd5b506100c56101cd565b6040516100d2919061040b565b60405180910390f35b3480156100e757600080fd5b5061010260048036038101906100fd91906103ac565b6101dc565b005b61010c610297565b61011c610117610299565b6102c7565b565b6000807f41abdf0bc588410884c48a0fda5e2a0b74e12008127712c9a6c9ef14b05dadeb9050805491505090565b61015461011e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101b890610426565b60405180910390fd5b6101ca816102ed565b50565b60006101d7610299565b905090565b6101e461011e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610251576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024890610426565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561028b57600080fd5b6102948161033f565b50565b565b6000807ffede9e42e1fa6028f70c9467c66f74b1840d179d4e78cd28a66d5f518a70a7ae9050805491505090565b3660008037600080366000845af43d6000803e80600081146102e8573d6000f35b3d6000fd5b60006102f7610299565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561033257600080fd5b61033b8261036b565b5050565b60007f41abdf0bc588410884c48a0fda5e2a0b74e12008127712c9a6c9ef14b05dadeb90508181555050565b60007ffede9e42e1fa6028f70c9467c66f74b1840d179d4e78cd28a66d5f518a70a7ae90508181555050565b6000813590506103a6816104b7565b92915050565b6000602082840312156103c2576103c1610489565b5b60006103d084828501610397565b91505092915050565b6103e281610457565b82525050565b60006103f5600f83610446565b91506104008261048e565b602082019050919050565b600060208201905061042060008301846103d9565b92915050565b6000602082019050818103600083015261043f816103e8565b9050919050565b600082825260208201905092915050565b600061046282610469565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b7f4e6f742050726f7879206f776e65720000000000000000000000000000000000600082015250565b6104c081610457565b81146104cb57600080fd5b5056fea2646970667358221220da76c2af21c828b8e721029fbbf7a1bf578edb964b4856ee3b950e2f251e34a464736f6c63430008070033
Deployed Bytecode Sourcemap
3352:3184:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2928:11;:9;:11::i;:::-;3352:3184;;2697:11;:9;:11::i;:::-;3352:3184;5298:183;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4569:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5076:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4233:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2334:113;2383:17;:15;:17::i;:::-;2411:28;2421:17;:15;:17::i;:::-;2411:9;:28::i;:::-;2334:113::o;5298:183::-;5341:13;5367:16;3703:38;5367:37;;5454:8;5448:15;5439:24;;5424:50;5298:183;:::o;4569:107::-;3897:12;:10;:12::i;:::-;3883:26;;:10;:26;;;3874:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;4651:17:::1;4662:5;4651:10;:17::i;:::-;4569:107:::0;:::o;5076:101::-;5125:7;5152:17;:15;:17::i;:::-;5145:24;;5076:101;:::o;4233:185::-;3897:12;:10;:12::i;:::-;3883:26;;:10;:26;;;3874:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;4362:1:::1;4341:23;;:9;:23;;;;4333:32;;;::::0;::::1;;4376:34;4400:9;4376:23;:34::i;:::-;4233:185:::0;:::o;3236:46::-;:::o;4826:242::-;4921:12;4951:16;3531:49;4951:41;;5041:8;5035:15;5027:23;;5012:49;4826:242;:::o;924:918::-;1267:14;1264:1;1261;1248:34;1485:1;1482;1466:14;1463:1;1447:14;1440:5;1427:60;1564:16;1561:1;1558;1543:38;1604:6;1678:1;1673:68;;;;1792:16;1789:1;1782:27;1673:68;1709:16;1706:1;1699:27;6008:237;6076:29;6108:17;:15;:17::i;:::-;6076:49;;6169:18;6144:43;;:21;:43;;;;6136:52;;;;;;6199:38;6218:18;6199;:38::i;:::-;6065:180;6008:237;:::o;6318:215::-;6411:16;3703:38;6411:37;;6500:14;6490:8;6483:32;6468:58;6318:215;:::o;5639:222::-;5731:16;3531:49;5731:41;;5824:18;5814:8;5807:36;5792:62;5639:222;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:329::-;211:6;260:2;248:9;239:7;235:23;231:32;228:119;;;266:79;;:::i;:::-;228:119;386:1;411:53;456:7;447:6;436:9;432:22;411:53;:::i;:::-;401:63;;357:117;152:329;;;;:::o;487:118::-;574:24;592:5;574:24;:::i;:::-;569:3;562:37;487:118;;:::o;611:366::-;753:3;774:67;838:2;833:3;774:67;:::i;:::-;767:74;;850:93;939:3;850:93;:::i;:::-;968:2;963:3;959:12;952:19;;611:366;;;:::o;983:222::-;1076:4;1114:2;1103:9;1099:18;1091:26;;1127:71;1195:1;1184:9;1180:17;1171:6;1127:71;:::i;:::-;983:222;;;;:::o;1211:419::-;1377:4;1415:2;1404:9;1400:18;1392:26;;1464:9;1458:4;1454:20;1450:1;1439:9;1435:17;1428:47;1492:131;1618:4;1492:131;:::i;:::-;1484:139;;1211:419;;;:::o;1717:169::-;1801:11;1835:6;1830:3;1823:19;1875:4;1870:3;1866:14;1851:29;;1717:169;;;;:::o;1892:96::-;1929:7;1958:24;1976:5;1958:24;:::i;:::-;1947:35;;1892:96;;;:::o;1994:126::-;2031:7;2071:42;2064:5;2060:54;2049:65;;1994:126;;;:::o;2249:117::-;2358:1;2355;2348:12;2372:165;2512:17;2508:1;2500:6;2496:14;2489:41;2372:165;:::o;2543:122::-;2616:24;2634:5;2616:24;:::i;:::-;2609:5;2606:35;2596:63;;2655:1;2652;2645:12;2596:63;2543:122;:::o
Swarm Source
ipfs://da76c2af21c828b8e721029fbbf7a1bf578edb964b4856ee3b950e2f251e34a4
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.