Contract Overview
Balance:
0 MATIC
MATIC Value:
$0.00
My Name Tag:
Not Available, login to update
Txn Hash |
Method
|
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0xe0bccead4e989f1ec1d9078a29f2b4bf6c282f3fb50aea5579a57d422089b14c | 0x60806040 | 28121692 | 269 days 21 hrs ago | 0xb919da06d5f81777b13fc5cbd48635e19500fbf5 | IN | Create: ERC721CollectionFactoryV3 | 0 MATIC | 1.636290442031 |
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
ERC721CollectionFactoryV3
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 1 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.7.6; import "@openzeppelin/contracts/access/Ownable.sol"; import "../../commons/BeaconProxyFactory.sol"; contract ERC721CollectionFactoryV3 is Ownable, BeaconProxyFactory { address[] public collections; mapping(address => bool) public isCollectionFromFactory; /** * @notice Create the contract * @param _owner - contract owner * @param _implementation - contract implementation */ constructor(address _owner, address _implementation) BeaconProxyFactory(_implementation) { transferOwnership(_owner); } /** * @notice Create a collection * @param _salt - arbitrary 32 bytes hexa * @param _data - call data used to call the contract already created if passed * @return addr - address of the contract created */ function createCollection(bytes32 _salt, bytes memory _data) external onlyOwner returns (address addr) { // Deploy a new collection addr = _createProxy(_salt, _data); // Transfer ownership to the owner after deployment Ownable(addr).transferOwnership(owner()); // Set variables for handle data faster // This use storage and therefore make deployments expensive. collections.push(addr); isCollectionFromFactory[addr] = true; } /** * @notice Get the amount of collections deployed * @return amount of collections deployed */ function collectionsSize() external view returns (uint256) { return collections.length; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; import "../utils/Context.sol"; /** * @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 virtual 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; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.7.6; import "@openzeppelin/contracts/proxy/BeaconProxy.sol"; import "@openzeppelin/contracts/utils/Address.sol"; contract BeaconProxyFactory { using Address for address; address public implementation; bytes public code; bytes32 public codeHash; event ProxyCreated(address indexed _address, bytes32 _salt); event ImplementationSet(address indexed _implementation, bytes32 _codeHash, bytes _code); /** * @notice Create the contract * @param _implementation - UpgradeableBeacon implementation */ constructor(address _implementation) { _setImplementation(_implementation); } /** * @notice Create a contract * @param _salt - arbitrary 32 bytes hexa * @param _data - call data used to call the contract already created if passed * @return addr - address of the contract created */ function _createProxy(bytes32 _salt, bytes memory _data) internal virtual returns (address addr) { bytes memory slotcode = code; bytes32 salt = keccak256(abi.encodePacked(_salt, msg.sender, _data)); // solium-disable-next-line security/no-inline-assembly assembly { addr := create2(0, add(slotcode, 0x20), mload(slotcode), salt) } require(addr != address(0), "BeaconProxyFactory#_createProxy: CREATION_FAILED"); emit ProxyCreated(addr, _salt); if (_data.length > 0) { (bool success,) = addr.call(_data); require(success, "BeaconProxyFactory#_createProxy: CALL_FAILED"); } } /** * @notice Get a deterministics contract address * @param _salt - arbitrary 32 bytes hexa * @param _address - supposed sender of the transaction * @return address of the deterministic contract */ function getAddress(bytes32 _salt, address _address, bytes calldata _data) external view returns (address) { return address( uint256( keccak256( abi.encodePacked( byte(0xff), address(this), keccak256(abi.encodePacked(_salt, _address, _data)), codeHash ) ) ) ); } /** * @notice Set the contract implementation * @param _implementation - UpgradeableBeacon implementation */ function _setImplementation(address _implementation) internal { require( _implementation != address(0) && _implementation.isContract(), "BeaconProxyFactoryV2#_setImplementation: INVALID_IMPLEMENTATION" ); code = abi.encodePacked(type(BeaconProxy).creationCode, abi.encode(_implementation, "")); codeHash = keccak256(code); implementation = _implementation; emit ImplementationSet(implementation, codeHash, code); } }
// SPDX-License-Identifier: MIT 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; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; import "./Proxy.sol"; import "../utils/Address.sol"; import "./IBeacon.sol"; /** * @dev This contract implements a proxy that gets the implementation address for each call from a {UpgradeableBeacon}. * * The beacon address is stored in storage slot `uint256(keccak256('eip1967.proxy.beacon')) - 1`, so that it doesn't * conflict with the storage layout of the implementation behind the proxy. * * _Available since v3.4._ */ contract BeaconProxy is Proxy { /** * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor. */ bytes32 private constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50; /** * @dev Initializes the proxy with `beacon`. * * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. This * will typically be an encoded function call, and allows initializating the storage of the proxy like a Solidity * constructor. * * Requirements: * * - `beacon` must be a contract with the interface {IBeacon}. */ constructor(address beacon, bytes memory data) public payable { assert(_BEACON_SLOT == bytes32(uint256(keccak256("eip1967.proxy.beacon")) - 1)); _setBeacon(beacon, data); } /** * @dev Returns the current beacon address. */ function _beacon() internal view virtual returns (address beacon) { bytes32 slot = _BEACON_SLOT; // solhint-disable-next-line no-inline-assembly assembly { beacon := sload(slot) } } /** * @dev Returns the current implementation address of the associated beacon. */ function _implementation() internal view virtual override returns (address) { return IBeacon(_beacon()).implementation(); } /** * @dev Changes the proxy to use a new beacon. * * If `data` is nonempty, it's used as data in a delegate call to the implementation returned by the beacon. * * Requirements: * * - `beacon` must be a contract. * - The implementation returned by `beacon` must be a contract. */ function _setBeacon(address beacon, bytes memory data) internal virtual { require( Address.isContract(beacon), "BeaconProxy: beacon is not a contract" ); require( Address.isContract(IBeacon(beacon).implementation()), "BeaconProxy: beacon implementation is not a contract" ); bytes32 slot = _BEACON_SLOT; // solhint-disable-next-line no-inline-assembly assembly { sstore(slot, beacon) } if (data.length > 0) { Address.functionDelegateCall(_implementation(), data, "BeaconProxy: function call failed"); } } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.2 <0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to * be specified by overriding the virtual {_implementation} function. * * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a * different contract through the {_delegate} function. * * The success and return data of the delegated call will be returned back to the caller of the proxy. */ abstract contract Proxy { /** * @dev Delegates the current call to `implementation`. * * This function does not return to its internall call site, it will return directly to the external caller. */ function _delegate(address implementation) internal virtual { // solhint-disable-next-line no-inline-assembly assembly { // Copy msg.data. We take full control of memory in this inline assembly // block because it will not return to Solidity code. We overwrite the // Solidity scratch pad at memory position 0. calldatacopy(0, 0, calldatasize()) // Call the implementation. // out and outsize are 0 because we don't know the size yet. let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0) // Copy the returned data. returndatacopy(0, 0, returndatasize()) switch result // delegatecall returns 0 on error. case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } /** * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function * and {_fallback} should delegate. */ function _implementation() internal view virtual returns (address); /** * @dev Delegates the current call to the address returned by `_implementation()`. * * This function does not return to its internall call site, it will return directly to the external caller. */ function _fallback() internal virtual { _beforeFallback(); _delegate(_implementation()); } /** * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other * function in the contract matches the call data. */ fallback () external payable virtual { _fallback(); } /** * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data * is empty. */ receive () external payable virtual { _fallback(); } /** * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback` * call, or as part of the Solidity `fallback` or `receive` functions. * * If overriden should call `super._beforeFallback()`. */ function _beforeFallback() internal virtual { } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev This is the interface that {BeaconProxy} expects of its beacon. */ interface IBeacon { /** * @dev Must return an address that can be used as a delegate call target. * * {BeaconProxy} will check that this address is a contract. */ function implementation() external view returns (address); }
{ "optimizer": { "enabled": true, "runs": 1 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_implementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_implementation","type":"address"},{"indexed":false,"internalType":"bytes32","name":"_codeHash","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"_code","type":"bytes"}],"name":"ImplementationSet","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":"_address","type":"address"},{"indexed":false,"internalType":"bytes32","name":"_salt","type":"bytes32"}],"name":"ProxyCreated","type":"event"},{"inputs":[],"name":"code","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"codeHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"collections","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"collectionsSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_salt","type":"bytes32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"createCollection","outputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_salt","type":"bytes32"},{"internalType":"address","name":"_address","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"getAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isCollectionFromFactory","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200198638038062001986833981810160405260408110156200003757600080fd5b5080516020909101518060006200004d620000a5565b600080546001600160a01b0319166001600160a01b03831690811782556040519293509160008051602062001927833981519152908290a3506200009181620000a9565b506200009d8262000396565b50506200056f565b3390565b6001600160a01b03811615801590620000dc5750620000dc816001600160a01b0316620004a060201b620007991760201c565b620001195760405162461bcd60e51b815260040180806020018281038252603f81526020018062001947603f913960400191505060405180910390fd5b6040516200012a60208201620004b5565b6020820181038252601f19601f820116604052508160405160200180826001600160a01b0316815260200180602001828103825260008152602001925050506040516020818303038152906040526040516020018083805190602001908083835b60208310620001ac5780518252601f1990920191602091820191016200018b565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310620001f65780518252601f199092019160209182019101620001d5565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526002908051906020019062000242929190620004c3565b5060026040518082805460018160011615610100020316600290048015620002a45780601f1062000281576101008083540402835291820191620002a4565b820191906000526020600020905b8154815290600101906020018083116200028f575b5050604080519182900382206003819055600180546001600160a01b0319166001600160a01b03888116919091178083558386526020860185815260028054610100958116159590950260001901909416849004958701869052911696507f7acba6e3c47815c1b41b230650f7ed720d66bdc6ca45468c4a6cdb9425132024955091939092909190606083019084908015620003845780601f10620003585761010080835404028352916020019162000384565b820191906000526020600020905b8154815290600101906020018083116200036657829003601f168201915b5050935050505060405180910390a250565b620003a0620000a5565b6001600160a01b0316620003b3620004a6565b6001600160a01b0316146200040f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116620004565760405162461bcd60e51b8152600401808060200182810382526026815260200180620019016026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216916000805160206200192783398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3b151590565b6000546001600160a01b031690565b61084480620010bd83390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620004fb576000855562000546565b82601f106200051657805160ff191683800117855562000546565b8280016001018555821562000546579182015b828111156200054657825182559160200191906001019062000529565b506200055492915062000558565b5090565b5b8082111562000554576000815560010162000559565b610b3e806200057f6000396000f3fe608060405234801561001057600080fd5b50600436106100995760003560e01c806318edaaf21461009e57806324c12bf6146100b85780635c60da1b14610135578063715018a6146101595780638da5cb5b146101635780639d2d39571461016b578063af22239914610216578063c030001114610299578063dfaf33e9146102d3578063f2fde38b146102db578063fdbda0ec14610301575b600080fd5b6100a661031e565b60408051918252519081900360200190f35b6100c0610324565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fa5781810151838201526020016100e2565b50505050905090810190601f1680156101275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61013d6103af565b604080516001600160a01b039092168252519081900360200190f35b6101616103be565b005b61013d610458565b61013d6004803603604081101561018157600080fd5b81359190810190604081016020820135600160201b8111156101a257600080fd5b8201836020820111156101b457600080fd5b803590602001918460018302840111600160201b831117156101d557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610467945050505050565b61013d6004803603606081101561022c57600080fd5b8135916001600160a01b0360208201351691810190606081016040820135600160201b81111561025b57600080fd5b82018360208201111561026d57600080fd5b803590602001918460018302840111600160201b8311171561028e57600080fd5b5090925090506105af565b6102bf600480360360208110156102af57600080fd5b50356001600160a01b0316610664565b604080519115158252519081900360200190f35b6100a6610679565b610161600480360360208110156102f157600080fd5b50356001600160a01b031661067f565b61013d6004803603602081101561031757600080fd5b503561076f565b60035481565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156103a75780601f1061037c576101008083540402835291602001916103a7565b820191906000526020600020905b81548152906001019060200180831161038a57829003601f168201915b505050505081565b6001546001600160a01b031681565b6103c661079f565b6001600160a01b03166103d7610458565b6001600160a01b031614610420576040805162461bcd60e51b81526020600482018190526024820152600080516020610ac9833981519152604482015290519081900360640190fd5b600080546040516001600160a01b0390911690600080516020610ae9833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600061047161079f565b6001600160a01b0316610482610458565b6001600160a01b0316146104cb576040805162461bcd60e51b81526020600482018190526024820152600080516020610ac9833981519152604482015290519081900360640190fd5b6104d583836107a3565b9050806001600160a01b031663f2fde38b6104ee610458565b6040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561052d57600080fd5b505af1158015610541573d6000803e3d6000fd5b50506004805460018082019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0386169081179091556000908152600560205260409020805460ff1916909117905550909392505050565b600060ff60f81b308686868660405160200180858152602001846001600160a01b031660601b8152601401838380828437808301925050509450505050506040516020818303038152906040528051906020012060035460405160200180856001600160f81b0319168152600101846001600160a01b031660601b81526014018381526020018281526020019450505050506040516020818303038152906040528051906020012060001c9050949350505050565b60056020526000908152604090205460ff1681565b60045490565b61068761079f565b6001600160a01b0316610698610458565b6001600160a01b0316146106e1576040805162461bcd60e51b81526020600482018190526024820152600080516020610ac9833981519152604482015290519081900360640190fd5b6001600160a01b0381166107265760405162461bcd60e51b8152600401808060200182810382526026815260200180610a476026913960400191505060405180910390fd5b600080546040516001600160a01b0380851693921691600080516020610ae983398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6004818154811061077f57600080fd5b6000918252602090912001546001600160a01b0316905081565b3b151590565b3390565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815260009384939192909183018282801561082d5780601f106108025761010080835404028352916020019161082d565b820191906000526020600020905b81548152906001019060200180831161081057829003601f168201915b50505050509050600084338560405160200180848152602001836001600160a01b031660601b815260140182805190602001908083835b602083106108835780518252601f199092019160209182019101610864565b6001836020036101000a0380198251168184511680821785525050505050509050019350505050604051602081830303815290604052805190602001209050808251602084016000f592506001600160a01b0383166109135760405162461bcd60e51b8152600401808060200182810382526030815260200180610a996030913960400191505060405180910390fd5b6040805186815290516001600160a01b038516917fcfaab0d6675a72a93c114f48dd85add1076be0c88545968759ef034da7ad146f919081900360200190a2835115610a3e576000836001600160a01b0316856040518082805190602001908083835b602083106109955780518252601f199092019160209182019101610976565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146109f7576040519150601f19603f3d011682016040523d82523d6000602084013e6109fc565b606091505b5050905080610a3c5760405162461bcd60e51b815260040180806020018281038252602c815260200180610a6d602c913960400191505060405180910390fd5b505b50509291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373426561636f6e50726f7879466163746f7279235f63726561746550726f78793a2043414c4c5f4641494c4544426561636f6e50726f7879466163746f7279235f63726561746550726f78793a204352454154494f4e5f4641494c45444f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a264697066735822122016fd99d4c211881cd70ed9895f307cedbc1ae899e59d7267ff0c1e1c4dd4bc7664736f6c6343000706003360806040526040516108443803806108448339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b50604052506100e3915050565b6100ed82826100f4565b505061047e565b6101078261024960201b6100311760201c565b6101425760405162461bcd60e51b81526004018080602001828103825260258152602001806107c56025913960400191505060405180910390fd5b6101ba826001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561017e57600080fd5b505afa158015610192573d6000803e3d6000fd5b505050506040513d60208110156101a857600080fd5b5051610249602090811b61003117901c565b6101f55760405162461bcd60e51b81526004018080602001828103825260348152602001806108106034913960400191505060405180910390fd5b6000805160206107848339815191528281558151156102445761024261021961024f565b836040518060600160405280602181526020016107a4602191396102c260201b6100371760201c565b505b505050565b3b151590565b60006102596103c7565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561029157600080fd5b505afa1580156102a5573d6000803e3d6000fd5b505050506040513d60208110156102bb57600080fd5b5051905090565b60606102cd84610249565b6103085760405162461bcd60e51b81526004018080602001828103825260268152602001806107ea6026913960400191505060405180910390fd5b600080856001600160a01b0316856040518082805190602001908083835b602083106103455780518252601f199092019160209182019101610326565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146103a5576040519150601f19603f3d011682016040523d82523d6000602084013e6103aa565b606091505b5090925090506103bb8282866103da565b925050505b9392505050565b6000805160206107848339815191525490565b606083156103e95750816103c0565b8251156103f95782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561044357818101518382015260200161042b565b50505050905090810190601f1680156104705780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6102f78061048d6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f61002f565b61002f61002a61013b565b6101ae565b565b3b151590565b606061004284610031565b61007d5760405162461bcd60e51b815260040180806020018281038252602681526020018061029c6026913960400191505060405180910390fd5b600080856001600160a01b0316856040518082805190602001908083835b602083106100ba5780518252601f19909201916020918201910161009b565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461011a576040519150601f19603f3d011682016040523d82523d6000602084013e61011f565b606091505b509150915061012f8282866101d2565b925050505b9392505050565b6000610145610276565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561017d57600080fd5b505afa158015610191573d6000803e3d6000fd5b505050506040513d60208110156101a757600080fd5b5051905090565b3660008037600080366000845af43d6000803e8080156101cd573d6000f35b3d6000fd5b606083156101e1575081610134565b8251156101f15782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561023b578181015183820152602001610223565b50505050905090810190601f1680156102685780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50549056fe416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374a2646970667358221220d81e99b6e6543e743b23013becdbaf0c927e58a3e19bf7f4dcfd9c3ceb58b66464736f6c63430007060033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50426561636f6e50726f78793a2066756e6374696f6e2063616c6c206661696c6564426561636f6e50726f78793a20626561636f6e206973206e6f74206120636f6e7472616374416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374426561636f6e50726f78793a20626561636f6e20696d706c656d656e746174696f6e206973206e6f74206120636f6e74726163744f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573738be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0426561636f6e50726f7879466163746f72795632235f736574496d706c656d656e746174696f6e3a20494e56414c49445f494d504c454d454e544154494f4e000000000000000000000000bf6755a83c0dcdbb2933a96ea778e00b717d7004000000000000000000000000ddb3781fff645325c8896aa1f067baa381607ecc
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000bf6755a83c0dcdbb2933a96ea778e00b717d7004000000000000000000000000ddb3781fff645325c8896aa1f067baa381607ecc
-----Decoded View---------------
Arg [0] : _owner (address): 0xbf6755a83c0dcdbb2933a96ea778e00b717d7004
Arg [1] : _implementation (address): 0xddb3781fff645325c8896aa1f067baa381607ecc
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000bf6755a83c0dcdbb2933a96ea778e00b717d7004
Arg [1] : 000000000000000000000000ddb3781fff645325c8896aa1f067baa381607ecc
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.