Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 113 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Store | 11302789 | 1452 days ago | IN | 0 ETH | 0.00250719 | ||||
Create Explicit | 10190207 | 1623 days ago | IN | 0 ETH | 0.00615252 | ||||
Create Explicit | 10091923 | 1639 days ago | IN | 0 ETH | 0.00463284 | ||||
Create Explicit | 10091460 | 1639 days ago | IN | 0 ETH | 0.00553726 | ||||
Create Explicit | 10052363 | 1645 days ago | IN | 0 ETH | 0.00861352 | ||||
Create Explicit | 10041246 | 1647 days ago | IN | 0 ETH | 0.00216199 | ||||
Create Explicit | 10041219 | 1647 days ago | IN | 0 ETH | 0.00184575 | ||||
Create Explicit | 9995923 | 1654 days ago | IN | 0 ETH | 0.00072533 | ||||
Create Explicit | 9979305 | 1656 days ago | IN | 0 ETH | 0.00184575 | ||||
Create Explicit | 9940220 | 1662 days ago | IN | 0 ETH | 0.00307626 | ||||
Create Explicit | 9933086 | 1663 days ago | IN | 0 ETH | 0.00184575 | ||||
Create Explicit | 9912083 | 1667 days ago | IN | 0 ETH | 0.00110745 | ||||
Create Explicit | 9872540 | 1673 days ago | IN | 0 ETH | 0.00061525 | ||||
Create Explicit | 9848843 | 1676 days ago | IN | 0 ETH | 0.00074445 | ||||
Create Explicit | 9845959 | 1677 days ago | IN | 0 ETH | 0.00184575 | ||||
Create Explicit | 9843848 | 1677 days ago | IN | 0 ETH | 0.00163041 | ||||
Create Explicit | 9827166 | 1680 days ago | IN | 0 ETH | 0.00153813 | ||||
Create Explicit | 9826866 | 1680 days ago | IN | 0 ETH | 0.00036915 | ||||
Create Explicit | 9788992 | 1686 days ago | IN | 0 ETH | 0.00030762 | ||||
Create Explicit | 9781638 | 1687 days ago | IN | 0 ETH | 0.00030762 | ||||
Create Explicit | 9737115 | 1694 days ago | IN | 0 ETH | 0.0004922 | ||||
Create Explicit | 9650546 | 1707 days ago | IN | 0 ETH | 0.00153813 | ||||
Create Explicit | 9646860 | 1708 days ago | IN | 0 ETH | 0.00061525 | ||||
Create Explicit | 9646715 | 1708 days ago | IN | 0 ETH | 0.00030762 | ||||
Create Explicit | 9582116 | 1717 days ago | IN | 0 ETH | 0.00092287 |
Latest 25 internal transactions (View All)
Advanced mode:
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
Feed_Factory
Compiler Version
v0.5.7+commit.6da8b019
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-08-24 */ pragma solidity ^0.5.0; /** * @title Spawn * @author 0age * @notice This contract provides creation code that is used by Spawner in order * to initialize and deploy eip-1167 minimal proxies for a given logic contract. */ contract Spawn { constructor( address logicContract, bytes memory initializationCalldata ) public payable { // delegatecall into the logic contract to perform initialization. (bool ok, ) = logicContract.delegatecall(initializationCalldata); if (!ok) { // pass along failure message from delegatecall and revert. assembly { returndatacopy(0, 0, returndatasize) revert(0, returndatasize) } } // place eip-1167 runtime code in memory. bytes memory runtimeCode = abi.encodePacked( bytes10(0x363d3d373d3d3d363d73), logicContract, bytes15(0x5af43d82803e903d91602b57fd5bf3) ); // return eip-1167 code to write it to spawned contract runtime. assembly { return(add(0x20, runtimeCode), 45) // eip-1167 runtime code, length } } } /** * @title Spawner * @author 0age * @notice This contract spawns and initializes eip-1167 minimal proxies that * point to existing logic contracts. The logic contracts need to have an * intitializer function that should only callable when no contract exists at * their current address (i.e. it is being `DELEGATECALL`ed from a constructor). */ contract Spawner { /** * @notice Internal function for spawning an eip-1167 minimal proxy using * `CREATE2`. * @param logicContract address The address of the logic contract. * @param initializationCalldata bytes The calldata that will be supplied to * the `DELEGATECALL` from the spawned contract to the logic contract during * contract creation. * @return The address of the newly-spawned contract. */ function _spawn( address logicContract, bytes memory initializationCalldata ) internal returns (address spawnedContract) { // place creation code and constructor args of contract to spawn in memory. bytes memory initCode = abi.encodePacked( type(Spawn).creationCode, abi.encode(logicContract, initializationCalldata) ); // spawn the contract using `CREATE2`. spawnedContract = _spawnCreate2(initCode); } /** * @notice Internal view function for finding the address of the next standard * eip-1167 minimal proxy created using `CREATE2` with a given logic contract * and initialization calldata payload. * @param logicContract address The address of the logic contract. * @param initializationCalldata bytes The calldata that will be supplied to * the `DELEGATECALL` from the spawned contract to the logic contract during * contract creation. * @return The address of the next spawned minimal proxy contract with the * given parameters. */ function _computeNextAddress( address logicContract, bytes memory initializationCalldata ) internal view returns (address target) { // place creation code and constructor args of contract to spawn in memory. bytes memory initCode = abi.encodePacked( type(Spawn).creationCode, abi.encode(logicContract, initializationCalldata) ); // get target address using the constructed initialization code. (, target) = _getSaltAndTarget(initCode); } /** * @notice Private function for spawning a compact eip-1167 minimal proxy * using `CREATE2`. Provides logic that is reused by internal functions. A * salt will also be chosen based on the calling address and a computed nonce * that prevents deployments to existing addresses. * @param initCode bytes The contract creation code. * @return The address of the newly-spawned contract. */ function _spawnCreate2( bytes memory initCode ) private returns (address spawnedContract) { // get salt to use during deployment using the supplied initialization code. (bytes32 salt, ) = _getSaltAndTarget(initCode); assembly { let encoded_data := add(0x20, initCode) // load initialization code. let encoded_size := mload(initCode) // load the init code's length. spawnedContract := create2( // call `CREATE2` w/ 4 arguments. callvalue, // forward any supplied endowment. encoded_data, // pass in initialization code. encoded_size, // pass in init code's length. salt // pass in the salt value. ) // pass along failure message from failed contract deployment and revert. if iszero(spawnedContract) { returndatacopy(0, 0, returndatasize) revert(0, returndatasize) } } } /** * @notice Private function for determining the salt and the target deployment * address for the next spawned contract (using create2) based on the contract * creation code. */ function _getSaltAndTarget( bytes memory initCode ) private view returns (bytes32 salt, address target) { // get the keccak256 hash of the init code for address derivation. bytes32 initCodeHash = keccak256(initCode); // set the initial nonce to be provided when constructing the salt. uint256 nonce = 0; // declare variable for code size of derived address. uint256 codeSize; while (true) { // derive `CREATE2` salt using `msg.sender` and nonce. salt = keccak256(abi.encodePacked(msg.sender, nonce)); target = address( // derive the target deployment address. uint160( // downcast to match the address type. uint256( // cast to uint to truncate upper digits. keccak256( // compute CREATE2 hash using 4 inputs. abi.encodePacked( // pack all inputs to the hash together. bytes1(0xff), // pass in the control character. address(this), // pass in the address of this contract. salt, // pass in the salt from above. initCodeHash // pass in hash of contract creation code. ) ) ) ) ); // determine if a contract is already deployed to the target address. assembly { codeSize := extcodesize(target) } // exit the loop if no contract is deployed to the target address. if (codeSize == 0) { break; } // otherwise, increment the nonce and derive a new salt. nonce++; } } } interface iRegistry { enum FactoryStatus { Unregistered, Registered, Retired } event FactoryAdded(address owner, address factory, uint256 factoryID, bytes extraData); event FactoryRetired(address owner, address factory, uint256 factoryID); event InstanceRegistered(address instance, uint256 instanceIndex, address indexed creator, address indexed factory, uint256 indexed factoryID); // factory state functions function addFactory(address factory, bytes calldata extraData ) external; function retireFactory(address factory) external; // factory view functions function getFactoryCount() external view returns (uint256 count); function getFactoryStatus(address factory) external view returns (FactoryStatus status); function getFactoryID(address factory) external view returns (uint16 factoryID); function getFactoryData(address factory) external view returns (bytes memory extraData); function getFactoryAddress(uint16 factoryID) external view returns (address factory); function getFactory(address factory) external view returns (FactoryStatus state, uint16 factoryID, bytes memory extraData); function getFactories() external view returns (address[] memory factories); function getPaginatedFactories(uint256 startIndex, uint256 endIndex) external view returns (address[] memory factories); // instance state functions function register(address instance, address creator, uint80 extraData) external; // instance view functions function getInstanceType() external view returns (bytes4 instanceType); function getInstanceCount() external view returns (uint256 count); function getInstance(uint256 index) external view returns (address instance); function getInstances() external view returns (address[] memory instances); function getPaginatedInstances(uint256 startIndex, uint256 endIndex) external view returns (address[] memory instances); } contract Metadata { bytes private _staticMetadata; bytes private _variableMetadata; event StaticMetadataSet(bytes staticMetadata); event VariableMetadataSet(bytes variableMetadata); // state functions function _setStaticMetadata(bytes memory staticMetadata) internal { require(_staticMetadata.length == 0, "static metadata cannot be changed"); _staticMetadata = staticMetadata; emit StaticMetadataSet(staticMetadata); } function _setVariableMetadata(bytes memory variableMetadata) internal { _variableMetadata = variableMetadata; emit VariableMetadataSet(variableMetadata); } // view functions function getMetadata() public view returns (bytes memory staticMetadata, bytes memory variableMetadata) { staticMetadata = _staticMetadata; variableMetadata = _variableMetadata; } } contract Operated { address private _operator; bool private _status; event OperatorUpdated(address operator, bool status); // state functions function _setOperator(address operator) internal { require(_operator != operator, "cannot set same operator"); _operator = operator; emit OperatorUpdated(operator, hasActiveOperator()); } function _transferOperator(address operator) internal { // transferring operator-ship implies there was an operator set before this require(_operator != address(0), "operator not set"); _setOperator(operator); } function _renounceOperator() internal { require(hasActiveOperator(), "only when operator active"); _operator = address(0); _status = false; emit OperatorUpdated(address(0), false); } function _activateOperator() internal { require(!hasActiveOperator(), "only when operator not active"); _status = true; emit OperatorUpdated(_operator, true); } function _deactivateOperator() internal { require(hasActiveOperator(), "only when operator active"); _status = false; emit OperatorUpdated(_operator, false); } // view functions function getOperator() public view returns (address operator) { operator = _operator; } function isOperator(address caller) public view returns (bool ok) { return (caller == getOperator()); } function hasActiveOperator() public view returns (bool ok) { return _status; } function isActiveOperator(address caller) public view returns (bool ok) { return (isOperator(caller) && hasActiveOperator()); } } /* TODO: Update eip165 interface * bytes4(keccak256('create(bytes)')) == 0xcf5ba53f * bytes4(keccak256('getInstanceType()')) == 0x18c2f4cf * bytes4(keccak256('getInstanceRegistry()')) == 0xa5e13904 * bytes4(keccak256('getImplementation()')) == 0xaaf10f42 * * => 0xcf5ba53f ^ 0x18c2f4cf ^ 0xa5e13904 ^ 0xaaf10f42 == 0xd88967b6 */ interface iFactory { event InstanceCreated(address indexed instance, address indexed creator, string initABI, bytes initData); function create(bytes calldata initData) external returns (address instance); function getInitdataABI() external view returns (string memory initABI); function getInstanceRegistry() external view returns (address instanceRegistry); function getTemplate() external view returns (address template); function getInstanceCreator(address instance) external view returns (address creator); function getInstanceType() external view returns (bytes4 instanceType); function getInstanceCount() external view returns (uint256 count); function getInstance(uint256 index) external view returns (address instance); function getInstances() external view returns (address[] memory instances); function getPaginatedInstances(uint256 startIndex, uint256 endIndex) external view returns (address[] memory instances); } /** * @title MultiHashWrapper * @dev Contract that handles multi hash data structures and encoding/decoding * Learn more here: https://github.com/multiformats/multihash */ contract MultiHashWrapper { // bytes32 hash first to fill the first storage slot struct MultiHash { bytes32 hash; uint8 hashFunction; uint8 digestSize; } /** * @dev Given a multihash struct, returns the full base58-encoded hash * @param multihash MultiHash struct that has the hashFunction, digestSize and the hash * @return the base58-encoded full hash */ function _combineMultiHash(MultiHash memory multihash) internal pure returns (bytes memory) { bytes memory out = new bytes(34); out[0] = byte(multihash.hashFunction); out[1] = byte(multihash.digestSize); uint8 i; for (i = 0; i < 32; i++) { out[i+2] = multihash.hash[i]; } return out; } /** * @dev Given a base58-encoded hash, divides into its individual parts and returns a struct * @param source base58-encoded hash * @return MultiHash that has the hashFunction, digestSize and the hash */ function _splitMultiHash(bytes memory source) internal pure returns (MultiHash memory) { require(source.length == 34, "length of source must be 34"); uint8 hashFunction = uint8(source[0]); uint8 digestSize = uint8(source[1]); bytes32 hash; assembly { hash := mload(add(source, 34)) } return (MultiHash({ hashFunction: hashFunction, digestSize: digestSize, hash: hash })); } } contract Factory is Spawner { address[] private _instances; mapping (address => address) private _instanceCreator; /* NOTE: The following items can be hardcoded as constant to save ~200 gas/create */ address private _templateContract; string private _initdataABI; address private _instanceRegistry; bytes4 private _instanceType; event InstanceCreated(address indexed instance, address indexed creator, bytes callData); function _initialize(address instanceRegistry, address templateContract, bytes4 instanceType, string memory initdataABI) internal { // set instance registry _instanceRegistry = instanceRegistry; // set logic contract _templateContract = templateContract; // set initdataABI _initdataABI = initdataABI; // validate correct instance registry require(instanceType == iRegistry(instanceRegistry).getInstanceType(), 'incorrect instance type'); // set instanceType _instanceType = instanceType; } // IFactory methods function _create(bytes memory callData) internal returns (address instance) { // deploy new contract: initialize it & write minimal proxy to runtime. instance = Spawner._spawn(getTemplate(), callData); // add the instance to the array _instances.push(instance); // set instance creator _instanceCreator[instance] = msg.sender; // add the instance to the instance registry iRegistry(getInstanceRegistry()).register(instance, msg.sender, uint64(0)); // emit event emit InstanceCreated(instance, msg.sender, callData); } function getInstanceCreator(address instance) public view returns (address creator) { creator = _instanceCreator[instance]; } function getInstanceType() public view returns (bytes4 instanceType) { instanceType = _instanceType; } function getInitdataABI() public view returns (string memory initdataABI) { initdataABI = _initdataABI; } function getInstanceRegistry() public view returns (address instanceRegistry) { instanceRegistry = _instanceRegistry; } function getTemplate() public view returns (address template) { template = _templateContract; } function getInstanceCount() public view returns (uint256 count) { count = _instances.length; } function getInstance(uint256 index) public view returns (address instance) { require(index < _instances.length, "index out of range"); instance = _instances[index]; } function getInstances() public view returns (address[] memory instances) { instances = _instances; } // Note: startIndex is inclusive, endIndex exclusive function getPaginatedInstances(uint256 startIndex, uint256 endIndex) public view returns (address[] memory instances) { require(startIndex < endIndex, "startIndex must be less than endIndex"); require(endIndex <= _instances.length, "end index out of range"); // initialize fixed size memory array address[] memory range = new address[](endIndex - startIndex); // Populate array with addresses in range for (uint256 i = startIndex; i < endIndex; i++) { range[i - startIndex] = _instances[i]; } // return array of addresses instances = range; } } contract Template { address private _factory; // modifiers modifier initializeTemplate() { // set factory _factory = msg.sender; // only allow function to be delegatecalled from within a constructor. uint32 codeSize; assembly { codeSize := extcodesize(address) } require(codeSize == 0, "must be called within contract constructor"); _; } // view functions function getCreator() public view returns (address creator) { // iFactory(...) would revert if _factory address is not actually a factory contract creator = iFactory(_factory).getInstanceCreator(address(this)); } function isCreator(address caller) public view returns (bool ok) { ok = (caller == getCreator()); } } contract ProofHash is MultiHashWrapper { MultiHash private _proofHash; event ProofHashSet(address caller, bytes proofHash); // state functions function _setProofHash(bytes memory proofHash) internal { _proofHash = MultiHashWrapper._splitMultiHash(proofHash); emit ProofHashSet(msg.sender, proofHash); } // view functions function getProofHash() public view returns (bytes memory proofHash) { proofHash = MultiHashWrapper._combineMultiHash(_proofHash); } } contract Post is ProofHash, Operated, Metadata, Template { event Created(address operator, bytes proofHash, bytes staticMetadata, bytes variableMetadata); function initialize( address operator, bytes memory proofHash, bytes memory staticMetadata, bytes memory variableMetadata ) public initializeTemplate() { // set storage variables ProofHash._setProofHash(proofHash); // set operator if (operator != address(0)) { Operated._setOperator(operator); Operated._activateOperator(); } // set static metadata Metadata._setStaticMetadata(staticMetadata); // set variable metadata Metadata._setVariableMetadata(variableMetadata); // emit event emit Created(operator, proofHash, staticMetadata, variableMetadata); } // state functions function setVariableMetadata(bytes memory variableMetadata) public { // only active operator or creator require(Template.isCreator(msg.sender) || Operated.isActiveOperator(msg.sender), "only active operator or creator"); // set metadata in storage Metadata._setVariableMetadata(variableMetadata); } } contract Post_Factory is Factory { constructor(address instanceRegistry) public { // deploy template contract address templateContract = address(new Post()); // set instance type bytes4 instanceType = bytes4(keccak256(bytes('Post'))); // set initdataABI string memory initdataABI = '(address,bytes,bytes,bytes)'; // initialize factory params Factory._initialize(instanceRegistry, templateContract, instanceType, initdataABI); } event ExplicitInitData(address operator, bytes proofHash, bytes staticMetadata, bytes variableMetadata); function create(bytes memory callData) public returns (address instance) { // deploy instance instance = Factory._create(callData); } function createEncoded(bytes memory initdata) public returns (address instance) { // decode initdata ( address operator, bytes memory proofHash, bytes memory staticMetadata, bytes memory variableMetadata ) = abi.decode(initdata, (address,bytes,bytes,bytes)); // call explicit create instance = createExplicit(operator, proofHash, staticMetadata, variableMetadata); } function createExplicit( address operator, bytes memory proofHash, bytes memory staticMetadata, bytes memory variableMetadata ) public returns (address instance) { // declare template in memory Post template; // construct the data payload used when initializing the new contract. bytes memory callData = abi.encodeWithSelector( template.initialize.selector, // selector operator, proofHash, staticMetadata, variableMetadata ); // deploy instance instance = Factory._create(callData); // emit event emit ExplicitInitData(operator, proofHash, staticMetadata, variableMetadata); } } contract Feed is Operated, Metadata, Template { address[] private _posts; address private _postRegistry; event PostCreated(address post, address postFactory, bytes initData); function initialize( address operator, address postRegistry, bytes memory feedStaticMetadata ) public initializeTemplate() { // set operator if (operator != address(0)) { Operated._setOperator(operator); Operated._activateOperator(); } // set post registry _postRegistry = postRegistry; // set static metadata Metadata._setStaticMetadata(feedStaticMetadata); } // state functions function createPost(address postFactory, bytes memory initData) public returns (address post) { // only active operator or creator require(Template.isCreator(msg.sender) || Operated.isActiveOperator(msg.sender), "only active operator or creator"); // validate factory is registered require( iRegistry(_postRegistry).getFactoryStatus(postFactory) == iRegistry.FactoryStatus.Registered, "factory is not actively registered" ); // spawn new post contract post = Post_Factory(postFactory).createEncoded(initData); // add to array of posts _posts.push(post); // emit event emit PostCreated(post, postFactory, initData); } function setFeedVariableMetadata(bytes memory feedVariableMetadata) public { // only active operator or creator require(Template.isCreator(msg.sender) || Operated.isActiveOperator(msg.sender), "only active operator or creator"); Metadata._setVariableMetadata(feedVariableMetadata); } function setPostVariableMetadata(address post, bytes memory postVariableMetadata) public { // only active operator or creator require(Template.isCreator(msg.sender) || Operated.isActiveOperator(msg.sender), "only active operator or creator"); Post(post).setVariableMetadata(postVariableMetadata); } // view functions function getPosts() public view returns (address[] memory posts) { posts = _posts; } function getPostRegistry() public view returns (address postRegistry) { postRegistry = _postRegistry; } } contract Feed_Factory is Factory { constructor(address instanceRegistry) public { // deploy template contract address templateContract = address(new Feed()); // set instance type bytes4 instanceType = bytes4(keccak256(bytes('Post'))); // set initdataABI string memory initdataABI = '(address,address,bytes)'; // initialize factory params Factory._initialize(instanceRegistry, templateContract, instanceType, initdataABI); } event ExplicitInitData(address operator, address postRegistry, bytes feedStaticMetadata); function create(bytes memory callData) public returns (address instance) { // deploy instance instance = Factory._create(callData); } function createEncoded(bytes memory initdata) public returns (address instance) { // decode initdata ( address operator, address postRegistry, bytes memory feedStaticMetadata ) = abi.decode(initdata, (address,address,bytes)); // call explicit create instance = createExplicit(operator, postRegistry, feedStaticMetadata); } function createExplicit( address operator, address postRegistry, bytes memory feedStaticMetadata ) public returns (address instance) { // declare template in memory Feed template; // construct the data payload used when initializing the new contract. bytes memory callData = abi.encodeWithSelector( template.initialize.selector, // selector operator, postRegistry, feedStaticMetadata ); // deploy instance instance = Factory._create(callData); // emit event emit ExplicitInitData(operator, postRegistry, feedStaticMetadata); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"getInstanceType","outputs":[{"name":"instanceType","type":"bytes4"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTemplate","outputs":[{"name":"template","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"instance","type":"address"}],"name":"getInstanceCreator","outputs":[{"name":"creator","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"initdata","type":"bytes"}],"name":"createEncoded","outputs":[{"name":"instance","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"operator","type":"address"},{"name":"postRegistry","type":"address"},{"name":"feedStaticMetadata","type":"bytes"}],"name":"createExplicit","outputs":[{"name":"instance","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getInstanceRegistry","outputs":[{"name":"instanceRegistry","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getInitdataABI","outputs":[{"name":"initdataABI","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getInstanceCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"startIndex","type":"uint256"},{"name":"endIndex","type":"uint256"}],"name":"getPaginatedInstances","outputs":[{"name":"instances","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"callData","type":"bytes"}],"name":"create","outputs":[{"name":"instance","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getInstances","outputs":[{"name":"instances","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"index","type":"uint256"}],"name":"getInstance","outputs":[{"name":"instance","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"instanceRegistry","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"operator","type":"address"},{"indexed":false,"name":"postRegistry","type":"address"},{"indexed":false,"name":"feedStaticMetadata","type":"bytes"}],"name":"ExplicitInitData","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"instance","type":"address"},{"indexed":true,"name":"creator","type":"address"},{"indexed":false,"name":"callData","type":"bytes"}],"name":"InstanceCreated","type":"event"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051602080620036d5833981018060405260208110156200003357600080fd5b81019080805190602001909291905050506000604051620000549062000308565b604051809103906000f08015801562000071573d6000803e3d6000fd5b50905060006040518060400160405280600481526020017f506f73740000000000000000000000000000000000000000000000000000000081525080519060200120905060606040518060400160405280601781526020017f28616464726573732c616464726573732c627974657329000000000000000000815250905062000108848484846200011260201b620015091760201c565b50505050620003c5565b83600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060039080519060200190620001ac92919062000316565b508373ffffffffffffffffffffffffffffffffffffffff166318c2f4cf6040518163ffffffff1660e01b815260040160206040518083038186803b158015620001f457600080fd5b505afa15801562000209573d6000803e3d6000fd5b505050506040513d60208110156200022057600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614620002e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f696e636f727265637420696e7374616e6365207479706500000000000000000081525060200191505060405180910390fd5b81600460146101000a81548163ffffffff021916908360e01c021790555050505050565b6118e48062001df183390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200035957805160ff19168380011785556200038a565b828001600101855582156200038a579182015b82811115620003895782518255916020019190600101906200036c565b5b5090506200039991906200039d565b5090565b620003c291905b80821115620003be576000816000905550600101620003a4565b5090565b90565b611a1c80620003d56000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063a61352e111610071578063a61352e114610463578063ae34325c146104e6578063b71f2e7214610504578063cf5ba53f14610591578063d35fdd791461068c578063ebd348de146106eb576100b4565b806318c2f4cf146100b9578063321c48f2146101155780636bf719821461015f5780636f8d11e6146101e357806382804816146102de578063a5e1390414610419575b600080fd5b6100c1610759565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b61011d610770565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101a16004803603602081101561017557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061079a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61029c600480360360208110156101f957600080fd5b810190808035906020019064010000000081111561021657600080fd5b82018360208201111561022857600080fd5b8035906020019184600183028401116401000000008311171561024a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610803565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103d7600480360360608110156102f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561035157600080fd5b82018360208201111561036357600080fd5b8035906020019184600183028401116401000000008311171561038557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506108a1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610421610b1c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61046b610b46565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104ee610be8565b6040518082815260200191505060405180910390f35b61053a6004803603604081101561051a57600080fd5b810190808035906020019092919080359060200190929190505050610bf4565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561057d578082015181840152602081019050610562565b505050509050019250505060405180910390f35b61064a600480360360208110156105a757600080fd5b81019080803590602001906401000000008111156105c457600080fd5b8201836020820111156105d657600080fd5b803590602001918460018302840111640100000000831117156105f857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610da5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610694610db7565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106d75780820151818401526020810190506106bc565b505050509050019250505060405180910390f35b6107176004803603602081101561070157600080fd5b8101908080359060200190929190505050610e45565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600460149054906101000a900460e01b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000806000606084806020019051606081101561081f57600080fd5b810190808051906020019092919080519060200190929190805164010000000081111561084b57600080fd5b8281019050602081018481111561086157600080fd5b815185600182028301116401000000008211171561087e57600080fd5b50509291905050509250925092506108978383836108a1565b9350505050919050565b60008060608173ffffffffffffffffffffffffffffffffffffffff1663cf7a1d77905060e01b868686604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610971578082015181840152602081019050610956565b50505050905090810190601f16801561099e5780820380516001836020036101000a031916815260200191505b50945050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050610a0d81610eff565b92507f159a9c35b291eea9d980b68e73d441cf24710856bf07f73814c8e1e49f5c8768868686604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610ad7578082015181840152602081019050610abc565b50505050905090810190601f168015610b045780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a150509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bde5780601f10610bb357610100808354040283529160200191610bde565b820191906000526020600020905b815481529060010190602001808311610bc157829003601f168201915b5050505050905090565b60008080549050905090565b6060818310610c4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806119cc6025913960400191505060405180910390fd5b600080549050821115610cc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f656e6420696e646578206f7574206f662072616e67650000000000000000000081525060200191505060405180910390fd5b6060838303604051908082528060200260200182016040528015610cfc5781602001602082028038833980820191505090505b50905060008490505b83811015610d9a5760008181548110610d1a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168286830381518110610d5357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050610d05565b508091505092915050565b6000610db082610eff565b9050919050565b60606000805480602002602001604051908101604052809291908181526020018280548015610e3b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610df1575b5050505050905090565b600080805490508210610ec0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e646578206f7574206f662072616e6765000000000000000000000000000081525060200191505060405180910390fd5b60008281548110610ecd57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610f12610f0c610770565b836111b8565b905060008190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611000610b1c565b73ffffffffffffffffffffffffffffffffffffffff1663bba83f64823360006040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1669ffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fab60131c1462939275d0fd3738e07ab853e22af6296cf75e71bbdf3a497791a2846040518080602001828103825283818151815260200191508051906020019080838360005b8381101561117957808201518184015260208101905061115e565b50505050905090810190601f1680156111a65780820380516001836020036101000a031916815260200191505b509250505060405180910390a3919050565b60006060604051806020016111cc906114fc565b6020820181038252601f19601f820116604052508484604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561125757808201518184015260208101905061123c565b50505050905090810190601f1680156112845780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040526040516020018083805190602001908083835b602083106112cf57805182526020820191506020810190506020830392506112ac565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831061132057805182526020820191506020810190506020830392506112fd565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905061136081611369565b91505092915050565b6000806113758361139c565b50905082602001835182818334f5935083611394573d6000803e3d6000fd5b505050919050565b600080600083805190602001209050600080905060005b6001156114f4573382604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018281526020019250505060405160208183030381529060405280519060200120945060ff60f81b30868560405160200180857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018381526020018281526020019450505050506040516020818303038152906040528051906020012060001c9350833b905060008114156114e7576114f4565b81806001019250506113b3565b505050915091565b61022d8061179f83390190565b83600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600390805190602001906115a19291906116f9565b508373ffffffffffffffffffffffffffffffffffffffff166318c2f4cf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115e857600080fd5b505afa1580156115fc573d6000803e3d6000fd5b505050506040513d602081101561161257600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f696e636f727265637420696e7374616e6365207479706500000000000000000081525060200191505060405180910390fd5b81600460146101000a81548163ffffffff021916908360e01c021790555050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061173a57805160ff1916838001178555611768565b82800160010185558215611768579182015b8281111561176757825182559160200191906001019061174c565b5b5090506117759190611779565b5090565b61179b91905b8082111561179757600081600090555060010161177f565b5090565b9056fe608060405260405161022d38038061022d8339810180604052604081101561002657600080fd5b8101908080519060200190929190805164010000000081111561004857600080fd5b8281019050602081018481111561005e57600080fd5b815185600182028301116401000000008211171561007b57600080fd5b505092919050505060008273ffffffffffffffffffffffffffffffffffffffff16826040518082805190602001908083835b602083106100d057805182526020820191506020810190506020830392506100ad565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610130576040519150601f19603f3d011682016040523d82523d6000602084013e610135565b606091505b5050905080610148573d6000803e3d6000fd5b606069363d3d373d3d3d363d7360b01b846e5af43d82803e903d91602b57fd5bf360881b604051602001808475ffffffffffffffffffffffffffffffffffffffffffff191675ffffffffffffffffffffffffffffffffffffffffffff19168152600a018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018270ffffffffffffffffffffffffffffffffff191670ffffffffffffffffffffffffffffffffff19168152600f0193505050506040516020818303038152906040529050602d81602001f3fe7374617274496e646578206d757374206265206c657373207468616e20656e64496e646578a165627a7a7230582096427aef8f91cb389d251bcd8a402dce378340f8b90666121707429484af05f00029608060405234801561001057600080fd5b506118c4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ce5760003560e01c80638077f0ae1161008c578063e424f5e611610066578063e424f5e6146105d6578063e7f43c6814610620578063ed02dcea1461066a578063efd4606514610785576100ce565b80638077f0ae146103fe578063923b1762146104b9578063cf7a1d77146104db576100ce565b806212a907146100d35780630ee2cb10146101ae5780633367cca5146101f857806341f3004a146102545780636d70f7ae146102b35780637a5b4f591461030f575b600080fd5b6101ac600480360360408110156100e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561012657600080fd5b82018360208201111561013857600080fd5b8035906020019184600183028401116401000000008311171561015a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506107e1565b005b6101b6610940565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61023a6004803603602081101561020e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a21565b604051808215151515815260200191505060405180910390f35b61025c610a43565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561029f578082015181840152602081019050610284565b505050509050019250505060405180910390f35b6102f5600480360360208110156102c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ad1565b604051808215151515815260200191505060405180910390f35b610317610b10565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561035b578082015181840152602081019050610340565b50505050905090810190601f1680156103885780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156103c15780820151818401526020810190506103a6565b50505050905090810190601f1680156103ee5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6104b76004803603602081101561041457600080fd5b810190808035906020019064010000000081111561043157600080fd5b82018360208201111561044357600080fd5b8035906020019184600183028401116401000000008311171561046557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610c51565b005b6104c1610ce8565b604051808215151515815260200191505060405180910390f35b6105d4600480360360608110156104f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561054e57600080fd5b82018360208201111561056057600080fd5b8035906020019184600183028401116401000000008311171561058257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610cfe565b005b6105de610e3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610628610e64565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107436004803603604081101561068057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156106bd57600080fd5b8201836020820111156106cf57600080fd5b803590602001918460018302840111640100000000831117156106f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610e8d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107c76004803603602081101561079b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112c7565b604051808215151515815260200191505060405180910390f35b6107ea336112c7565b806107fa57506107f933610a21565b5b61086c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6f6e6c7920616374697665206f70657261746f72206f722063726561746f720081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166327305e83826040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108d85780820151818401526020810190506108bd565b50505050905090810190601f1680156109055780820380516001836020036101000a031916815260200191505b5092505050600060405180830381600087803b15801561092457600080fd5b505af1158015610938573d6000803e3d6000fd5b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636bf71982306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156109e157600080fd5b505afa1580156109f5573d6000803e3d6000fd5b505050506040513d6020811015610a0b57600080fd5b8101908080519060200190929190505050905090565b6000610a2c82610ad1565b8015610a3c5750610a3b610ce8565b5b9050919050565b60606004805480602002602001604051908101604052809291908181526020018280548015610ac757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610a7d575b5050505050905090565b6000610adb610e64565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60608060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ba95780601f10610b7e57610100808354040283529160200191610ba9565b820191906000526020600020905b815481529060010190602001808311610b8c57829003601f168201915b5050505050915060028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c465780601f10610c1b57610100808354040283529160200191610c46565b820191906000526020600020905b815481529060010190602001808311610c2957829003601f168201915b505050505090509091565b610c5a336112c7565b80610c6a5750610c6933610a21565b5b610cdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6f6e6c7920616374697665206f70657261746f72206f722063726561746f720081525060200191505060405180910390fd5b610ce581611306565b50565b60008060149054906101000a900460ff16905090565b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000303b905060008163ffffffff1614610da4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061186f602a913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610dea57610de1846113bc565b610de9611538565b5b82600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e3482611661565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610e98336112c7565b80610ea85750610ea733610a21565b5b610f1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6f6e6c7920616374697665206f70657261746f72206f722063726561746f720081525060200191505060405180910390fd5b60016002811115610f2757fe5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f795ab75856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610fc657600080fd5b505afa158015610fda573d6000803e3d6000fd5b505050506040513d6020811015610ff057600080fd5b8101908080519060200190929190505050600281111561100c57fe5b14611062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061184d6022913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16636f8d11e6836040518263ffffffff1660e01b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110ce5780820151818401526020810190506110b3565b50505050905090810190601f1680156110fb5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561111a57600080fd5b505af115801561112e573d6000803e3d6000fd5b505050506040513d602081101561114457600080fd5b8101908080519060200190929190505050905060048190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550507f6e586eddfc77482083ba3396cb6e340089605d21249a6bc9725e6d751cd4796a818484604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561128557808201518184015260208101905061126a565b50505050905090810190601f1680156112b25780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a192915050565b60006112d1610940565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b806002908051906020019061131c929190611786565b507fec391f097a91107044327f7588bc67ac8b9daf871413fc181f768c437c66cda9816040518080602001828103825283818151815260200191508051906020019080838360005b8381101561137f578082015181840152602081019050611364565b50505050905090810190601f1680156113ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561147f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f63616e6e6f74207365742073616d65206f70657261746f72000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d816114e9610ce8565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a150565b611540610ce8565b156115b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f6f6e6c79207768656e206f70657261746f72206e6f742061637469766500000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083151502179055507f966c160e1c4dbc7df8d69af4ace01e9297c3cf016397b7914971f2fbfa32672d6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1565b60006001805460018160011615610100020316600290049050146116d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061182c6021913960400191505060405180910390fd5b80600190805190602001906116e6929190611786565b507fd2bb68a4c0cbd7fabc3f8e787a6e54384db17d54dedeede61c35819f5f49edca816040518080602001828103825283818151815260200191508051906020019080838360005b8381101561174957808201518184015260208101905061172e565b50505050905090810190601f1680156117765780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106117c757805160ff19168380011785556117f5565b828001600101855582156117f5579182015b828111156117f45782518255916020019190600101906117d9565b5b5090506118029190611806565b5090565b61182891905b8082111561182457600081600090555060010161180c565b5090565b9056fe737461746963206d657461646174612063616e6e6f74206265206368616e676564666163746f7279206973206e6f74206163746976656c7920726567697374657265646d7573742062652063616c6c65642077697468696e20636f6e747261637420636f6e7374727563746f72a165627a7a723058206b8c4bb2a71aa47fe021706bb95e15d639f77f92425e35135a38cf7f6151ea9f0029000000000000000000000000348fa9dcff507b81c7a1d7981244ea92e8c6af29
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063a61352e111610071578063a61352e114610463578063ae34325c146104e6578063b71f2e7214610504578063cf5ba53f14610591578063d35fdd791461068c578063ebd348de146106eb576100b4565b806318c2f4cf146100b9578063321c48f2146101155780636bf719821461015f5780636f8d11e6146101e357806382804816146102de578063a5e1390414610419575b600080fd5b6100c1610759565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b61011d610770565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101a16004803603602081101561017557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061079a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61029c600480360360208110156101f957600080fd5b810190808035906020019064010000000081111561021657600080fd5b82018360208201111561022857600080fd5b8035906020019184600183028401116401000000008311171561024a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610803565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103d7600480360360608110156102f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561035157600080fd5b82018360208201111561036357600080fd5b8035906020019184600183028401116401000000008311171561038557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506108a1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610421610b1c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61046b610b46565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104ee610be8565b6040518082815260200191505060405180910390f35b61053a6004803603604081101561051a57600080fd5b810190808035906020019092919080359060200190929190505050610bf4565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561057d578082015181840152602081019050610562565b505050509050019250505060405180910390f35b61064a600480360360208110156105a757600080fd5b81019080803590602001906401000000008111156105c457600080fd5b8201836020820111156105d657600080fd5b803590602001918460018302840111640100000000831117156105f857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610da5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610694610db7565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106d75780820151818401526020810190506106bc565b505050509050019250505060405180910390f35b6107176004803603602081101561070157600080fd5b8101908080359060200190929190505050610e45565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600460149054906101000a900460e01b905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000806000606084806020019051606081101561081f57600080fd5b810190808051906020019092919080519060200190929190805164010000000081111561084b57600080fd5b8281019050602081018481111561086157600080fd5b815185600182028301116401000000008211171561087e57600080fd5b50509291905050509250925092506108978383836108a1565b9350505050919050565b60008060608173ffffffffffffffffffffffffffffffffffffffff1663cf7a1d77905060e01b868686604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610971578082015181840152602081019050610956565b50505050905090810190601f16801561099e5780820380516001836020036101000a031916815260200191505b50945050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050610a0d81610eff565b92507f159a9c35b291eea9d980b68e73d441cf24710856bf07f73814c8e1e49f5c8768868686604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610ad7578082015181840152602081019050610abc565b50505050905090810190601f168015610b045780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a150509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bde5780601f10610bb357610100808354040283529160200191610bde565b820191906000526020600020905b815481529060010190602001808311610bc157829003601f168201915b5050505050905090565b60008080549050905090565b6060818310610c4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806119cc6025913960400191505060405180910390fd5b600080549050821115610cc9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f656e6420696e646578206f7574206f662072616e67650000000000000000000081525060200191505060405180910390fd5b6060838303604051908082528060200260200182016040528015610cfc5781602001602082028038833980820191505090505b50905060008490505b83811015610d9a5760008181548110610d1a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168286830381518110610d5357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050610d05565b508091505092915050565b6000610db082610eff565b9050919050565b60606000805480602002602001604051908101604052809291908181526020018280548015610e3b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610df1575b5050505050905090565b600080805490508210610ec0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f696e646578206f7574206f662072616e6765000000000000000000000000000081525060200191505060405180910390fd5b60008281548110610ecd57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610f12610f0c610770565b836111b8565b905060008190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611000610b1c565b73ffffffffffffffffffffffffffffffffffffffff1663bba83f64823360006040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1669ffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156110d157600080fd5b505af11580156110e5573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fab60131c1462939275d0fd3738e07ab853e22af6296cf75e71bbdf3a497791a2846040518080602001828103825283818151815260200191508051906020019080838360005b8381101561117957808201518184015260208101905061115e565b50505050905090810190601f1680156111a65780820380516001836020036101000a031916815260200191505b509250505060405180910390a3919050565b60006060604051806020016111cc906114fc565b6020820181038252601f19601f820116604052508484604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561125757808201518184015260208101905061123c565b50505050905090810190601f1680156112845780820380516001836020036101000a031916815260200191505b5093505050506040516020818303038152906040526040516020018083805190602001908083835b602083106112cf57805182526020820191506020810190506020830392506112ac565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831061132057805182526020820191506020810190506020830392506112fd565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905061136081611369565b91505092915050565b6000806113758361139c565b50905082602001835182818334f5935083611394573d6000803e3d6000fd5b505050919050565b600080600083805190602001209050600080905060005b6001156114f4573382604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018281526020019250505060405160208183030381529060405280519060200120945060ff60f81b30868560405160200180857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018381526020018281526020019450505050506040516020818303038152906040528051906020012060001c9350833b905060008114156114e7576114f4565b81806001019250506113b3565b505050915091565b61022d8061179f83390190565b83600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600390805190602001906115a19291906116f9565b508373ffffffffffffffffffffffffffffffffffffffff166318c2f4cf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115e857600080fd5b505afa1580156115fc573d6000803e3d6000fd5b505050506040513d602081101561161257600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f696e636f727265637420696e7374616e6365207479706500000000000000000081525060200191505060405180910390fd5b81600460146101000a81548163ffffffff021916908360e01c021790555050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061173a57805160ff1916838001178555611768565b82800160010185558215611768579182015b8281111561176757825182559160200191906001019061174c565b5b5090506117759190611779565b5090565b61179b91905b8082111561179757600081600090555060010161177f565b5090565b9056fe608060405260405161022d38038061022d8339810180604052604081101561002657600080fd5b8101908080519060200190929190805164010000000081111561004857600080fd5b8281019050602081018481111561005e57600080fd5b815185600182028301116401000000008211171561007b57600080fd5b505092919050505060008273ffffffffffffffffffffffffffffffffffffffff16826040518082805190602001908083835b602083106100d057805182526020820191506020810190506020830392506100ad565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610130576040519150601f19603f3d011682016040523d82523d6000602084013e610135565b606091505b5050905080610148573d6000803e3d6000fd5b606069363d3d373d3d3d363d7360b01b846e5af43d82803e903d91602b57fd5bf360881b604051602001808475ffffffffffffffffffffffffffffffffffffffffffff191675ffffffffffffffffffffffffffffffffffffffffffff19168152600a018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018270ffffffffffffffffffffffffffffffffff191670ffffffffffffffffffffffffffffffffff19168152600f0193505050506040516020818303038152906040529050602d81602001f3fe7374617274496e646578206d757374206265206c657373207468616e20656e64496e646578a165627a7a7230582096427aef8f91cb389d251bcd8a402dce378340f8b90666121707429484af05f00029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000348fa9dcff507b81c7a1d7981244ea92e8c6af29
-----Decoded View---------------
Arg [0] : instanceRegistry (address): 0x348FA9DcFf507B81C7A1d7981244eA92E8c6Af29
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000348fa9dcff507b81c7a1d7981244ea92e8c6af29
Swarm Source
bzzr://6b8c4bb2a71aa47fe021706bb95e15d639f77f92425e35135a38cf7f6151ea9f
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.