Source Code (Proxy)
Latest 25 from a total of 6,030 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw | 24430021 | 4 days ago | IN | 0 ETH | 0.00002816 | ||||
| Withdraw | 24430015 | 4 days ago | IN | 0 ETH | 0.00002744 | ||||
| Start Auction | 24429781 | 4 days ago | IN | 0 ETH | 0.00002085 | ||||
| Liquidate ERC721 | 24429052 | 5 days ago | IN | 0.5266 ETH | 0.00004113 | ||||
| Borrow | 24235880 | 31 days ago | IN | 0 ETH | 0.00005037 | ||||
| Borrow | 24082513 | 53 days ago | IN | 0 ETH | 0.00001379 | ||||
| Liquidate ERC20 | 24082492 | 53 days ago | IN | 0 ETH | 0.00001492 | ||||
| Liquidate ERC20 | 24082458 | 53 days ago | IN | 0 ETH | 0.00001937 | ||||
| Liquidate ERC20 | 24082453 | 53 days ago | IN | 0 ETH | 0.000019 | ||||
| Liquidate ERC20 | 24082453 | 53 days ago | IN | 0 ETH | 0.00002084 | ||||
| Borrow | 24082438 | 53 days ago | IN | 0 ETH | 0.00001598 | ||||
| Supply | 24082421 | 53 days ago | IN | 0 ETH | 0.00000485 | ||||
| Borrow | 24056148 | 57 days ago | IN | 0 ETH | 0.00001146 | ||||
| Borrow | 24056143 | 57 days ago | IN | 0 ETH | 0.00000987 | ||||
| Repay | 24055654 | 57 days ago | IN | 0 ETH | 0.00032457 | ||||
| Repay | 24055624 | 57 days ago | IN | 0 ETH | 0.00034553 | ||||
| Supply | 24024614 | 61 days ago | IN | 0 ETH | 0.00000666 | ||||
| Start Auction | 24019944 | 62 days ago | IN | 0 ETH | 0.00005976 | ||||
| Start Auction | 24019941 | 62 days ago | IN | 0 ETH | 0.0000571 | ||||
| Supply | 23879616 | 81 days ago | IN | 0 ETH | 0.00001149 | ||||
| Set User Use ERC... | 23879430 | 81 days ago | IN | 0 ETH | 0.00000575 | ||||
| Borrow | 23878981 | 81 days ago | IN | 0 ETH | 0.00004828 | ||||
| Set User Use ERC... | 23878974 | 81 days ago | IN | 0 ETH | 0.00000637 | ||||
| Set User Use ERC... | 23878971 | 81 days ago | IN | 0 ETH | 0.00000599 | ||||
| Set User Use ERC... | 23878880 | 81 days ago | IN | 0 ETH | 0.00000549 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 24429052 | 5 days ago | 0.00002848 ETH | ||||
| Deposit | 24429052 | 5 days ago | 0.52657152 ETH | ||||
| Deposit | 22563270 | 265 days ago | 5.692 ETH | ||||
| Liquidate ERC20 | 22563270 | 265 days ago | 5.692 ETH | ||||
| Deposit | 22563229 | 265 days ago | 4.42 ETH | ||||
| Liquidate ERC20 | 22563229 | 265 days ago | 4.42 ETH | ||||
| Deposit | 22563157 | 265 days ago | 0.398 ETH | ||||
| Liquidate ERC20 | 22563157 | 265 days ago | 0.398 ETH | ||||
| Deposit | 22563157 | 265 days ago | 0.212 ETH | ||||
| Liquidate ERC20 | 22563157 | 265 days ago | 0.212 ETH | ||||
| Deposit | 22563157 | 265 days ago | 0.106 ETH | ||||
| Liquidate ERC20 | 22563157 | 265 days ago | 0.106 ETH | ||||
| Deposit | 22558672 | 266 days ago | 0.001 ETH | ||||
| Liquidate ERC20 | 22558672 | 266 days ago | 0.001 ETH | ||||
| Transfer | 22270679 | 306 days ago | 0.00398106 ETH | ||||
| Deposit | 22270679 | 306 days ago | 0.07601893 ETH | ||||
| Transfer | 22270650 | 306 days ago | 0.00213395 ETH | ||||
| Deposit | 22270650 | 306 days ago | 0.07786604 ETH | ||||
| Transfer | 22270648 | 306 days ago | 0.0359548 ETH | ||||
| Deposit | 22270648 | 306 days ago | 0.04404519 ETH | ||||
| Transfer | 22270646 | 306 days ago | 0.03107244 ETH | ||||
| Deposit | 22270646 | 306 days ago | 0.04892755 ETH | ||||
| Transfer | 22270644 | 306 days ago | 0.05285322 ETH | ||||
| Deposit | 22270644 | 306 days ago | 0.02714677 ETH | ||||
| Transfer | 22270642 | 306 days ago | 0.01361546 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
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
Contract ABI
API[{"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
Net Worth in USD
$37.96
Net Worth in ETH
0.019391
Token Allocations
ETH
100.00%
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $1,957.57 | 0.0194 | $37.96 |
Loading...
Loading
Loading...
Loading
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.