Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 24 from a total of 24 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deploy | 18011414 | 460 days ago | IN | 0 ETH | 0.0410202 | ||||
Deploy | 18010134 | 460 days ago | IN | 0 ETH | 0.04082664 | ||||
Transfer Ownersh... | 17932952 | 471 days ago | IN | 0 ETH | 0.00082863 | ||||
Transact | 17932909 | 471 days ago | IN | 0 ETH | 0.00081505 | ||||
Set Target | 17932908 | 471 days ago | IN | 0 ETH | 0.00063544 | ||||
Transact | 17932884 | 471 days ago | IN | 0 ETH | 0.00081769 | ||||
Set Target | 17932883 | 471 days ago | IN | 0 ETH | 0.00101164 | ||||
Deploy | 17932851 | 471 days ago | IN | 0 ETH | 0.08599996 | ||||
Deploy | 17932617 | 471 days ago | IN | 0 ETH | 0.04079858 | ||||
Deploy | 17932616 | 471 days ago | IN | 0 ETH | 0.00313084 | ||||
Deploy | 17932615 | 471 days ago | IN | 0 ETH | 0.01113908 | ||||
Deploy | 17932614 | 471 days ago | IN | 0 ETH | 0.08599516 | ||||
Deploy | 17932613 | 471 days ago | IN | 0 ETH | 0.03444364 | ||||
Deploy | 17932612 | 471 days ago | IN | 0 ETH | 0.04380406 | ||||
Deploy | 17932611 | 471 days ago | IN | 0 ETH | 0.02811444 | ||||
Deploy | 17932610 | 471 days ago | IN | 0 ETH | 0.02837506 | ||||
Deploy | 17932609 | 471 days ago | IN | 0 ETH | 0.02602726 | ||||
Deploy | 17932608 | 471 days ago | IN | 0 ETH | 0.03110244 | ||||
Deploy | 17931953 | 471 days ago | IN | 0 ETH | 0.01038968 | ||||
Deploy | 17931943 | 471 days ago | IN | 0 ETH | 0.0522413 | ||||
Deploy | 17931854 | 471 days ago | IN | 0 ETH | 0.0601797 | ||||
Deploy | 17931834 | 471 days ago | IN | 0 ETH | 0.00935128 | ||||
Claim Ownership | 17931510 | 471 days ago | IN | 0 ETH | 0.0006248 | ||||
Transfer Ownersh... | 17931434 | 471 days ago | IN | 0 ETH | 0.00105858 |
Latest 17 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
18011414 | 460 days ago | Contract Creation | 0 ETH | |||
18010134 | 460 days ago | Contract Creation | 0 ETH | |||
17932851 | 471 days ago | Contract Creation | 0 ETH | |||
17932617 | 471 days ago | Contract Creation | 0 ETH | |||
17932616 | 471 days ago | Contract Creation | 0 ETH | |||
17932615 | 471 days ago | Contract Creation | 0 ETH | |||
17932614 | 471 days ago | Contract Creation | 0 ETH | |||
17932613 | 471 days ago | Contract Creation | 0 ETH | |||
17932612 | 471 days ago | Contract Creation | 0 ETH | |||
17932611 | 471 days ago | Contract Creation | 0 ETH | |||
17932610 | 471 days ago | Contract Creation | 0 ETH | |||
17932609 | 471 days ago | Contract Creation | 0 ETH | |||
17932608 | 471 days ago | Contract Creation | 0 ETH | |||
17931953 | 471 days ago | Contract Creation | 0 ETH | |||
17931943 | 471 days ago | Contract Creation | 0 ETH | |||
17931854 | 471 days ago | Contract Creation | 0 ETH | |||
17931834 | 471 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
LoopringCreate2Deployer
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-17 */ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.7.0; // Sources flattened with hardhat v2.13.0 https://hardhat.org // File contracts/lib/Ownable.sol // Copyright 2017 Loopring Technology Limited. /// @title Ownable /// @author Brecht Devos - <[email protected]> /// @dev The Ownable contract has an owner address, and provides basic /// authorization control functions, this simplifies the implementation of /// "user permissions". contract Ownable { address public owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /// @dev The Ownable constructor sets the original `owner` of the contract /// to the sender. constructor() { owner = msg.sender; } /// @dev Throws if called by any account other than the owner. modifier onlyOwner() { require(msg.sender == owner, "UNAUTHORIZED"); _; } /// @dev Allows the current owner to transfer control of the contract to a /// new owner. /// @param newOwner The address to transfer ownership to. function transferOwnership( address newOwner ) public virtual onlyOwner { require(newOwner != address(0), "ZERO_ADDRESS"); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(owner, address(0)); owner = address(0); } } // File contracts/lib/Claimable.sol // Copyright 2017 Loopring Technology Limited. /// @title Claimable /// @author Brecht Devos - <[email protected]> /// @dev Extension for the Ownable contract, where the ownership needs /// to be claimed. This allows the new owner to accept the transfer. contract Claimable is Ownable { address public pendingOwner; /// @dev Modifier throws if called by any account other than the pendingOwner. modifier onlyPendingOwner() { require(msg.sender == pendingOwner, "UNAUTHORIZED"); _; } /// @dev Allows the current owner to set the pendingOwner address. /// @param newOwner The address to transfer ownership to. function transferOwnership( address newOwner ) public override onlyOwner { require(newOwner != address(0) && newOwner != owner, "INVALID_ADDRESS"); pendingOwner = newOwner; } /// @dev Allows the pendingOwner address to finalize the transfer. function claimOwnership() public onlyPendingOwner { emit OwnershipTransferred(owner, pendingOwner); owner = pendingOwner; pendingOwner = address(0); } } // File contracts/thirdparty/BytesUtil.sol //Mainly taken from https://github.com/GNSPS/solidity-bytes-utils/blob/master/contracts/BytesLib.sol library BytesUtil { function concat( bytes memory _preBytes, bytes memory _postBytes ) internal pure returns (bytes memory) { bytes memory tempBytes; assembly { // Get a location of some free memory and store it in tempBytes as // Solidity does for memory variables. tempBytes := mload(0x40) // Store the length of the first bytes array at the beginning of // the memory for tempBytes. let length := mload(_preBytes) mstore(tempBytes, length) // Maintain a memory counter for the current write location in the // temp bytes array by adding the 32 bytes for the array length to // the starting location. let mc := add(tempBytes, 0x20) // Stop copying when the memory counter reaches the length of the // first bytes array. let end := add(mc, length) for { // Initialize a copy counter to the start of the _preBytes data, // 32 bytes into its memory. let cc := add(_preBytes, 0x20) } lt(mc, end) { // Increase both counters by 32 bytes each iteration. mc := add(mc, 0x20) cc := add(cc, 0x20) } { // Write the _preBytes data into the tempBytes memory 32 bytes // at a time. mstore(mc, mload(cc)) } // Add the length of _postBytes to the current length of tempBytes // and store it as the new length in the first 32 bytes of the // tempBytes memory. length := mload(_postBytes) mstore(tempBytes, add(length, mload(tempBytes))) // Move the memory counter back from a multiple of 0x20 to the // actual end of the _preBytes data. mc := end // Stop copying when the memory counter reaches the new combined // length of the arrays. end := add(mc, length) for { let cc := add(_postBytes, 0x20) } lt(mc, end) { mc := add(mc, 0x20) cc := add(cc, 0x20) } { mstore(mc, mload(cc)) } // Update the free-memory pointer by padding our last write location // to 32 bytes: add 31 bytes to the end of tempBytes to move to the // next 32 byte block, then round down to the nearest multiple of // 32. If the sum of the length of the two arrays is zero then add // one before rounding down to leave a blank 32 bytes (the length block with 0). mstore(0x40, and( add(add(end, iszero(add(length, mload(_preBytes)))), 31), not(31) // Round down to the nearest 32 bytes. )) } return tempBytes; } function slice( bytes memory _bytes, uint _start, uint _length ) internal pure returns (bytes memory) { require(_bytes.length >= (_start + _length)); bytes memory tempBytes; assembly { switch iszero(_length) case 0 { // Get a location of some free memory and store it in tempBytes as // Solidity does for memory variables. tempBytes := mload(0x40) // The first word of the slice result is potentially a partial // word read from the original array. To read it, we calculate // the length of that partial word and start copying that many // bytes into the array. The first word we copy will start with // data we don't care about, but the last `lengthmod` bytes will // land at the beginning of the contents of the new array. When // we're done copying, we overwrite the full first word with // the actual length of the slice. let lengthmod := and(_length, 31) // The multiplication in the next line is necessary // because when slicing multiples of 32 bytes (lengthmod == 0) // the following copy loop was copying the origin's length // and then ending prematurely not copying everything it should. let mc := add(add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod))) let end := add(mc, _length) for { // The multiplication in the next line has the same exact purpose // as the one above. let cc := add(add(add(_bytes, lengthmod), mul(0x20, iszero(lengthmod))), _start) } lt(mc, end) { mc := add(mc, 0x20) cc := add(cc, 0x20) } { mstore(mc, mload(cc)) } mstore(tempBytes, _length) //update free-memory pointer //allocating the array padded to 32 bytes like the compiler does now mstore(0x40, and(add(mc, 31), not(31))) } //if we want a zero-length slice let's just return a zero-length array default { tempBytes := mload(0x40) mstore(0x40, add(tempBytes, 0x20)) } } return tempBytes; } function toAddress(bytes memory _bytes, uint _start) internal pure returns (address) { require(_bytes.length >= (_start + 20)); address tempAddress; assembly { tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000) } return tempAddress; } function toUint8(bytes memory _bytes, uint _start) internal pure returns (uint8) { require(_bytes.length >= (_start + 1)); uint8 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x1), _start)) } return tempUint; } function toUint16(bytes memory _bytes, uint _start) internal pure returns (uint16) { require(_bytes.length >= (_start + 2)); uint16 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x2), _start)) } return tempUint; } function toUint24(bytes memory _bytes, uint _start) internal pure returns (uint24) { require(_bytes.length >= (_start + 3)); uint24 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x3), _start)) } return tempUint; } function toUint32(bytes memory _bytes, uint _start) internal pure returns (uint32) { require(_bytes.length >= (_start + 4)); uint32 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x4), _start)) } return tempUint; } function toUint64(bytes memory _bytes, uint _start) internal pure returns (uint64) { require(_bytes.length >= (_start + 8)); uint64 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x8), _start)) } return tempUint; } function toUint96(bytes memory _bytes, uint _start) internal pure returns (uint96) { require(_bytes.length >= (_start + 12)); uint96 tempUint; assembly { tempUint := mload(add(add(_bytes, 0xc), _start)) } return tempUint; } function toUint128(bytes memory _bytes, uint _start) internal pure returns (uint128) { require(_bytes.length >= (_start + 16)); uint128 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x10), _start)) } return tempUint; } function toUint(bytes memory _bytes, uint _start) internal pure returns (uint256) { require(_bytes.length >= (_start + 32)); uint256 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x20), _start)) } return tempUint; } function toBytes4(bytes memory _bytes, uint _start) internal pure returns (bytes4) { require(_bytes.length >= (_start + 4)); bytes4 tempBytes4; assembly { tempBytes4 := mload(add(add(_bytes, 0x20), _start)) } return tempBytes4; } function toBytes20(bytes memory _bytes, uint _start) internal pure returns (bytes20) { require(_bytes.length >= (_start + 20)); bytes20 tempBytes20; assembly { tempBytes20 := mload(add(add(_bytes, 0x20), _start)) } return tempBytes20; } function toBytes32(bytes memory _bytes, uint _start) internal pure returns (bytes32) { require(_bytes.length >= (_start + 32)); bytes32 tempBytes32; assembly { tempBytes32 := mload(add(add(_bytes, 0x20), _start)) } return tempBytes32; } function toAddressUnsafe(bytes memory _bytes, uint _start) internal pure returns (address) { address tempAddress; assembly { tempAddress := div(mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000) } return tempAddress; } function toUint8Unsafe(bytes memory _bytes, uint _start) internal pure returns (uint8) { uint8 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x1), _start)) } return tempUint; } function toUint16Unsafe(bytes memory _bytes, uint _start) internal pure returns (uint16) { uint16 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x2), _start)) } return tempUint; } function toUint24Unsafe(bytes memory _bytes, uint _start) internal pure returns (uint24) { uint24 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x3), _start)) } return tempUint; } function toUint32Unsafe(bytes memory _bytes, uint _start) internal pure returns (uint32) { uint32 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x4), _start)) } return tempUint; } function toUint64Unsafe(bytes memory _bytes, uint _start) internal pure returns (uint64) { uint64 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x8), _start)) } return tempUint; } function toUint96Unsafe(bytes memory _bytes, uint _start) internal pure returns (uint96) { uint96 tempUint; assembly { tempUint := mload(add(add(_bytes, 0xc), _start)) } return tempUint; } function toUint128Unsafe(bytes memory _bytes, uint _start) internal pure returns (uint128) { uint128 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x10), _start)) } return tempUint; } function toUintUnsafe(bytes memory _bytes, uint _start) internal pure returns (uint256) { uint256 tempUint; assembly { tempUint := mload(add(add(_bytes, 0x20), _start)) } return tempUint; } function toBytes4Unsafe(bytes memory _bytes, uint _start) internal pure returns (bytes4) { bytes4 tempBytes4; assembly { tempBytes4 := mload(add(add(_bytes, 0x20), _start)) } return tempBytes4; } function toBytes20Unsafe(bytes memory _bytes, uint _start) internal pure returns (bytes20) { bytes20 tempBytes20; assembly { tempBytes20 := mload(add(add(_bytes, 0x20), _start)) } return tempBytes20; } function toBytes32Unsafe(bytes memory _bytes, uint _start) internal pure returns (bytes32) { bytes32 tempBytes32; assembly { tempBytes32 := mload(add(add(_bytes, 0x20), _start)) } return tempBytes32; } function fastSHA256( bytes memory data ) internal view returns (bytes32) { bytes32[] memory result = new bytes32[](1); bool success; assembly { let ptr := add(data, 32) success := staticcall(sub(gas(), 2000), 2, ptr, mload(data), add(result, 32), 32) } require(success, "SHA256_FAILED"); return result[0]; } } // File contracts/aux/access/DelayTargetSelectorBasedAccessManager.sol // Copyright 2017 Loopring Technology Limited. /// @title SelectorBasedAccessManager /// @author Daniel Wang - <[email protected]> contract DelayTargetSelectorBasedAccessManager is Claimable { using BytesUtil for bytes; event PermissionUpdate( address indexed user, bytes4 indexed selector, bool allowed ); address public target; mapping(address => mapping(bytes4 => bool)) public permissions; modifier withAccess(bytes4 selector) { require(hasAccessTo(msg.sender, selector), "PERMISSION_DENIED"); _; } constructor() { } function grantAccess( address user, bytes4 selector, bool granted ) external onlyOwner { require(permissions[user][selector] != granted, "INVALID_VALUE"); permissions[user][selector] = granted; emit PermissionUpdate(user, selector, granted); } receive() payable external {} fallback() payable external { transact(msg.data); } function setTarget(address _target) public onlyOwner { require(_target != address(0), "ZERO_ADDRESS"); target = _target; } function transact(bytes memory data) payable public withAccess(data.toBytes4(0)) { require(target != address(0), "ZERO_ADDRESS"); (bool success, bytes memory returnData) = target .call{value: msg.value}(data); if (!success) { assembly { revert(add(returnData, 32), mload(returnData)) } } } function hasAccessTo(address user, bytes4 selector) public view returns (bool) { return user == owner || permissions[user][selector]; } } // File contracts/aux/create2/LoopringCreate2Deployer.sol contract LoopringCreate2Deployer is DelayTargetSelectorBasedAccessManager{ event Deployed(address addr, uint256 salt); function deploy(bytes memory code, uint256 salt) public { address addr; assembly { addr := create2(0, add(code, 0x20), mload(code), salt) if iszero(extcodesize(addr)) { revert(0, 0) } } emit Deployed(addr, salt); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"salt","type":"uint256"}],"name":"Deployed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":false,"internalType":"bool","name":"allowed","type":"bool"}],"name":"PermissionUpdate","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"code","type":"bytes"},{"internalType":"uint256","name":"salt","type":"uint256"}],"name":"deploy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"bool","name":"granted","type":"bool"}],"name":"grantAccess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"hasAccessTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"permissions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transact","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610f64806100326000396000f3fe6080604052600436106100cb5760003560e01c80638da5cb5b11610074578063d4b839921161004e578063d4b839921461046b578063e30c397814610480578063f2fde38b14610495576100d2565b80638da5cb5b146103105780639c4ae2d01461034e578063cdb999f314610403576100d2565b80636d6f41cc116100a55780636d6f41cc14610215578063715018a6146102bb578063776d1a01146102d0576100d2565b8063313861251461011457806331ad7333146101905780634e71e0c814610200576100d2565b366100d257005b6101126000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104d592505050565b005b34801561012057600080fd5b5061017c6004803603604081101561013757600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff1690602001357fffffffff00000000000000000000000000000000000000000000000000000000166106ca565b604080519115158252519081900360200190f35b34801561019c57600080fd5b50610112600480360360608110156101b357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516907fffffffff000000000000000000000000000000000000000000000000000000006020820135169060400135151561074d565b34801561020c57600080fd5b50610112610957565b6101126004803603602081101561022b57600080fd5b81019060208101813564010000000081111561024657600080fd5b82018360208201111561025857600080fd5b8035906020019184600183028401116401000000008311171561027a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104d5945050505050565b3480156102c757600080fd5b50610112610a73565b3480156102dc57600080fd5b50610112600480360360208110156102f357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b68565b34801561031c57600080fd5b50610325610cb7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561035a57600080fd5b506101126004803603604081101561037157600080fd5b81019060208101813564010000000081111561038c57600080fd5b82018360208201111561039e57600080fd5b803590602001918460018302840111640100000000831117156103c057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610cd3915050565b34801561040f57600080fd5b5061017c6004803603604081101561042657600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff1690602001357fffffffff0000000000000000000000000000000000000000000000000000000016610d42565b34801561047757600080fd5b50610325610d62565b34801561048c57600080fd5b50610325610d7e565b3480156104a157600080fd5b50610112600480360360208110156104b857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d9a565b6104e0816000610f12565b6104ea33826106ca565b61055557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f5045524d495353494f4e5f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b60025473ffffffffffffffffffffffffffffffffffffffff166105d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015290519081900360640190fd5b6002546040518351600092839273ffffffffffffffffffffffffffffffffffffffff9091169134918791819060208401908083835b6020831061064b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161060e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146106ad576040519150601f19603f3d011682016040523d82523d6000602084013e6106b2565b606091505b5091509150816106c457805160208201fd5b50505050565b6000805473ffffffffffffffffffffffffffffffffffffffff84811691161480610746575073ffffffffffffffffffffffffffffffffffffffff831660009081526003602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff161515811515141561089b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f494e56414c49445f56414c554500000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526003602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927fa159e1c330823fd09e2338c9ca6e89b1423fee32c0d427a0764ed2d28d163bf8929181900390910190a3505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146109dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b6001546000805460405173ffffffffffffffffffffffffffffffffffffffff93841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610af957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bee57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610c7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015290519081900360640190fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000818351602085016000f59050803b610cec57600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810184905281517fb03c53b28e78a88e31607a27e1fa48234dce28d5d9d9ec7b295aeb02e674a1e1929181900390910190a1505050565b600360209081526000928352604080842090915290825290205460ff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e2057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811615801590610e60575060005473ffffffffffffffffffffffffffffffffffffffff828116911614155b610ecb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f414444524553530000000000000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008160040183511015610f2557600080fd5b5001602001519056fea2646970667358221220cece4abb8a6db8205df2d7c490b42d20faa504f7d7393356b52e159ea984f3ba64736f6c63430007060033
Deployed Bytecode
0x6080604052600436106100cb5760003560e01c80638da5cb5b11610074578063d4b839921161004e578063d4b839921461046b578063e30c397814610480578063f2fde38b14610495576100d2565b80638da5cb5b146103105780639c4ae2d01461034e578063cdb999f314610403576100d2565b80636d6f41cc116100a55780636d6f41cc14610215578063715018a6146102bb578063776d1a01146102d0576100d2565b8063313861251461011457806331ad7333146101905780634e71e0c814610200576100d2565b366100d257005b6101126000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104d592505050565b005b34801561012057600080fd5b5061017c6004803603604081101561013757600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff1690602001357fffffffff00000000000000000000000000000000000000000000000000000000166106ca565b604080519115158252519081900360200190f35b34801561019c57600080fd5b50610112600480360360608110156101b357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516907fffffffff000000000000000000000000000000000000000000000000000000006020820135169060400135151561074d565b34801561020c57600080fd5b50610112610957565b6101126004803603602081101561022b57600080fd5b81019060208101813564010000000081111561024657600080fd5b82018360208201111561025857600080fd5b8035906020019184600183028401116401000000008311171561027a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104d5945050505050565b3480156102c757600080fd5b50610112610a73565b3480156102dc57600080fd5b50610112600480360360208110156102f357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b68565b34801561031c57600080fd5b50610325610cb7565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561035a57600080fd5b506101126004803603604081101561037157600080fd5b81019060208101813564010000000081111561038c57600080fd5b82018360208201111561039e57600080fd5b803590602001918460018302840111640100000000831117156103c057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610cd3915050565b34801561040f57600080fd5b5061017c6004803603604081101561042657600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff1690602001357fffffffff0000000000000000000000000000000000000000000000000000000016610d42565b34801561047757600080fd5b50610325610d62565b34801561048c57600080fd5b50610325610d7e565b3480156104a157600080fd5b50610112600480360360208110156104b857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d9a565b6104e0816000610f12565b6104ea33826106ca565b61055557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f5045524d495353494f4e5f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b60025473ffffffffffffffffffffffffffffffffffffffff166105d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015290519081900360640190fd5b6002546040518351600092839273ffffffffffffffffffffffffffffffffffffffff9091169134918791819060208401908083835b6020831061064b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161060e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146106ad576040519150601f19603f3d011682016040523d82523d6000602084013e6106b2565b606091505b5091509150816106c457805160208201fd5b50505050565b6000805473ffffffffffffffffffffffffffffffffffffffff84811691161480610746575073ffffffffffffffffffffffffffffffffffffffff831660009081526003602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff165b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290205460ff161515811515141561089b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f494e56414c49445f56414c554500000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526003602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927fa159e1c330823fd09e2338c9ca6e89b1423fee32c0d427a0764ed2d28d163bf8929181900390910190a3505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146109dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b6001546000805460405173ffffffffffffffffffffffffffffffffffffffff93841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610af957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bee57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610c7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015290519081900360640190fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000818351602085016000f59050803b610cec57600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff831681526020810184905281517fb03c53b28e78a88e31607a27e1fa48234dce28d5d9d9ec7b295aeb02e674a1e1929181900390910190a1505050565b600360209081526000928352604080842090915290825290205460ff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e2057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811615801590610e60575060005473ffffffffffffffffffffffffffffffffffffffff828116911614155b610ecb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f414444524553530000000000000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008160040183511015610f2557600080fd5b5001602001519056fea2646970667358221220cece4abb8a6db8205df2d7c490b42d20faa504f7d7393356b52e159ea984f3ba64736f6c63430007060033
Deployed Bytecode Sourcemap
17971:399:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17133:18;17142:8;;17133:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17133:8:0;;-1:-1:-1;;;17133:18:0:i;:::-;17971:399;17718:181;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17718:181:0;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;16688:338;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16688:338:0;;;;;;;;;;;;;;;;;;:::i;2653:205::-;;;;;;;;;;;;;:::i;17320:390::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17320:390:0;;-1:-1:-1;17320:390:0;;-1:-1:-1;;;;;17320:390:0:i;1437:161::-;;;;;;;;;;;;;:::i;17167:145::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17167:145:0;;;;:::i;497:20::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18098:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18098:269:0;;-1:-1:-1;;18098:269:0;;;-1:-1:-1;18098:269:0;;-1:-1:-1;;18098:269:0:i;16436:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16436:62:0;;;;;;;;;;;:::i;16408:21::-;;;;;;;;;;;;;:::i;1953:27::-;;;;;;;;;;;;;:::i;2326:247::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2326:247:0;;;;:::i;17320:390::-;17410:16;:4;17424:1;17410:13;:16::i;:::-;16568:33;16580:10;16592:8;16568:11;:33::i;:::-;16560:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17452:6:::1;::::0;:20:::1;:6;17444:45;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;17542:6;::::0;:49:::1;::::0;;;17501:12:::1;::::0;;;17542:6:::1;::::0;;::::1;::::0;17575:9:::1;::::0;17586:4;;17542:49;;::::1;::::0;::::1;::::0;;;;::::1;;;;;;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17500:91;;;;17609:7;17604:99;;17678:10;17672:17;17667:2;17655:10;17651:19;17644:46;17642:50;16634:1;;17320:390:::0;;:::o;17718:181::-;17818:4;17855:5;;;17847:13;;;17855:5;;17847:13;;:44;;-1:-1:-1;17864:17:0;;;;;;;:11;:17;;;;;;;;:27;;;;;;;;;;;;;17847:44;17840:51;17718:181;-1:-1:-1;;;17718:181:0:o;16688:338::-;943:5;;;;929:10;:19;921:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16857:17:::1;::::0;::::1;;::::0;;;:11:::1;:17;::::0;;;;;;;:27;;::::1;::::0;;;;;;;;::::1;;:38;;::::0;::::1;;;;16849:64;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;16924:17;::::0;::::1;;::::0;;;:11:::1;:17;::::0;;;;;;;:27;;::::1;::::0;;;;;;;;;;:37;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;16977:41;;;;;;;16924:27;;:17;16977:41:::1;::::0;;;;;;;;;::::1;16688:338:::0;;;:::o;2653:205::-;2134:12;;;;2120:10;:26;2112:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2770:12:::1;::::0;::::1;2763:5:::0;;2742:41:::1;::::0;2770:12:::1;::::0;;::::1;::::0;2763:5;;::::1;::::0;2742:41:::1;::::0;::::1;2802:12;::::0;;::::1;2794:20:::0;;;;;::::1;2802:12;::::0;::::1;2794:20;::::0;;;2825:25:::1;::::0;;2653:205::o;1437:161::-;943:5;;;;929:10;:19;921:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1558:1:::1;1543:5:::0;;1522:39:::1;::::0;::::1;1543:5:::0;;::::1;::::0;1522:39:::1;::::0;1558:1;;1522:39:::1;1588:1;1572:18:::0;;;::::1;::::0;;1437:161::o;17167:145::-;943:5;;;;929:10;:19;921:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17239:21:::1;::::0;::::1;17231:46;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;17288:6;:16:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;17167:145::o;497:20::-;;;;;;:::o;18098:269::-;18161:12;18247:4;18240;18234:11;18227:4;18221;18217:15;18214:1;18206:46;18198:54;;18282:4;18270:17;18260:2;;18310:1;18307;18300:12;18260:2;18341:20;;;;;;;;;;;;;;;;;;;;;;;;;;;18098:269;;;:::o;16436:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16408:21::-;;;;;;:::o;1953:27::-;;;;;;:::o;2326:247::-;943:5;;;;929:10;:19;921:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2468:22:::1;::::0;::::1;::::0;;::::1;::::0;:43:::1;;-1:-1:-1::0;2506:5:0::1;::::0;::::1;2494:17:::0;;::::1;2506:5:::0;::::1;2494:17;;2468:43;2460:71;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;2542:12;:23:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2326:247::o;11425:297::-;11501:6;11546;11555:1;11546:10;11528:6;:13;:29;;11520:38;;;;;;-1:-1:-1;11643:30:0;11659:4;11643:30;11637:37;;11425:297::o
Swarm Source
ipfs://cece4abb8a6db8205df2d7c490b42d20faa504f7d7393356b52e159ea984f3ba
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.