More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 5,819 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Repay | 21227131 | 3 days ago | IN | 0 ETH | 0.00139691 | ||||
Repay | 21225158 | 3 days ago | IN | 0 ETH | 0.00171856 | ||||
Repay | 21223409 | 3 days ago | IN | 0 ETH | 0.00344711 | ||||
Claim Paired Ape... | 21213347 | 5 days ago | IN | 0 ETH | 0.0167361 | ||||
Claim Ape And Co... | 21213334 | 5 days ago | IN | 0 ETH | 0.05786611 | ||||
Claim Ape And Co... | 21213046 | 5 days ago | IN | 0 ETH | 0.15772887 | ||||
Repay | 21211649 | 5 days ago | IN | 0 ETH | 0.00167326 | ||||
Repay | 21202637 | 6 days ago | IN | 0 ETH | 0.00221433 | ||||
Supply ERC721 | 21202406 | 6 days ago | IN | 0 ETH | 0.00364719 | ||||
Supply | 21194321 | 7 days ago | IN | 0 ETH | 0.00428363 | ||||
Repay | 21187264 | 8 days ago | IN | 0 ETH | 0.00537582 | ||||
Supply ERC721 | 21172592 | 10 days ago | IN | 0 ETH | 0.00918592 | ||||
Repay | 21172493 | 10 days ago | IN | 0 ETH | 0.00701248 | ||||
Repay | 21170545 | 11 days ago | IN | 0 ETH | 0.00476333 | ||||
Supply | 21158861 | 12 days ago | IN | 0 ETH | 0.00455007 | ||||
Repay | 21150488 | 13 days ago | IN | 0 ETH | 0.00200414 | ||||
Repay | 21136238 | 15 days ago | IN | 0 ETH | 0.00238235 | ||||
Repay | 21136212 | 15 days ago | IN | 0 ETH | 0.00273835 | ||||
Repay | 21115563 | 18 days ago | IN | 0 ETH | 0.00217913 | ||||
Repay | 21106907 | 20 days ago | IN | 0 ETH | 0.00088087 | ||||
Repay | 21100076 | 21 days ago | IN | 0 ETH | 0.00084145 | ||||
Mint To Treasury | 21099023 | 21 days ago | IN | 0 ETH | 0.00043137 | ||||
Mint To Treasury | 21099019 | 21 days ago | IN | 0 ETH | 0.00256842 | ||||
Supply | 21097367 | 21 days ago | IN | 0 ETH | 0.00084127 | ||||
Repay | 21094822 | 21 days ago | IN | 0 ETH | 0.0015602 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20242657 | 140 days ago | 0.0085812 ETH | ||||
20242657 | 140 days ago | 27.4530997 ETH | ||||
20149840 | 153 days ago | 1.44 ETH | ||||
20149840 | 153 days ago | 1.44 ETH | ||||
20148330 | 153 days ago | 1.32 ETH | ||||
20148330 | 153 days ago | 1.32 ETH | ||||
19712496 | 214 days ago | 0.03892211 ETH | ||||
19712496 | 214 days ago | 0.40911788 ETH | ||||
19711826 | 214 days ago | 0.14769595 ETH | ||||
19711824 | 214 days ago | 0.14769595 ETH | ||||
19711822 | 214 days ago | 0.14769595 ETH | ||||
19677939 | 219 days ago | 0.00050033 ETH | ||||
19677939 | 219 days ago | 0.41340766 ETH | ||||
19677938 | 219 days ago | 0.00068979 ETH | ||||
19677938 | 219 days ago | 0.4132182 ETH | ||||
19677937 | 219 days ago | 0.00037403 ETH | ||||
19677937 | 219 days ago | 0.41353396 ETH | ||||
19677917 | 219 days ago | 0.00068979 ETH | ||||
19677917 | 219 days ago | 0.4132182 ETH | ||||
19677916 | 219 days ago | 0.00056349 ETH | ||||
19677916 | 219 days ago | 0.4133445 ETH | ||||
19677915 | 219 days ago | 0.00043718 ETH | ||||
19677915 | 219 days ago | 0.41347081 ETH | ||||
19677506 | 219 days ago | 0.00298151 ETH | ||||
19677506 | 219 days ago | 0.45149848 ETH |
Loading...
Loading
Contract Name:
ParaProxy
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
london EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /******************************************************************************\ * A custom implementation of EIP-2535 * EIP-2535: https://eips.ethereum.org/EIPS/eip-2535 /******************************************************************************/ import {ParaProxyLib} from "./lib/ParaProxyLib.sol"; import {IParaProxy} from "../../../interfaces/IParaProxy.sol"; contract ParaProxy is IParaProxy { constructor(address _contractOwner) payable { ParaProxyLib.setContractOwner(_contractOwner); } function updateImplementation( ProxyImplementation[] calldata _implementationParams, address _init, bytes calldata _calldata ) external override { ParaProxyLib.enforceIsContractOwner(); ParaProxyLib.updateImplementation( _implementationParams, _init, _calldata ); } // Find implementation for function that is called and execute the // function if a implementation is found and return any value. fallback() external payable { ParaProxyLib.ProxyStorage storage ds; bytes32 position = ParaProxyLib.PROXY_STORAGE_POSITION; // get proxy storage assembly { ds.slot := position } // get implementation from function selector address implementation = ds .selectorToImplAndPosition[msg.sig] .implAddress; require( implementation != address(0), "ParaProxy: Function does not exist" ); // Execute external function from implementation using delegatecall and return any value. assembly { // copy function selector and any arguments calldatacopy(0, 0, calldatasize()) // execute function call using the implementation let result := delegatecall( gas(), implementation, 0, calldatasize(), 0, 0 ) // get any return value returndatacopy(0, 0, returndatasize()) // return any return value or error back to the caller switch result case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } receive() external payable {} }
// SPDX-License-Identifier: AGPL-3.0 pragma solidity ^0.8.0; /******************************************************************************\ * EIP-2535: https://eips.ethereum.org/EIPS/eip-2535 /******************************************************************************/ interface IParaProxy { enum ProxyImplementationAction { Add, Replace, Remove } // Add=0, Replace=1, Remove=2 struct ProxyImplementation { address implAddress; ProxyImplementationAction action; bytes4[] functionSelectors; } /// @notice Add/replace/remove any number of functions and optionally execute /// a function with delegatecall /// @param _implementationParams Contains the implementation addresses and function selectors /// @param _init The address of the contract or implementation to execute _calldata /// @param _calldata A function call, including function selector and arguments /// _calldata is executed with delegatecall on _init function updateImplementation( ProxyImplementation[] calldata _implementationParams, address _init, bytes calldata _calldata ) external; event ImplementationUpdated( ProxyImplementation[] _implementationParams, address _init, bytes _calldata ); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /******************************************************************************\ * EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 /******************************************************************************/ import {IParaProxy} from "../../../../interfaces/IParaProxy.sol"; library ParaProxyLib { bytes32 constant PROXY_STORAGE_POSITION = bytes32( uint256(keccak256("paraspace.proxy.implementation.storage")) - 1 ); struct ImplementationAddressAndPosition { address implAddress; uint96 functionSelectorPosition; // position in implementationFunctionSelectors.functionSelectors array } struct ImplementationFunctionSelectors { bytes4[] functionSelectors; uint256 implementationAddressPosition; // position of implAddress in implementationAddresses array } struct ProxyStorage { // maps function selector to the implementation address and // the position of the selector in the implementationFunctionSelectors.selectors array mapping(bytes4 => ImplementationAddressAndPosition) selectorToImplAndPosition; // maps implementation addresses to function selectors mapping(address => ImplementationFunctionSelectors) implementationFunctionSelectors; // implementation addresses address[] implementationAddresses; // Used to query if a contract implements an interface. // Used to implement ERC-165. mapping(bytes4 => bool) supportedInterfaces; // owner of the contract address contractOwner; } function diamondStorage() internal pure returns (ProxyStorage storage ds) { bytes32 position = PROXY_STORAGE_POSITION; assembly { ds.slot := position } } event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); function setContractOwner(address _newOwner) internal { ProxyStorage storage ds = diamondStorage(); address previousOwner = ds.contractOwner; ds.contractOwner = _newOwner; emit OwnershipTransferred(previousOwner, _newOwner); } function contractOwner() internal view returns (address contractOwner_) { contractOwner_ = diamondStorage().contractOwner; } function enforceIsContractOwner() internal view { require( msg.sender == diamondStorage().contractOwner, "ParaProxy: Must be contract owner" ); } event ImplementationUpdated( IParaProxy.ProxyImplementation[] _implementationData, address _init, bytes _calldata ); // Internal function version of diamondCut function updateImplementation( IParaProxy.ProxyImplementation[] memory _implementationData, address _init, bytes memory _calldata ) internal { for ( uint256 implIndex; implIndex < _implementationData.length; implIndex++ ) { IParaProxy.ProxyImplementationAction action = _implementationData[ implIndex ].action; if (action == IParaProxy.ProxyImplementationAction.Add) { addFunctions( _implementationData[implIndex].implAddress, _implementationData[implIndex].functionSelectors ); } else if (action == IParaProxy.ProxyImplementationAction.Replace) { replaceFunctions( _implementationData[implIndex].implAddress, _implementationData[implIndex].functionSelectors ); } else if (action == IParaProxy.ProxyImplementationAction.Remove) { removeFunctions( _implementationData[implIndex].implAddress, _implementationData[implIndex].functionSelectors ); } else { revert("ParaProxy: Incorrect ProxyImplementationAction"); } } emit ImplementationUpdated(_implementationData, _init, _calldata); initializeImplementation(_init, _calldata); } function addFunctions( address _implementationAddress, bytes4[] memory _functionSelectors ) internal { require( _functionSelectors.length > 0, "ParaProxy: No selectors in implementation to cut" ); ProxyStorage storage ds = diamondStorage(); require( _implementationAddress != address(0), "ParaProxy: Add implementation can't be address(0)" ); uint96 selectorPosition = uint96( ds .implementationFunctionSelectors[_implementationAddress] .functionSelectors .length ); // add new implementation address if it does not exist if (selectorPosition == 0) { addFacet(ds, _implementationAddress); } for ( uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++ ) { bytes4 selector = _functionSelectors[selectorIndex]; address oldImplementationAddress = ds .selectorToImplAndPosition[selector] .implAddress; require( oldImplementationAddress == address(0), "ParaProxy: Can't add function that already exists" ); addFunction(ds, selector, selectorPosition, _implementationAddress); selectorPosition++; } } function replaceFunctions( address _implementationAddress, bytes4[] memory _functionSelectors ) internal { require( _functionSelectors.length > 0, "ParaProxy: No selectors in implementation to cut" ); ProxyStorage storage ds = diamondStorage(); require( _implementationAddress != address(0), "ParaProxy: Add implementation can't be address(0)" ); uint96 selectorPosition = uint96( ds .implementationFunctionSelectors[_implementationAddress] .functionSelectors .length ); // add new implementation address if it does not exist if (selectorPosition == 0) { addFacet(ds, _implementationAddress); } for ( uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++ ) { bytes4 selector = _functionSelectors[selectorIndex]; address oldImplementationAddress = ds .selectorToImplAndPosition[selector] .implAddress; require( oldImplementationAddress != _implementationAddress, "ParaProxy: Can't replace function with same function" ); removeFunction(ds, oldImplementationAddress, selector); addFunction(ds, selector, selectorPosition, _implementationAddress); selectorPosition++; } } function removeFunctions( address _implementationAddress, bytes4[] memory _functionSelectors ) internal { require( _functionSelectors.length > 0, "ParaProxy: No selectors in implementation to cut" ); ProxyStorage storage ds = diamondStorage(); // if function does not exist then do nothing and return require( _implementationAddress == address(0), "ParaProxy: Remove implementation address must be address(0)" ); for ( uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++ ) { bytes4 selector = _functionSelectors[selectorIndex]; address oldImplementationAddress = ds .selectorToImplAndPosition[selector] .implAddress; removeFunction(ds, oldImplementationAddress, selector); } } function addFacet(ProxyStorage storage ds, address _implementationAddress) internal { enforceHasContractCode( _implementationAddress, "ParaProxy: New implementation has no code" ); ds .implementationFunctionSelectors[_implementationAddress] .implementationAddressPosition = ds.implementationAddresses.length; ds.implementationAddresses.push(_implementationAddress); } function addFunction( ProxyStorage storage ds, bytes4 _selector, uint96 _selectorPosition, address _implementationAddress ) internal { ds .selectorToImplAndPosition[_selector] .functionSelectorPosition = _selectorPosition; ds .implementationFunctionSelectors[_implementationAddress] .functionSelectors .push(_selector); ds .selectorToImplAndPosition[_selector] .implAddress = _implementationAddress; } function removeFunction( ProxyStorage storage ds, address _implementationAddress, bytes4 _selector ) internal { require( _implementationAddress != address(0), "ParaProxy: Can't remove function that doesn't exist" ); // an immutable function is a function defined directly in a paraProxy require( _implementationAddress != address(this), "ParaProxy: Can't remove immutable function" ); // replace selector with last selector, then delete last selector uint256 selectorPosition = ds .selectorToImplAndPosition[_selector] .functionSelectorPosition; uint256 lastSelectorPosition = ds .implementationFunctionSelectors[_implementationAddress] .functionSelectors .length - 1; // if not the same then replace _selector with lastSelector if (selectorPosition != lastSelectorPosition) { bytes4 lastSelector = ds .implementationFunctionSelectors[_implementationAddress] .functionSelectors[lastSelectorPosition]; ds .implementationFunctionSelectors[_implementationAddress] .functionSelectors[selectorPosition] = lastSelector; ds .selectorToImplAndPosition[lastSelector] .functionSelectorPosition = uint96(selectorPosition); } // delete the last selector ds .implementationFunctionSelectors[_implementationAddress] .functionSelectors .pop(); delete ds.selectorToImplAndPosition[_selector]; // if no more selectors for implementation address then delete the implementation address if (lastSelectorPosition == 0) { // replace implementation address with last implementation address and delete last implementation address uint256 lastImplementationAddressPosition = ds .implementationAddresses .length - 1; uint256 implementationAddressPosition = ds .implementationFunctionSelectors[_implementationAddress] .implementationAddressPosition; if ( implementationAddressPosition != lastImplementationAddressPosition ) { address lastImplementationAddress = ds.implementationAddresses[ lastImplementationAddressPosition ]; ds.implementationAddresses[ implementationAddressPosition ] = lastImplementationAddress; ds .implementationFunctionSelectors[lastImplementationAddress] .implementationAddressPosition = implementationAddressPosition; } ds.implementationAddresses.pop(); delete ds .implementationFunctionSelectors[_implementationAddress] .implementationAddressPosition; } } function initializeImplementation(address _init, bytes memory _calldata) internal { if (_init == address(0)) { require( _calldata.length == 0, "ParaProxy: _init is address(0) but_calldata is not empty" ); } else { require( _calldata.length > 0, "ParaProxy: _calldata is empty but _init is not address(0)" ); if (_init != address(this)) { enforceHasContractCode( _init, "ParaProxy: _init address has no code" ); } (bool success, bytes memory error) = _init.delegatecall(_calldata); if (!success) { if (error.length > 0) { // bubble up the error revert(string(error)); } else { revert("ParaProxy: _init function reverted"); } } } } function enforceHasContractCode( address _contract, string memory _errorMessage ) internal view { uint256 contractSize; assembly { contractSize := extcodesize(_contract) } require(contractSize > 0, _errorMessage); } }
{ "remappings": [ "contracts/=contracts/", "ds-test/=lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "pnm-contracts/=lib/pnm-contracts/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"implAddress","type":"address"},{"internalType":"enum IParaProxy.ProxyImplementationAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct IParaProxy.ProxyImplementation[]","name":"_implementationParams","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"ImplementationUpdated","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"components":[{"internalType":"address","name":"implAddress","type":"address"},{"internalType":"enum IParaProxy.ProxyImplementationAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IParaProxy.ProxyImplementation[]","name":"_implementationParams","type":"tuple[]"},{"internalType":"address","name":"_init","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"updateImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260405162001714380380620017148339810160408190526200002691620000db565b6200003c816200004360201b620001771760201c565b506200012f565b60006200004f620000a5565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b600080620000d560017f6337542cd2f84f19034eb9306f0e56d253861ffec87880bde5606f90448356eb6200010d565b92915050565b600060208284031215620000ee57600080fd5b81516001600160a01b03811681146200010657600080fd5b9392505050565b81810381811115620000d557634e487b7160e01b600052601160045260246000fd5b6115d5806200013f6000396000f3fe6080604052600436106100225760003560e01c80635a8339911461010357610029565b3661002957005b60008061005760017f6337542cd2f84f19034eb9306f0e56d253861ffec87880bde5606f90448356eb610fa8565b600080356001600160e01b0319168152602082905260409020549092508291506001600160a01b0316806100dd5760405162461bcd60e51b815260206004820152602260248201527f5061726150726f78793a2046756e6374696f6e20646f6573206e6f74206578696044820152611cdd60f21b60648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100fc573d6000f35b3d6000fd5b005b34801561010f57600080fd5b5061010161011e366004611020565b6101266101d7565b6101706101338587611166565b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061024692505050565b5050505050565b600061018161045e565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6101df61045e565b600401546001600160a01b031633146102445760405162461bcd60e51b815260206004820152602160248201527f5061726150726f78793a204d75737420626520636f6e7472616374206f776e656044820152603960f91b60648201526084016100d4565b565b60005b8351811015610413576000848281518110610266576102666112aa565b602002602001015160200151905060006002811115610287576102876112c0565b816002811115610299576102996112c0565b036102e7576102e28583815181106102b3576102b36112aa565b6020026020010151600001518684815181106102d1576102d16112aa565b602002602001015160400151610492565b610400565b60018160028111156102fb576102fb6112c0565b03610344576102e2858381518110610315576103156112aa565b602002602001015160000151868481518110610333576103336112aa565b602002602001015160400151610603565b6002816002811115610358576103586112c0565b036103a1576102e2858381518110610372576103726112aa565b602002602001015160000151868481518110610390576103906112aa565b602002602001015160400151610787565b60405162461bcd60e51b815260206004820152602e60248201527f5061726150726f78793a20496e636f72726563742050726f7879496d706c656d60448201526d32b73a30ba34b7b720b1ba34b7b760911b60648201526084016100d4565b508061040b816112d6565b915050610249565b507f7994b9362f6f8b2522d7dfbe2519931ad73d1308b8bcfbc600db6de899c3d5288383836040516104479392919061133f565b60405180910390a161045982826108a9565b505050565b60008061048c60017f6337542cd2f84f19034eb9306f0e56d253861ffec87880bde5606f90448356eb610fa8565b92915050565b60008151116104b35760405162461bcd60e51b81526004016100d49061143f565b60006104bd61045e565b90506001600160a01b0383166104e55760405162461bcd60e51b81526004016100d49061148f565b6001600160a01b0383166000908152600182016020526040812054906001600160601b038216900361051b5761051b8285610ab2565b60005b835181101561017057600084828151811061053b5761053b6112aa565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156105d55760405162461bcd60e51b815260206004820152603160248201527f5061726150726f78793a2043616e2774206164642066756e6374696f6e207468604482015270617420616c72656164792065786973747360781b60648201526084016100d4565b6105e18583868a610b1c565b836105eb816114e0565b945050505080806105fb906112d6565b91505061051e565b60008151116106245760405162461bcd60e51b81526004016100d49061143f565b600061062e61045e565b90506001600160a01b0383166106565760405162461bcd60e51b81526004016100d49061148f565b6001600160a01b0383166000908152600182016020526040812054906001600160601b038216900361068c5761068c8285610ab2565b60005b83518110156101705760008482815181106106ac576106ac6112aa565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03908116908716810361074e5760405162461bcd60e51b815260206004820152603460248201527f5061726150726f78793a2043616e2774207265706c6163652066756e6374696f60448201527337103bb4ba341039b0b6b290333ab731ba34b7b760611b60648201526084016100d4565b610759858284610bbc565b6107658583868a610b1c565b8361076f816114e0565b9450505050808061077f906112d6565b91505061068f565b60008151116107a85760405162461bcd60e51b81526004016100d49061143f565b60006107b261045e565b90506001600160a01b038316156108315760405162461bcd60e51b815260206004820152603b60248201527f5061726150726f78793a2052656d6f766520696d706c656d656e746174696f6e60448201527f2061646472657373206d7573742062652061646472657373283029000000000060648201526084016100d4565b60005b82518110156108a3576000838281518110610851576108516112aa565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031661088e848284610bbc565b5050808061089b906112d6565b915050610834565b50505050565b6001600160a01b0382166109305780511561092c5760405162461bcd60e51b815260206004820152603860248201527f5061726150726f78793a205f696e69742069732061646472657373283029206260448201527f75745f63616c6c64617461206973206e6f7420656d707479000000000000000060648201526084016100d4565b5050565b60008151116109a75760405162461bcd60e51b815260206004820152603960248201527f5061726150726f78793a205f63616c6c6461746120697320656d70747920627560448201527f74205f696e6974206973206e6f7420616464726573732830290000000000000060648201526084016100d4565b6001600160a01b03821630146109d9576109d98260405180606001604052806024815260200161155360249139610f71565b600080836001600160a01b0316836040516109f49190611506565b600060405180830381855af49150503d8060008114610a2f576040519150601f19603f3d011682016040523d82523d6000602084013e610a34565b606091505b5091509150816108a357805115610a5f578060405162461bcd60e51b81526004016100d49190611522565b60405162461bcd60e51b815260206004820152602260248201527f5061726150726f78793a205f696e69742066756e6374696f6e20726576657274604482015261195960f21b60648201526084016100d4565b610ad48160405180606001604052806029815260200161157760299139610f71565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160e01b0319831660008181526020868152604080832080546001600160601b03909716600160a01b026001600160a01b0397881617815594909516808352600180890183529583208054968701815583528183206008870401805460e09890981c60046007909816979097026101000a96870263ffffffff9097021990971695909517909555529290915281546001600160a01b031916179055565b6001600160a01b038216610c2e5760405162461bcd60e51b815260206004820152603360248201527f5061726150726f78793a2043616e27742072656d6f76652066756e6374696f6e604482015272081d1a185d08191bd95cdb89dd08195e1a5cdd606a1b60648201526084016100d4565b306001600160a01b03831603610c995760405162461bcd60e51b815260206004820152602a60248201527f5061726150726f78793a2043616e27742072656d6f766520696d6d757461626c6044820152693290333ab731ba34b7b760b11b60648201526084016100d4565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b03169291610ce891610fa8565b9050808214610dda576001600160a01b03841660009081526001860160205260408120805483908110610d1d57610d1d6112aa565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b925082919085908110610d6e57610d6e6112aa565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b03841660009081526001860160205260409020805480610e0357610e0361153c565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b03198516825286905260408120819055819003610170576002850154600090610e6690600190610fa8565b6001600160a01b0386166000908152600180890160205260409091200154909150808214610f15576000876002018381548110610ea557610ea56112aa565b6000918252602090912001546002890180546001600160a01b039092169250829184908110610ed657610ed66112aa565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b86600201805480610f2857610f2861153c565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505050505050565b813b81816108a35760405162461bcd60e51b81526004016100d49190611522565b634e487b7160e01b600052601160045260246000fd5b8181038181111561048c5761048c610f92565b80356001600160a01b0381168114610fd257600080fd5b919050565b60008083601f840112610fe957600080fd5b50813567ffffffffffffffff81111561100157600080fd5b60208301915083602082850101111561101957600080fd5b9250929050565b60008060008060006060868803121561103857600080fd5b853567ffffffffffffffff8082111561105057600080fd5b818801915088601f83011261106457600080fd5b81358181111561107357600080fd5b8960208260051b850101111561108857600080fd5b6020830197508096505061109e60208901610fbb565b945060408801359150808211156110b457600080fd5b506110c188828901610fd7565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561110b5761110b6110d2565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561113a5761113a6110d2565b604052919050565b600067ffffffffffffffff82111561115c5761115c6110d2565b5060051b60200190565b600061117961117484611142565b611111565b83815260208082019190600586811b86013681111561119757600080fd5b865b8181101561129d57803567ffffffffffffffff808211156111ba5760008081fd5b818a019150606082360312156111d05760008081fd5b6111d86110e8565b6111e183610fbb565b815286830135600381106111f55760008081fd5b818801526040838101358381111561120d5760008081fd5b939093019236601f85011261122457600092508283fd5b8335925061123461117484611142565b83815292871b840188019288810190368511156112515760008081fd5b948901945b848610156112865785356001600160e01b0319811681146112775760008081fd5b82529489019490890190611256565b918301919091525088525050948301948301611199565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000600182016112e8576112e8610f92565b5060010190565b60005b8381101561130a5781810151838201526020016112f2565b50506000910152565b6000815180845261132b8160208601602086016112ef565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b8481101561140f57898403607f19018652815180516001600160a01b031685528381015189860190600381106113ae57634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156113fa5783516001600160e01b03191682529286019260019290920191908601906113d0565b50978501979550505090820190600101611368565b50506001600160a01b038a169088015286810360408801526114318189611313565b9a9950505050505050505050565b60208082526030908201527f5061726150726f78793a204e6f2073656c6563746f727320696e20696d706c6560408201526f1b595b9d185d1a5bdb881d1bc818dd5d60821b606082015260800190565b60208082526031908201527f5061726150726f78793a2041646420696d706c656d656e746174696f6e2063616040820152706e2774206265206164647265737328302960781b606082015260800190565b60006001600160601b038083168181036114fc576114fc610f92565b6001019392505050565b600082516115188184602087016112ef565b9190910192915050565b6020815260006115356020830184611313565b9392505050565b634e487b7160e01b600052603160045260246000fdfe5061726150726f78793a205f696e6974206164647265737320686173206e6f20636f64655061726150726f78793a204e657720696d706c656d656e746174696f6e20686173206e6f20636f6465a264697066735822122041081c9a23bf9f3e08a53d1420d1fbcae811321cd621bed0b860380f3241e08364736f6c63430008110033000000000000000000000000fae470a311f61944346bbb8709cdc2398506be46
Deployed Bytecode
0x6080604052600436106100225760003560e01c80635a8339911461010357610029565b3661002957005b60008061005760017f6337542cd2f84f19034eb9306f0e56d253861ffec87880bde5606f90448356eb610fa8565b600080356001600160e01b0319168152602082905260409020549092508291506001600160a01b0316806100dd5760405162461bcd60e51b815260206004820152602260248201527f5061726150726f78793a2046756e6374696f6e20646f6573206e6f74206578696044820152611cdd60f21b60648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100fc573d6000f35b3d6000fd5b005b34801561010f57600080fd5b5061010161011e366004611020565b6101266101d7565b6101706101338587611166565b8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061024692505050565b5050505050565b600061018161045e565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6101df61045e565b600401546001600160a01b031633146102445760405162461bcd60e51b815260206004820152602160248201527f5061726150726f78793a204d75737420626520636f6e7472616374206f776e656044820152603960f91b60648201526084016100d4565b565b60005b8351811015610413576000848281518110610266576102666112aa565b602002602001015160200151905060006002811115610287576102876112c0565b816002811115610299576102996112c0565b036102e7576102e28583815181106102b3576102b36112aa565b6020026020010151600001518684815181106102d1576102d16112aa565b602002602001015160400151610492565b610400565b60018160028111156102fb576102fb6112c0565b03610344576102e2858381518110610315576103156112aa565b602002602001015160000151868481518110610333576103336112aa565b602002602001015160400151610603565b6002816002811115610358576103586112c0565b036103a1576102e2858381518110610372576103726112aa565b602002602001015160000151868481518110610390576103906112aa565b602002602001015160400151610787565b60405162461bcd60e51b815260206004820152602e60248201527f5061726150726f78793a20496e636f72726563742050726f7879496d706c656d60448201526d32b73a30ba34b7b720b1ba34b7b760911b60648201526084016100d4565b508061040b816112d6565b915050610249565b507f7994b9362f6f8b2522d7dfbe2519931ad73d1308b8bcfbc600db6de899c3d5288383836040516104479392919061133f565b60405180910390a161045982826108a9565b505050565b60008061048c60017f6337542cd2f84f19034eb9306f0e56d253861ffec87880bde5606f90448356eb610fa8565b92915050565b60008151116104b35760405162461bcd60e51b81526004016100d49061143f565b60006104bd61045e565b90506001600160a01b0383166104e55760405162461bcd60e51b81526004016100d49061148f565b6001600160a01b0383166000908152600182016020526040812054906001600160601b038216900361051b5761051b8285610ab2565b60005b835181101561017057600084828151811061053b5761053b6112aa565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156105d55760405162461bcd60e51b815260206004820152603160248201527f5061726150726f78793a2043616e2774206164642066756e6374696f6e207468604482015270617420616c72656164792065786973747360781b60648201526084016100d4565b6105e18583868a610b1c565b836105eb816114e0565b945050505080806105fb906112d6565b91505061051e565b60008151116106245760405162461bcd60e51b81526004016100d49061143f565b600061062e61045e565b90506001600160a01b0383166106565760405162461bcd60e51b81526004016100d49061148f565b6001600160a01b0383166000908152600182016020526040812054906001600160601b038216900361068c5761068c8285610ab2565b60005b83518110156101705760008482815181106106ac576106ac6112aa565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03908116908716810361074e5760405162461bcd60e51b815260206004820152603460248201527f5061726150726f78793a2043616e2774207265706c6163652066756e6374696f60448201527337103bb4ba341039b0b6b290333ab731ba34b7b760611b60648201526084016100d4565b610759858284610bbc565b6107658583868a610b1c565b8361076f816114e0565b9450505050808061077f906112d6565b91505061068f565b60008151116107a85760405162461bcd60e51b81526004016100d49061143f565b60006107b261045e565b90506001600160a01b038316156108315760405162461bcd60e51b815260206004820152603b60248201527f5061726150726f78793a2052656d6f766520696d706c656d656e746174696f6e60448201527f2061646472657373206d7573742062652061646472657373283029000000000060648201526084016100d4565b60005b82518110156108a3576000838281518110610851576108516112aa565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031661088e848284610bbc565b5050808061089b906112d6565b915050610834565b50505050565b6001600160a01b0382166109305780511561092c5760405162461bcd60e51b815260206004820152603860248201527f5061726150726f78793a205f696e69742069732061646472657373283029206260448201527f75745f63616c6c64617461206973206e6f7420656d707479000000000000000060648201526084016100d4565b5050565b60008151116109a75760405162461bcd60e51b815260206004820152603960248201527f5061726150726f78793a205f63616c6c6461746120697320656d70747920627560448201527f74205f696e6974206973206e6f7420616464726573732830290000000000000060648201526084016100d4565b6001600160a01b03821630146109d9576109d98260405180606001604052806024815260200161155360249139610f71565b600080836001600160a01b0316836040516109f49190611506565b600060405180830381855af49150503d8060008114610a2f576040519150601f19603f3d011682016040523d82523d6000602084013e610a34565b606091505b5091509150816108a357805115610a5f578060405162461bcd60e51b81526004016100d49190611522565b60405162461bcd60e51b815260206004820152602260248201527f5061726150726f78793a205f696e69742066756e6374696f6e20726576657274604482015261195960f21b60648201526084016100d4565b610ad48160405180606001604052806029815260200161157760299139610f71565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160e01b0319831660008181526020868152604080832080546001600160601b03909716600160a01b026001600160a01b0397881617815594909516808352600180890183529583208054968701815583528183206008870401805460e09890981c60046007909816979097026101000a96870263ffffffff9097021990971695909517909555529290915281546001600160a01b031916179055565b6001600160a01b038216610c2e5760405162461bcd60e51b815260206004820152603360248201527f5061726150726f78793a2043616e27742072656d6f76652066756e6374696f6e604482015272081d1a185d08191bd95cdb89dd08195e1a5cdd606a1b60648201526084016100d4565b306001600160a01b03831603610c995760405162461bcd60e51b815260206004820152602a60248201527f5061726150726f78793a2043616e27742072656d6f766520696d6d757461626c6044820152693290333ab731ba34b7b760b11b60648201526084016100d4565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b03169291610ce891610fa8565b9050808214610dda576001600160a01b03841660009081526001860160205260408120805483908110610d1d57610d1d6112aa565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b925082919085908110610d6e57610d6e6112aa565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b03841660009081526001860160205260409020805480610e0357610e0361153c565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b03198516825286905260408120819055819003610170576002850154600090610e6690600190610fa8565b6001600160a01b0386166000908152600180890160205260409091200154909150808214610f15576000876002018381548110610ea557610ea56112aa565b6000918252602090912001546002890180546001600160a01b039092169250829184908110610ed657610ed66112aa565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b86600201805480610f2857610f2861153c565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505050505050565b813b81816108a35760405162461bcd60e51b81526004016100d49190611522565b634e487b7160e01b600052601160045260246000fd5b8181038181111561048c5761048c610f92565b80356001600160a01b0381168114610fd257600080fd5b919050565b60008083601f840112610fe957600080fd5b50813567ffffffffffffffff81111561100157600080fd5b60208301915083602082850101111561101957600080fd5b9250929050565b60008060008060006060868803121561103857600080fd5b853567ffffffffffffffff8082111561105057600080fd5b818801915088601f83011261106457600080fd5b81358181111561107357600080fd5b8960208260051b850101111561108857600080fd5b6020830197508096505061109e60208901610fbb565b945060408801359150808211156110b457600080fd5b506110c188828901610fd7565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561110b5761110b6110d2565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561113a5761113a6110d2565b604052919050565b600067ffffffffffffffff82111561115c5761115c6110d2565b5060051b60200190565b600061117961117484611142565b611111565b83815260208082019190600586811b86013681111561119757600080fd5b865b8181101561129d57803567ffffffffffffffff808211156111ba5760008081fd5b818a019150606082360312156111d05760008081fd5b6111d86110e8565b6111e183610fbb565b815286830135600381106111f55760008081fd5b818801526040838101358381111561120d5760008081fd5b939093019236601f85011261122457600092508283fd5b8335925061123461117484611142565b83815292871b840188019288810190368511156112515760008081fd5b948901945b848610156112865785356001600160e01b0319811681146112775760008081fd5b82529489019490890190611256565b918301919091525088525050948301948301611199565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000600182016112e8576112e8610f92565b5060010190565b60005b8381101561130a5781810151838201526020016112f2565b50506000910152565b6000815180845261132b8160208601602086016112ef565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b8481101561140f57898403607f19018652815180516001600160a01b031685528381015189860190600381106113ae57634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156113fa5783516001600160e01b03191682529286019260019290920191908601906113d0565b50978501979550505090820190600101611368565b50506001600160a01b038a169088015286810360408801526114318189611313565b9a9950505050505050505050565b60208082526030908201527f5061726150726f78793a204e6f2073656c6563746f727320696e20696d706c6560408201526f1b595b9d185d1a5bdb881d1bc818dd5d60821b606082015260800190565b60208082526031908201527f5061726150726f78793a2041646420696d706c656d656e746174696f6e2063616040820152706e2774206265206164647265737328302960781b606082015260800190565b60006001600160601b038083168181036114fc576114fc610f92565b6001019392505050565b600082516115188184602087016112ef565b9190910192915050565b6020815260006115356020830184611313565b9392505050565b634e487b7160e01b600052603160045260246000fdfe5061726150726f78793a205f696e6974206164647265737320686173206e6f20636f64655061726150726f78793a204e657720696d706c656d656e746174696f6e20686173206e6f20636f6465a264697066735822122041081c9a23bf9f3e08a53d1420d1fbcae811321cd621bed0b860380f3241e08364736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000fae470a311f61944346bbb8709cdc2398506be46
-----Decoded View---------------
Arg [0] : _contractOwner (address): 0xfae470A311f61944346BbB8709CDc2398506Be46
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000fae470a311f61944346bbb8709cdc2398506be46
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,418.7 | 0.0194 | $66.29 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.