Overview
CRO Balance
0 CRO
CRO Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 21 from a total of 21 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Renounce Ownersh... | 9552445 | 439 days ago | IN | 0 CRO | 0.82129035 | ||||
Register Token | 9552444 | 439 days ago | IN | 0 CRO | 0.82129036 | ||||
Admin Allow Toke... | 9552442 | 439 days ago | IN | 0 CRO | 0.82129036 | ||||
Admin Allow Toke... | 9552440 | 439 days ago | IN | 0 CRO | 0.82129039 | ||||
Admin Allow Toke... | 9552427 | 439 days ago | IN | 0 CRO | 0.82129049 | ||||
Admin Allow Toke... | 9552424 | 439 days ago | IN | 0 CRO | 0.82129052 | ||||
Admin Allow Toke... | 9552420 | 439 days ago | IN | 0 CRO | 0.82129055 | ||||
Admin Allow Toke... | 9552402 | 439 days ago | IN | 0 CRO | 0.8212907 | ||||
Register Token | 9552398 | 439 days ago | IN | 0 CRO | 0.82129072 | ||||
Admin Allow Toke... | 2479313 | 904 days ago | IN | 0 CRO | 0.385705 | ||||
Admin Allow Toke... | 1348421 | 983 days ago | IN | 0 CRO | 0.385705 | ||||
Admin Allow Toke... | 1004314 | 1006 days ago | IN | 0 CRO | 0.462846 | ||||
Admin Allow Toke... | 1004213 | 1006 days ago | IN | 0 CRO | 0.462846 | ||||
Admin Allow Toke... | 663205 | 1029 days ago | IN | 0 CRO | 0.158532 | ||||
Admin Allow Toke... | 663103 | 1029 days ago | IN | 0 CRO | 0.462846 | ||||
Admin Allow Toke... | 663086 | 1029 days ago | IN | 0 CRO | 0.187464 | ||||
Transfer Ownersh... | 259867 | 1055 days ago | IN | 0 CRO | 0.199692 | ||||
Admin Allow Toke... | 8718 | 1072 days ago | IN | 0 CRO | 0.462846 | ||||
Admin Allow Toke... | 8714 | 1072 days ago | IN | 0 CRO | 0.169008 | ||||
Admin Allow Toke... | 8044 | 1072 days ago | IN | 0 CRO | 0.552846 | ||||
0x60806040 | 8040 | 1072 days ago | IN | 0 CRO | 3.06189 |
Loading...
Loading
Contract Name:
TokenFactory
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-05-12 */ // Sources flattened with hardhat v2.9.3 https://hardhat.org // File contracts/Context.sol // // From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/GSN/Context.sol // Subject to the MIT license. pragma solidity >=0.6.0 <0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File contracts/Ownable.sol // File: Ownable.sol // // From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol // Subject to the MIT license. pragma solidity >=0.6.0 <0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File contracts/EnumerableSet.sol // // From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/EnumerableSet.sol // Subject to the MIT license. pragma solidity >=0.6.0 <0.8.0; /** * @dev Library for managing * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive * types. * * Sets have the following properties: * * - Elements are added, removed, and checked for existence in constant time * (O(1)). * - Elements are enumerated in O(n). No guarantees are made on the ordering. * * ``` * contract Example { * // Add the library methods * using EnumerableSet for EnumerableSet.AddressSet; * * // Declare a set state variable * EnumerableSet.AddressSet private mySet; * } * ``` * * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) * and `uint256` (`UintSet`) are supported. */ library EnumerableSet { // To implement this library for multiple types with as little code // repetition as possible, we write it in terms of a generic Set type with // bytes32 values. // The Set implementation uses private functions, and user-facing // implementations (such as AddressSet) are just wrappers around the // underlying Set. // This means that we can only create new EnumerableSets for types that fit // in bytes32. struct Set { // Storage of set values bytes32[] _values; // Position of the value in the `values` array, plus 1 because index 0 // means a value is not in the set. mapping (bytes32 => uint256) _indexes; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); // The value is stored at length-1, but we add 1 to all indexes // and use 0 as a sentinel value set._indexes[value] = set._values.length; return true; } else { return false; } } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function _remove(Set storage set, bytes32 value) private returns (bool) { // We read and store the value's index to prevent multiple reads from the same storage slot uint256 valueIndex = set._indexes[value]; if (valueIndex != 0) { // Equivalent to contains(set, value) // To delete an element from the _values array in O(1), we swap the element to delete with the last one in // the array, and then remove the last element (sometimes called as 'swap and pop'). // This modifies the order of the array, as noted in {at}. uint256 toDeleteIndex = valueIndex - 1; uint256 lastIndex = set._values.length - 1; // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement. bytes32 lastvalue = set._values[lastIndex]; // Move the last value to the index where the value to delete is set._values[toDeleteIndex] = lastvalue; // Update the index for the moved value set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based // Delete the slot where the moved value was stored set._values.pop(); // Delete the index for the deleted slot delete set._indexes[value]; return true; } else { return false; } } /** * @dev Returns true if the value is in the set. O(1). */ function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._indexes[value] != 0; } /** * @dev Returns the number of values on the set. O(1). */ function _length(Set storage set) private view returns (uint256) { return set._values.length; } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function _at(Set storage set, uint256 index) private view returns (bytes32) { require(set._values.length > index, "EnumerableSet: index out of bounds"); return set._values[index]; } // Bytes32Set struct Bytes32Set { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _add(set._inner, value); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _remove(set._inner, value); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { return _contains(set._inner, value); } /** * @dev Returns the number of values in the set. O(1). */ function length(Bytes32Set storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { return _at(set._inner, index); } // AddressSet struct AddressSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(value))); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(value))); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(value))); } /** * @dev Returns the number of values in the set. O(1). */ function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint256(_at(set._inner, index))); } // UintSet struct UintSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } /** * @dev Returns the number of values on the set. O(1). */ function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } } // File contracts/TokenFactory.sol // SPDX-License-Identifier: UNLICENSED // ALL RIGHTS RESERVED // This contract logs all presales on the platform pragma solidity 0.6.12; contract TokenFactory is Ownable { using EnumerableSet for EnumerableSet.AddressSet; EnumerableSet.AddressSet private tokens; EnumerableSet.AddressSet private tokenGenerators; mapping(address => uint256) private tokenIndex; event tokenRegistered(address tokenAddress); function adminAllowTokenGenerator (address _address, bool _allow) public onlyOwner { if (_allow) { tokenGenerators.add(_address); } else { tokenGenerators.remove(_address); } } /** * @notice called by a registered TokenGenerator upon Token creation */ function registerToken (address _tokenAddress) public { require(tokenGenerators.contains(msg.sender), 'FORBIDDEN'); tokens.add(_tokenAddress); tokenIndex[_tokenAddress] = tokens.length(); emit tokenRegistered(_tokenAddress); } /** * @notice Number of allowed TokenGenerators */ function tokenGeneratorsLength() external view returns (uint256) { return tokenGenerators.length(); } /** * @notice Gets the address of a registered TokenGenerator at specified index */ function tokenGeneratorAtIndex(uint256 _index) external view returns (address) { return tokenGenerators.at(_index); } /** * @notice returns true if the token address was generated by the DexPad Platform */ function tokenIsRegistered(address _tokenAddress) external view returns (bool) { return tokens.contains(_tokenAddress); } /** * @notice The length of all presales on the platform */ function tokensLength() external view returns (uint256) { return tokens.length(); } /** * @notice gets a token at a specific index. Although using Enumerable Set, since tokens are only added and not removed, indexes will never change * @return the address of the Token contract at index */ function tokenAtIndex(uint256 _index) external view returns (address) { return tokens.at(_index); } function indexOfToken(address _tokenAddress) external view returns(uint256){ return tokenIndex[_tokenAddress]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":false,"internalType":"address","name":"tokenAddress","type":"address"}],"name":"tokenRegistered","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_allow","type":"bool"}],"name":"adminAllowTokenGenerator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"indexOfToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"registerToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenAtIndex","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"tokenGeneratorAtIndex","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenGeneratorsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"tokenIsRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6107cd8061007d6000396000f3fe608060405234801561001057600080fd5b50600436106100995760003560e01c806309824a801461009e5780632335093c146100c657806341f1afc7146100fe5780636257bb2014610137578063715018a614610154578063805b5b741461015c5780638da5cb5b14610196578063b246bc6f1461019e578063d92fc67b146101a6578063f2fde38b146101ae578063f588e015146101d4575b600080fd5b6100c4600480360360208110156100b457600080fd5b50356001600160a01b0316610202565b005b6100ec600480360360208110156100dc57600080fd5b50356001600160a01b03166102b4565b60408051918252519081900360200190f35b61011b6004803603602081101561011457600080fd5b50356102cf565b604080516001600160a01b039092168252519081900360200190f35b61011b6004803603602081101561014d57600080fd5b50356102e2565b6100c46102ef565b6101826004803603602081101561017257600080fd5b50356001600160a01b031661037f565b604080519115158252519081900360200190f35b61011b61038c565b6100ec61039b565b6100ec6103ac565b6100c4600480360360208110156101c457600080fd5b50356001600160a01b03166103b8565b6100c4600480360360408110156101ea57600080fd5b506001600160a01b038135169060200135151561049e565b61020d60033361051e565b61024a576040805162461bcd60e51b81526020600482015260096024820152682327a92124a22222a760b91b604482015290519081900360640190fd5b61025560018261053a565b50610260600161054f565b6001600160a01b038216600081815260056020908152604091829020939093558051918252517fa2e1ce62cc5df402692a0144ce9cd9bc8c83333bd574d03d2558ac93744a4f2d929181900390910190a150565b6001600160a01b031660009081526005602052604090205490565b60006102dc60018361055a565b92915050565b60006102dc60038361055a565b6102f7610566565b6000546001600160a01b03908116911614610347576040805162461bcd60e51b81526020600482018190526024820152600080516020610758833981519152604482015290519081900360640190fd5b600080546040516001600160a01b0390911690600080516020610778833981519152908390a3600080546001600160a01b0319169055565b60006102dc60018361051e565b6000546001600160a01b031690565b60006103a7600361054f565b905090565b60006103a7600161054f565b6103c0610566565b6000546001600160a01b03908116911614610410576040805162461bcd60e51b81526020600482018190526024820152600080516020610758833981519152604482015290519081900360640190fd5b6001600160a01b0381166104555760405162461bcd60e51b81526004018080602001828103825260268152602001806107326026913960400191505060405180910390fd5b600080546040516001600160a01b038085169392169160008051602061077883398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6104a6610566565b6000546001600160a01b039081169116146104f6576040805162461bcd60e51b81526020600482018190526024820152600080516020610758833981519152604482015290519081900360640190fd5b801561050d5761050760038361053a565b5061051a565b61051860038361056a565b505b5050565b6000610533836001600160a01b03841661057f565b9392505050565b6000610533836001600160a01b038416610597565b60006102dc826105e1565b600061053383836105e5565b3390565b6000610533836001600160a01b038416610649565b60009081526001919091016020526040902054151590565b60006105a3838361057f565b6105d9575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556102dc565b5060006102dc565b5490565b815460009082106106275760405162461bcd60e51b81526004018080602001828103825260228152602001806107106022913960400191505060405180910390fd5b82600001828154811061063657fe5b9060005260206000200154905092915050565b60008181526001830160205260408120548015610705578354600019808301919081019060009087908390811061067c57fe5b906000526020600020015490508087600001848154811061069957fe5b6000918252602080832090910192909255828152600189810190925260409020908401905586548790806106c957fe5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506102dc565b60009150506102dc56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220aed8630b7294fc18c38ff5022d9b0f37f2db1f717181ab40ca0daddde489b57a64736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100995760003560e01c806309824a801461009e5780632335093c146100c657806341f1afc7146100fe5780636257bb2014610137578063715018a614610154578063805b5b741461015c5780638da5cb5b14610196578063b246bc6f1461019e578063d92fc67b146101a6578063f2fde38b146101ae578063f588e015146101d4575b600080fd5b6100c4600480360360208110156100b457600080fd5b50356001600160a01b0316610202565b005b6100ec600480360360208110156100dc57600080fd5b50356001600160a01b03166102b4565b60408051918252519081900360200190f35b61011b6004803603602081101561011457600080fd5b50356102cf565b604080516001600160a01b039092168252519081900360200190f35b61011b6004803603602081101561014d57600080fd5b50356102e2565b6100c46102ef565b6101826004803603602081101561017257600080fd5b50356001600160a01b031661037f565b604080519115158252519081900360200190f35b61011b61038c565b6100ec61039b565b6100ec6103ac565b6100c4600480360360208110156101c457600080fd5b50356001600160a01b03166103b8565b6100c4600480360360408110156101ea57600080fd5b506001600160a01b038135169060200135151561049e565b61020d60033361051e565b61024a576040805162461bcd60e51b81526020600482015260096024820152682327a92124a22222a760b91b604482015290519081900360640190fd5b61025560018261053a565b50610260600161054f565b6001600160a01b038216600081815260056020908152604091829020939093558051918252517fa2e1ce62cc5df402692a0144ce9cd9bc8c83333bd574d03d2558ac93744a4f2d929181900390910190a150565b6001600160a01b031660009081526005602052604090205490565b60006102dc60018361055a565b92915050565b60006102dc60038361055a565b6102f7610566565b6000546001600160a01b03908116911614610347576040805162461bcd60e51b81526020600482018190526024820152600080516020610758833981519152604482015290519081900360640190fd5b600080546040516001600160a01b0390911690600080516020610778833981519152908390a3600080546001600160a01b0319169055565b60006102dc60018361051e565b6000546001600160a01b031690565b60006103a7600361054f565b905090565b60006103a7600161054f565b6103c0610566565b6000546001600160a01b03908116911614610410576040805162461bcd60e51b81526020600482018190526024820152600080516020610758833981519152604482015290519081900360640190fd5b6001600160a01b0381166104555760405162461bcd60e51b81526004018080602001828103825260268152602001806107326026913960400191505060405180910390fd5b600080546040516001600160a01b038085169392169160008051602061077883398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6104a6610566565b6000546001600160a01b039081169116146104f6576040805162461bcd60e51b81526020600482018190526024820152600080516020610758833981519152604482015290519081900360640190fd5b801561050d5761050760038361053a565b5061051a565b61051860038361056a565b505b5050565b6000610533836001600160a01b03841661057f565b9392505050565b6000610533836001600160a01b038416610597565b60006102dc826105e1565b600061053383836105e5565b3390565b6000610533836001600160a01b038416610649565b60009081526001919091016020526040902054151590565b60006105a3838361057f565b6105d9575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556102dc565b5060006102dc565b5490565b815460009082106106275760405162461bcd60e51b81526004018080602001828103825260228152602001806107106022913960400191505060405180910390fd5b82600001828154811061063657fe5b9060005260206000200154905092915050565b60008181526001830160205260408120548015610705578354600019808301919081019060009087908390811061067c57fe5b906000526020600020015490508087600001848154811061069957fe5b6000918252602080832090910192909255828152600189810190925260409020908401905586548790806106c957fe5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506102dc565b60009150506102dc56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220aed8630b7294fc18c38ff5022d9b0f37f2db1f717181ab40ca0daddde489b57a64736f6c634300060c0033
Deployed Bytecode Sourcemap
13624:2304:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14281:267;;;;;;;;;;;;;;;;-1:-1:-1;14281:267:0;-1:-1:-1;;;;;14281:267:0;;:::i;:::-;;15787:126;;;;;;;;;;;;;;;;-1:-1:-1;15787:126:0;-1:-1:-1;;;;;15787:126:0;;:::i;:::-;;;;;;;;;;;;;;;;15666:113;;;;;;;;;;;;;;;;-1:-1:-1;15666:113:0;;:::i;:::-;;;;-1:-1:-1;;;;;15666:113:0;;;;;;;;;;;;;;14856:131;;;;;;;;;;;;;;;;-1:-1:-1;14856:131:0;;:::i;3073:148::-;;;:::i;15104:135::-;;;;;;;;;;;;;;;;-1:-1:-1;15104:135:0;-1:-1:-1;;;;;15104:135:0;;:::i;:::-;;;;;;;;;;;;;;;;;;2431:79;;;:::i;14628:115::-;;;:::i;15328:97::-;;;:::i;3376:244::-;;;;;;;;;;;;;;;;-1:-1:-1;3376:244:0;-1:-1:-1;;;;;3376:244:0;;:::i;13943:234::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13943:234:0;;;;;;;;;;:::i;14281:267::-;14354:36;:15;14379:10;14354:24;:36::i;:::-;14346:58;;;;;-1:-1:-1;;;14346:58:0;;;;;;;;;;;;-1:-1:-1;;;14346:58:0;;;;;;;;;;;;;;;14415:25;:6;14426:13;14415:10;:25::i;:::-;;14479:15;:6;:13;:15::i;:::-;-1:-1:-1;;;;;14451:25:0;;;;;;:10;:25;;;;;;;;;:43;;;;14510:30;;;;;;;;;;;;;;;;;14281:267;:::o;15787:126::-;-1:-1:-1;;;;;15880:25:0;15854:7;15880:25;;;:10;:25;;;;;;;15787:126::o;15666:113::-;15727:7;15754:17;:6;15764;15754:9;:17::i;:::-;15747:24;15666:113;-1:-1:-1;;15666:113:0:o;14856:131::-;14926:7;14953:26;:15;14972:6;14953:18;:26::i;3073:148::-;2653:12;:10;:12::i;:::-;2643:6;;-1:-1:-1;;;;;2643:6:0;;;:22;;;2635:67;;;;;-1:-1:-1;;;2635:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2635:67:0;;;;;;;;;;;;;;;3180:1:::1;3164:6:::0;;3143:40:::1;::::0;-1:-1:-1;;;;;3164:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;3143:40:0;3180:1;;3143:40:::1;3211:1;3194:19:::0;;-1:-1:-1;;;;;;3194:19:0::1;::::0;;3073:148::o;15104:135::-;15177:4;15201:30;:6;15217:13;15201:15;:30::i;2431:79::-;2469:7;2496:6;-1:-1:-1;;;;;2496:6:0;2431:79;:::o;14628:115::-;14684:7;14711:24;:15;:22;:24::i;:::-;14704:31;;14628:115;:::o;15328:97::-;15375:7;15402:15;:6;:13;:15::i;3376:244::-;2653:12;:10;:12::i;:::-;2643:6;;-1:-1:-1;;;;;2643:6:0;;;:22;;;2635:67;;;;;-1:-1:-1;;;2635:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2635:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3465:22:0;::::1;3457:73;;;;-1:-1:-1::0;;;3457:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3567:6;::::0;;3546:38:::1;::::0;-1:-1:-1;;;;;3546:38:0;;::::1;::::0;3567:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;3546:38:0;::::1;3595:6;:17:::0;;-1:-1:-1;;;;;;3595:17:0::1;-1:-1:-1::0;;;;;3595:17:0;;;::::1;::::0;;;::::1;::::0;;3376:244::o;13943:234::-;2653:12;:10;:12::i;:::-;2643:6;;-1:-1:-1;;;;;2643:6:0;;;:22;;;2635:67;;;;;-1:-1:-1;;;2635:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2635:67:0;;;;;;;;;;;;;;;14041:6:::1;14037:133;;;14064:29;:15;14084:8:::0;14064:19:::1;:29::i;:::-;;14037:133;;;14126:32;:15;14149:8:::0;14126:22:::1;:32::i;:::-;;14037:133;13943:234:::0;;:::o;10967:158::-;11047:4;11071:46;11081:3;-1:-1:-1;;;;;11101:14:0;;11071:9;:46::i;:::-;11064:53;10967:158;-1:-1:-1;;;10967:158:0:o;10413:143::-;10483:4;10507:41;10512:3;-1:-1:-1;;;;;10532:14:0;;10507:4;:41::i;11211:117::-;11274:7;11301:19;11309:3;11301:7;:19::i;11672:149::-;11746:7;11789:22;11793:3;11805:5;11789:3;:22::i;818:106::-;906:10;818:106;:::o;10732:149::-;10805:4;10829:44;10837:3;-1:-1:-1;;;;;10857:14:0;;10829:7;:44::i;7697:129::-;7770:4;7794:19;;;:12;;;;;:19;;;;;;:24;;;7697:129::o;5477:414::-;5540:4;5562:21;5572:3;5577:5;5562:9;:21::i;:::-;5557:327;;-1:-1:-1;5600:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;5783:18;;5761:19;;;:12;;;:19;;;;;;:40;;;;5816:11;;5557:327;-1:-1:-1;5867:5:0;5860:12;;7912:109;7995:18;;7912:109::o;8365:204::-;8460:18;;8432:7;;8460:26;-1:-1:-1;8452:73:0;;;;-1:-1:-1;;;8452:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8543:3;:11;;8555:5;8543:18;;;;;;;;;;;;;;;;8536:25;;8365:204;;;;:::o;6067:1544::-;6133:4;6272:19;;;:12;;;:19;;;;;;6308:15;;6304:1300;;6743:18;;-1:-1:-1;;6694:14:0;;;;6743:22;;;;6670:21;;6743:3;;:22;;7030;;;;;;;;;;;;;;7010:42;;7176:9;7147:3;:11;;7159:13;7147:26;;;;;;;;;;;;;;;;;;;:38;;;;7253:23;;;7295:1;7253:12;;;:23;;;;;;7279:17;;;7253:43;;7405:17;;7253:3;;7405:17;;;;;;;;;;;;;;;;;;;;;;7500:3;:12;;:19;7513:5;7500:19;;;;;;;;;;;7493:26;;;7543:4;7536:11;;;;;;;;6304:1300;7587:5;7580:12;;;;
Swarm Source
ipfs://aed8630b7294fc18c38ff5022d9b0f37f2db1f717181ab40ca0daddde489b57a
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.