Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 28 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Proxy O... | 6747987 | 2131 days ago | IN | 0 ETH | 0.0006176 | ||||
Transfer Ownersh... | 6747426 | 2131 days ago | IN | 0 ETH | 0.00069626 | ||||
Upgrade To | 6747418 | 2131 days ago | IN | 0 ETH | 0.00090688 | ||||
Version | 6747383 | 2131 days ago | IN | 0 ETH | 0.00009205 | ||||
Version | 6747377 | 2131 days ago | IN | 0 ETH | 0.00046028 | ||||
Transfer Ownersh... | 6747153 | 2131 days ago | IN | 0 ETH | 0.00049448 | ||||
Transfer Ownersh... | 6747142 | 2131 days ago | IN | 0 ETH | 0.0004536 | ||||
Verify Module | 6674287 | 2143 days ago | IN | 0 ETH | 0.00125047 | ||||
Register Module | 6674284 | 2143 days ago | IN | 0 ETH | 0.00280287 | ||||
Verify Module | 6674258 | 2143 days ago | IN | 0 ETH | 0.00125047 | ||||
Register Module | 6674254 | 2143 days ago | IN | 0 ETH | 0.00279285 | ||||
Verify Module | 6674246 | 2143 days ago | IN | 0 ETH | 0.00125047 | ||||
Verify Module | 6674233 | 2143 days ago | IN | 0 ETH | 0.00125047 | ||||
Verify Module | 6674227 | 2143 days ago | IN | 0 ETH | 0.00125047 | ||||
Verify Module | 6674222 | 2143 days ago | IN | 0 ETH | 0.00124887 | ||||
Verify Module | 6674219 | 2143 days ago | IN | 0 ETH | 0.00125047 | ||||
Verify Module | 6674213 | 2143 days ago | IN | 0 ETH | 0.00125047 | ||||
Verify Module | 6674209 | 2143 days ago | IN | 0 ETH | 0.00125047 | ||||
Register Module | 6674206 | 2143 days ago | IN | 0 ETH | 0.00279815 | ||||
Register Module | 6674198 | 2143 days ago | IN | 0 ETH | 0.00281472 | ||||
Register Module | 6674197 | 2143 days ago | IN | 0 ETH | 0.00278812 | ||||
Register Module | 6674193 | 2143 days ago | IN | 0 ETH | 0.00278652 | ||||
Register Module | 6674189 | 2143 days ago | IN | 0 ETH | 0.00280645 | ||||
Register Module | 6674187 | 2143 days ago | IN | 0 ETH | 0.00280287 | ||||
Register Module | 6674180 | 2143 days ago | IN | 0 ETH | 0.00279285 |
View more zero value Internal Transactions in Advanced View mode
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:
ModuleRegistryProxy
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-11-12 */ pragma solidity ^0.4.24; contract EternalStorage { /// @notice Internal mappings used to store all kinds on data into the contract mapping(bytes32 => uint256) internal uintStorage; mapping(bytes32 => string) internal stringStorage; mapping(bytes32 => address) internal addressStorage; mapping(bytes32 => bytes) internal bytesStorage; mapping(bytes32 => bool) internal boolStorage; mapping(bytes32 => int256) internal intStorage; mapping(bytes32 => bytes32) internal bytes32Storage; /// @notice Internal mappings used to store arrays of different data types mapping(bytes32 => bytes32[]) internal bytes32ArrayStorage; mapping(bytes32 => uint256[]) internal uintArrayStorage; mapping(bytes32 => address[]) internal addressArrayStorage; mapping(bytes32 => string[]) internal stringArrayStorage; ////////////////// //// set functions ////////////////// /// @notice Set the key values using the Overloaded `set` functions /// Ex- string version = "0.0.1"; replace to /// set(keccak256(abi.encodePacked("version"), "0.0.1"); /// same for the other variables as well some more example listed below /// ex1 - address securityTokenAddress = 0x123; replace to /// set(keccak256(abi.encodePacked("securityTokenAddress"), 0x123); /// ex2 - bytes32 tokenDetails = "I am ST20"; replace to /// set(keccak256(abi.encodePacked("tokenDetails"), "I am ST20"); /// ex3 - mapping(string => address) ownedToken; /// set(keccak256(abi.encodePacked("ownedToken", "Chris")), 0x123); /// ex4 - mapping(string => uint) tokenIndex; /// tokenIndex["TOKEN"] = 1; replace to set(keccak256(abi.encodePacked("tokenIndex", "TOKEN"), 1); /// ex5 - mapping(string => SymbolDetails) registeredSymbols; where SymbolDetails is the structure having different type of values as /// {uint256 date, string name, address owner} etc. /// registeredSymbols["TOKEN"].name = "MyFristToken"; replace to set(keccak256(abi.encodePacked("registeredSymbols_name", "TOKEN"), "MyFirstToken"); /// More generalized- set(keccak256(abi.encodePacked("registeredSymbols_<struct variable>", "keyname"), "value"); function set(bytes32 _key, uint256 _value) internal { uintStorage[_key] = _value; } function set(bytes32 _key, address _value) internal { addressStorage[_key] = _value; } function set(bytes32 _key, bool _value) internal { boolStorage[_key] = _value; } function set(bytes32 _key, bytes32 _value) internal { bytes32Storage[_key] = _value; } function set(bytes32 _key, string _value) internal { stringStorage[_key] = _value; } //////////////////// /// get functions //////////////////// /// @notice Get function use to get the value of the singleton state variables /// Ex1- string public version = "0.0.1"; /// string _version = getString(keccak256(abi.encodePacked("version")); /// Ex2 - assert(temp1 == temp2); replace to /// assert(getUint(keccak256(abi.encodePacked(temp1)) == getUint(keccak256(abi.encodePacked(temp2)); /// Ex3 - mapping(string => SymbolDetails) registeredSymbols; where SymbolDetails is the structure having different type of values as /// {uint256 date, string name, address owner} etc. /// string _name = getString(keccak256(abi.encodePacked("registeredSymbols_name", "TOKEN")); function getBool(bytes32 _key) internal view returns (bool) { return boolStorage[_key]; } function getUint(bytes32 _key) internal view returns (uint256) { return uintStorage[_key]; } function getAddress(bytes32 _key) internal view returns (address) { return addressStorage[_key]; } function getString(bytes32 _key) internal view returns (string) { return stringStorage[_key]; } function getBytes32(bytes32 _key) internal view returns (bytes32) { return bytes32Storage[_key]; } //////////////////////////// // deleteArray functions //////////////////////////// /// @notice Function used to delete the array element. /// Ex1- mapping(address => bytes32[]) tokensOwnedByOwner; /// For deleting the item from array developers needs to create a funtion for that similarly /// in this case we have the helper function deleteArrayBytes32() which will do it for us /// deleteArrayBytes32(keccak256(abi.encodePacked("tokensOwnedByOwner", 0x1), 3); -- it will delete the index 3 //Deletes from mapping (bytes32 => array[]) at index _index function deleteArrayAddress(bytes32 _key, uint256 _index) internal { address[] storage array = addressArrayStorage[_key]; require(_index < array.length, "Index should less than length of the array"); array[_index] = array[array.length - 1]; array.length = array.length - 1; } //Deletes from mapping (bytes32 => bytes32[]) at index _index function deleteArrayBytes32(bytes32 _key, uint256 _index) internal { bytes32[] storage array = bytes32ArrayStorage[_key]; require(_index < array.length, "Index should less than length of the array"); array[_index] = array[array.length - 1]; array.length = array.length - 1; } //Deletes from mapping (bytes32 => uint[]) at index _index function deleteArrayUint(bytes32 _key, uint256 _index) internal { uint256[] storage array = uintArrayStorage[_key]; require(_index < array.length, "Index should less than length of the array"); array[_index] = array[array.length - 1]; array.length = array.length - 1; } //Deletes from mapping (bytes32 => string[]) at index _index function deleteArrayString(bytes32 _key, uint256 _index) internal { string[] storage array = stringArrayStorage[_key]; require(_index < array.length, "Index should less than length of the array"); array[_index] = array[array.length - 1]; array.length = array.length - 1; } //////////////////////////// //// pushArray functions /////////////////////////// /// @notice Below are the helper functions to facilitate storing arrays of different data types. /// Ex1- mapping(address => bytes32[]) tokensOwnedByTicker; /// tokensOwnedByTicker[owner] = tokensOwnedByTicker[owner].push("xyz"); replace with /// pushArray(keccak256(abi.encodePacked("tokensOwnedByTicker", owner), "xyz"); /// @notice use to store the values for the array /// @param _key bytes32 type /// @param _value [uint256, string, bytes32, address] any of the data type in array function pushArray(bytes32 _key, address _value) internal { addressArrayStorage[_key].push(_value); } function pushArray(bytes32 _key, bytes32 _value) internal { bytes32ArrayStorage[_key].push(_value); } function pushArray(bytes32 _key, string _value) internal { stringArrayStorage[_key].push(_value); } function pushArray(bytes32 _key, uint256 _value) internal { uintArrayStorage[_key].push(_value); } ///////////////////////// //// Set Array functions //////////////////////// /// @notice used to intialize the array /// Ex1- mapping (address => address[]) public reputation; /// reputation[0x1] = new address[](0); It can be replaced as /// setArray(hash('reputation', 0x1), new address[](0)); function setArray(bytes32 _key, address[] _value) internal { addressArrayStorage[_key] = _value; } function setArray(bytes32 _key, uint256[] _value) internal { uintArrayStorage[_key] = _value; } function setArray(bytes32 _key, bytes32[] _value) internal { bytes32ArrayStorage[_key] = _value; } function setArray(bytes32 _key, string[] _value) internal { stringArrayStorage[_key] = _value; } ///////////////////////// /// getArray functions ///////////////////////// /// @notice Get functions to get the array of the required data type /// Ex1- mapping(address => bytes32[]) tokensOwnedByOwner; /// getArrayBytes32(keccak256(abi.encodePacked("tokensOwnedByOwner", 0x1)); It return the bytes32 array /// Ex2- uint256 _len = tokensOwnedByOwner[0x1].length; replace with /// getArrayBytes32(keccak256(abi.encodePacked("tokensOwnedByOwner", 0x1)).length; function getArrayAddress(bytes32 _key) internal view returns(address[]) { return addressArrayStorage[_key]; } function getArrayBytes32(bytes32 _key) internal view returns(bytes32[]) { return bytes32ArrayStorage[_key]; } function getArrayString(bytes32 _key) internal view returns(string[]) { return stringArrayStorage[_key]; } function getArrayUint(bytes32 _key) internal view returns(uint[]) { return uintArrayStorage[_key]; } /////////////////////////////////// /// setArrayIndexValue() functions /////////////////////////////////// /// @notice set the value of particular index of the address array /// Ex1- mapping(bytes32 => address[]) moduleList; /// general way is -- moduleList[moduleType][index] = temp; /// It can be re-write as -- setArrayIndexValue(keccak256(abi.encodePacked('moduleList', moduleType)), index, temp); function setArrayIndexValue(bytes32 _key, uint256 _index, address _value) internal { addressArrayStorage[_key][_index] = _value; } function setArrayIndexValue(bytes32 _key, uint256 _index, uint256 _value) internal { uintArrayStorage[_key][_index] = _value; } function setArrayIndexValue(bytes32 _key, uint256 _index, bytes32 _value) internal { bytes32ArrayStorage[_key][_index] = _value; } function setArrayIndexValue(bytes32 _key, uint256 _index, string _value) internal { stringArrayStorage[_key][_index] = _value; } ///////////////////////////// /// Public getters functions ///////////////////////////// function getUintValues(bytes32 _variable) public view returns(uint256) { return uintStorage[_variable]; } function getBoolValues(bytes32 _variable) public view returns(bool) { return boolStorage[_variable]; } function getStringValues(bytes32 _variable) public view returns(string) { return stringStorage[_variable]; } function getAddressValues(bytes32 _variable) public view returns(address) { return addressStorage[_variable]; } function getBytes32Values(bytes32 _variable) public view returns(bytes32) { return bytes32Storage[_variable]; } function getBytesValues(bytes32 _variable) public view returns(bytes) { return bytesStorage[_variable]; } } /** * @title Proxy * @dev Gives the possibility to delegate any call to a foreign implementation. */ contract Proxy { /** * @dev Tells the address of the implementation where every call will be delegated. * @return address of the implementation to which it will be delegated */ function _implementation() internal view returns (address); /** * @dev Fallback function. * Implemented entirely in `_fallback`. */ function _fallback() internal { _delegate(_implementation()); } /** * @dev Fallback function allowing to perform a delegatecall to the given implementation. * This function will return whatever the implementation call returns */ function _delegate(address implementation) internal { /*solium-disable-next-line security/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) } } } function () public payable { _fallback(); } } /** * Utility library of inline functions on addresses */ library AddressUtils { /** * Returns whether the target address is a contract * @dev This function will return false if invoked during the constructor of a contract, * as the code is not actually created until after the constructor finishes. * @param addr address to check * @return whether the target address is a contract */ function isContract(address addr) internal view returns (bool) { uint256 size; // XXX Currently there is no better way to check if there is a contract in an address // than to check the size of the code at that address. // See https://ethereum.stackexchange.com/a/14016/36603 // for more details about how this works. // TODO Check this again before the Serenity release, because all addresses will be // contracts then. // solium-disable-next-line security/no-inline-assembly assembly { size := extcodesize(addr) } return size > 0; } } /** * @title UpgradeabilityProxy * @dev This contract represents a proxy where the implementation address to which it will delegate can be upgraded */ contract UpgradeabilityProxy is Proxy { // Version name of the current implementation string internal __version; // Address of the current implementation address internal __implementation; /** * @dev This event will be emitted every time the implementation gets upgraded * @param _newVersion representing the version name of the upgraded implementation * @param _newImplementation representing the address of the upgraded implementation */ event Upgraded(string _newVersion, address indexed _newImplementation); /** * @dev Upgrades the implementation address * @param _newVersion representing the version name of the new implementation to be set * @param _newImplementation representing the address of the new implementation to be set */ function _upgradeTo(string _newVersion, address _newImplementation) internal { require( __implementation != _newImplementation && _newImplementation != address(0), "Old address is not allowed and implementation address should not be 0x" ); require(AddressUtils.isContract(_newImplementation), "Cannot set a proxy implementation to a non-contract address"); require(bytes(_newVersion).length > 0, "Version should not be empty string"); require(keccak256(abi.encodePacked(__version)) != keccak256(abi.encodePacked(_newVersion)), "New version equals to current"); __version = _newVersion; __implementation = _newImplementation; emit Upgraded(_newVersion, _newImplementation); } } /** * @title OwnedUpgradeabilityProxy * @dev This contract combines an upgradeability proxy with basic authorization control functionalities */ contract OwnedUpgradeabilityProxy is UpgradeabilityProxy { // Owner of the contract address private __upgradeabilityOwner; /** * @dev Event to show ownership has been transferred * @param _previousOwner representing the address of the previous owner * @param _newOwner representing the address of the new owner */ event ProxyOwnershipTransferred(address _previousOwner, address _newOwner); /** * @dev Throws if called by any account other than the owner. */ modifier ifOwner() { if (msg.sender == _upgradeabilityOwner()) { _; } else { _fallback(); } } /** * @dev the constructor sets the original owner of the contract to the sender account. */ constructor() public { _setUpgradeabilityOwner(msg.sender); } /** * @dev Tells the address of the owner * @return the address of the owner */ function _upgradeabilityOwner() internal view returns (address) { return __upgradeabilityOwner; } /** * @dev Sets the address of the owner */ function _setUpgradeabilityOwner(address _newUpgradeabilityOwner) internal { require(_newUpgradeabilityOwner != address(0), "Address should not be 0x"); __upgradeabilityOwner = _newUpgradeabilityOwner; } /** * @notice Internal function to provide the address of the implementation contract */ function _implementation() internal view returns (address) { return __implementation; } /** * @dev Tells the address of the proxy owner * @return the address of the proxy owner */ function proxyOwner() external ifOwner returns (address) { return _upgradeabilityOwner(); } /** * @dev Tells the version name of the current implementation * @return string representing the name of the current version */ function version() external ifOwner returns (string) { return __version; } /** * @dev Tells the address of the current implementation * @return address of the current implementation */ function implementation() external ifOwner returns (address) { return _implementation(); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function transferProxyOwnership(address _newOwner) external ifOwner { require(_newOwner != address(0), "Address should not be 0x"); emit ProxyOwnershipTransferred(_upgradeabilityOwner(), _newOwner); _setUpgradeabilityOwner(_newOwner); } /** * @dev Allows the upgradeability owner to upgrade the current version of the proxy. * @param _newVersion representing the version name of the new implementation to be set. * @param _newImplementation representing the address of the new implementation to be set. */ function upgradeTo(string _newVersion, address _newImplementation) external ifOwner { _upgradeTo(_newVersion, _newImplementation); } /** * @dev Allows the upgradeability owner to upgrade the current version of the proxy and call the new implementation * to initialize whatever is needed through a low level call. * @param _newVersion representing the version name of the new implementation to be set. * @param _newImplementation representing the address of the new implementation to be set. * @param _data represents the msg.data to bet sent in the low level call. This parameter may include the function * signature of the implementation to be called with the needed payload */ function upgradeToAndCall(string _newVersion, address _newImplementation, bytes _data) external payable ifOwner { _upgradeTo(_newVersion, _newImplementation); /*solium-disable-next-line security/no-call-value*/ require(address(this).call.value(msg.value)(_data), "Fail in executing the function of implementation contract"); } } /** * @title ModuleRegistryProxy * @dev This proxy holds the storage of the ModuleRegistry contract and delegates every call to the current implementation set. * Besides, it allows upgrading the contract's behaviour towards further implementations, and provides basic * authorization control functionalities */ /*solium-disable-next-line no-empty-blocks*/ contract ModuleRegistryProxy is EternalStorage, OwnedUpgradeabilityProxy { }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[],"name":"proxyOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_variable","type":"bytes32"}],"name":"getBoolValues","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_variable","type":"bytes32"}],"name":"getUintValues","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newVersion","type":"string"},{"name":"_newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"implementation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_variable","type":"bytes32"}],"name":"getStringValues","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newVersion","type":"string"},{"name":"_newImplementation","type":"address"},{"name":"_data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_variable","type":"bytes32"}],"name":"getBytes32Values","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_variable","type":"bytes32"}],"name":"getAddressValues","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_variable","type":"bytes32"}],"name":"getBytesValues","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_previousOwner","type":"address"},{"indexed":false,"name":"_newOwner","type":"address"}],"name":"ProxyOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_newVersion","type":"string"},{"indexed":true,"name":"_newImplementation","type":"address"}],"name":"Upgraded","type":"event"}]
Contract Creation Code
60806040526100163364010000000061001b810204565b6100b4565b600160a060020a038116151561009257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f416464726573732073686f756c64206e6f742062652030780000000000000000604482015290519081900360640190fd5b600d8054600160a060020a031916600160a060020a0392909216919091179055565b610dfb806100c36000396000f3006080604052600436106100b95763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025313a281146100c35780631d8acf1b146100f457806326839e531461012057806354fd4d501461014a5780635a8b1a9f146101d45780635c60da1b1461020257806369ba0fe914610217578063958a41dd1461022f578063b3447ac91461025b578063baed8bb114610273578063c6cb7ab81461028b578063f1739cae146102a3575b6100c16102c4565b005b3480156100cf57600080fd5b506100d86102d6565b60408051600160a060020a039092168252519081900360200190f35b34801561010057600080fd5b5061010c600435610313565b604080519115158252519081900360200190f35b34801561012c57600080fd5b50610138600435610328565b60408051918252519081900360200190f35b34801561015657600080fd5b5061015f61033a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610199578181015183820152602001610181565b50505050905090810190601f1680156101c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e057600080fd5b506100c16024600480358281019291013590600160a060020a039035166103ef565b34801561020e57600080fd5b506100d861045d565b34801561022357600080fd5b5061015f600435610488565b6100c1602460048035828101929082013591600160a060020a038235169160443590810191013561052b565b34801561026757600080fd5b50610138600435610648565b34801561027f57600080fd5b506100d860043561065a565b34801561029757600080fd5b5061015f600435610675565b3480156102af57600080fd5b506100c1600160a060020a03600435166106df565b6102d46102cf6107c4565b6107d3565b565b60006102e06107f7565b600160a060020a031633600160a060020a03161415610308576103016107f7565b9050610310565b6103106102c4565b90565b60009081526004602052604090205460ff1690565b60009081526020819052604090205490565b60606103446107f7565b600160a060020a031633600160a060020a0316141561030857600b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b50505050509050610310565b6103f76107f7565b600160a060020a031633600160a060020a031614156104505761044b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437508794506108069350505050565b610458565b6104586102c4565b505050565b60006104676107f7565b600160a060020a031633600160a060020a03161415610308576103016107c4565b60008181526001602081815260409283902080548451600260001995831615610100029590950190911693909304601f8101839004830284018301909452838352606093909183018282801561051f5780601f106104f45761010080835404028352916020019161051f565b820191906000526020600020905b81548152906001019060200180831161050257829003601f168201915b50505050509050919050565b6105336107f7565b600160a060020a031633600160a060020a031614156106395761058785858080601f016020809104026020016040519081016040528093929190818152602001838380828437508994506108069350505050565b30600160a060020a03163483836040518083838082843782019150509250505060006040518083038185875af1925050501515610634576040805160e560020a62461bcd02815260206004820152603960248201527f4661696c20696e20657865637574696e67207468652066756e6374696f6e206f60448201527f6620696d706c656d656e746174696f6e20636f6e747261637400000000000000606482015290519081900360840190fd5b610641565b6106416102c4565b5050505050565b60009081526006602052604090205490565b600090815260026020526040902054600160a060020a031690565b60008181526003602090815260409182902080548351601f600261010060018516150260001901909316929092049182018490048402810184019094528084526060939283018282801561051f5780601f106104f45761010080835404028352916020019161051f565b6106e76107f7565b600160a060020a031633600160a060020a031614156107b957600160a060020a0381161515610760576040805160e560020a62461bcd02815260206004820152601860248201527f416464726573732073686f756c64206e6f742062652030780000000000000000604482015290519081900360640190fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96107896107f7565b60408051600160a060020a03928316815291841660208301528051918290030190a16107b481610ca0565b6107c1565b6107c16102c4565b50565b600c54600160a060020a031690565b3660008037600080366000845af43d6000803e8080156107f2573d6000f35b3d6000fd5b600d54600160a060020a031690565b600c54600160a060020a0382811691161480159061082c5750600160a060020a03811615155b15156108ce576040805160e560020a62461bcd02815260206004820152604660248201527f4f6c642061646472657373206973206e6f7420616c6c6f77656420616e64206960448201527f6d706c656d656e746174696f6e20616464726573732073686f756c64206e6f7460648201527f2062652030780000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b6108d781610d2f565b1515610953576040805160e560020a62461bcd02815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000606482015290519081900360840190fd5b81516000106109d2576040805160e560020a62461bcd02815260206004820152602260248201527f56657273696f6e2073686f756c64206e6f7420626520656d707479207374726960448201527f6e67000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b816040516020018082805190602001908083835b60208310610a055780518252601f1990920191602091820191016109e6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310610a685780518252601f199092019160209182019101610a49565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916600b6040516020018082805460018160011615610100020316600290048015610af95780601f10610ad7576101008083540402835291820191610af9565b820191906000526020600020905b815481529060010190602001808311610ae5575b50509150506040516020818303038152906040526040518082805190602001908083835b60208310610b3c5780518252601f199092019160209182019101610b1d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614151515610bc5576040805160e560020a62461bcd02815260206004820152601d60248201527f4e65772076657273696f6e20657175616c7320746f2063757272656e74000000604482015290519081900360640190fd5b8151610bd890600b906020850190610d37565b50600c805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03831690811790915560408051602080825285518183015285517f8e05e0e35ff592971ca8b477d4285a33a61ded208d644042667b78693a472f5e938793928392918301919085019080838360005b83811015610c62578181015183820152602001610c4a565b50505050905090810190601f168015610c8f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b600160a060020a0381161515610d00576040805160e560020a62461bcd02815260206004820152601860248201527f416464726573732073686f756c64206e6f742062652030780000000000000000604482015290519081900360640190fd5b600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000903b1190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610d7857805160ff1916838001178555610da5565b82800160010185558215610da5579182015b82811115610da5578251825591602001919060010190610d8a565b50610db1929150610db5565b5090565b61031091905b80821115610db15760008155600101610dbb5600a165627a7a72305820e5343f1a791e80d37ed22d19b5b82616a96002df85f9d211517f55176bbc0eb90029
Deployed Bytecode
0x6080604052600436106100b95763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025313a281146100c35780631d8acf1b146100f457806326839e531461012057806354fd4d501461014a5780635a8b1a9f146101d45780635c60da1b1461020257806369ba0fe914610217578063958a41dd1461022f578063b3447ac91461025b578063baed8bb114610273578063c6cb7ab81461028b578063f1739cae146102a3575b6100c16102c4565b005b3480156100cf57600080fd5b506100d86102d6565b60408051600160a060020a039092168252519081900360200190f35b34801561010057600080fd5b5061010c600435610313565b604080519115158252519081900360200190f35b34801561012c57600080fd5b50610138600435610328565b60408051918252519081900360200190f35b34801561015657600080fd5b5061015f61033a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610199578181015183820152602001610181565b50505050905090810190601f1680156101c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101e057600080fd5b506100c16024600480358281019291013590600160a060020a039035166103ef565b34801561020e57600080fd5b506100d861045d565b34801561022357600080fd5b5061015f600435610488565b6100c1602460048035828101929082013591600160a060020a038235169160443590810191013561052b565b34801561026757600080fd5b50610138600435610648565b34801561027f57600080fd5b506100d860043561065a565b34801561029757600080fd5b5061015f600435610675565b3480156102af57600080fd5b506100c1600160a060020a03600435166106df565b6102d46102cf6107c4565b6107d3565b565b60006102e06107f7565b600160a060020a031633600160a060020a03161415610308576103016107f7565b9050610310565b6103106102c4565b90565b60009081526004602052604090205460ff1690565b60009081526020819052604090205490565b60606103446107f7565b600160a060020a031633600160a060020a0316141561030857600b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b50505050509050610310565b6103f76107f7565b600160a060020a031633600160a060020a031614156104505761044b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437508794506108069350505050565b610458565b6104586102c4565b505050565b60006104676107f7565b600160a060020a031633600160a060020a03161415610308576103016107c4565b60008181526001602081815260409283902080548451600260001995831615610100029590950190911693909304601f8101839004830284018301909452838352606093909183018282801561051f5780601f106104f45761010080835404028352916020019161051f565b820191906000526020600020905b81548152906001019060200180831161050257829003601f168201915b50505050509050919050565b6105336107f7565b600160a060020a031633600160a060020a031614156106395761058785858080601f016020809104026020016040519081016040528093929190818152602001838380828437508994506108069350505050565b30600160a060020a03163483836040518083838082843782019150509250505060006040518083038185875af1925050501515610634576040805160e560020a62461bcd02815260206004820152603960248201527f4661696c20696e20657865637574696e67207468652066756e6374696f6e206f60448201527f6620696d706c656d656e746174696f6e20636f6e747261637400000000000000606482015290519081900360840190fd5b610641565b6106416102c4565b5050505050565b60009081526006602052604090205490565b600090815260026020526040902054600160a060020a031690565b60008181526003602090815260409182902080548351601f600261010060018516150260001901909316929092049182018490048402810184019094528084526060939283018282801561051f5780601f106104f45761010080835404028352916020019161051f565b6106e76107f7565b600160a060020a031633600160a060020a031614156107b957600160a060020a0381161515610760576040805160e560020a62461bcd02815260206004820152601860248201527f416464726573732073686f756c64206e6f742062652030780000000000000000604482015290519081900360640190fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd96107896107f7565b60408051600160a060020a03928316815291841660208301528051918290030190a16107b481610ca0565b6107c1565b6107c16102c4565b50565b600c54600160a060020a031690565b3660008037600080366000845af43d6000803e8080156107f2573d6000f35b3d6000fd5b600d54600160a060020a031690565b600c54600160a060020a0382811691161480159061082c5750600160a060020a03811615155b15156108ce576040805160e560020a62461bcd02815260206004820152604660248201527f4f6c642061646472657373206973206e6f7420616c6c6f77656420616e64206960448201527f6d706c656d656e746174696f6e20616464726573732073686f756c64206e6f7460648201527f2062652030780000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b6108d781610d2f565b1515610953576040805160e560020a62461bcd02815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e747261637420616464726573730000000000606482015290519081900360840190fd5b81516000106109d2576040805160e560020a62461bcd02815260206004820152602260248201527f56657273696f6e2073686f756c64206e6f7420626520656d707479207374726960448201527f6e67000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b816040516020018082805190602001908083835b60208310610a055780518252601f1990920191602091820191016109e6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310610a685780518252601f199092019160209182019101610a49565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916600b6040516020018082805460018160011615610100020316600290048015610af95780601f10610ad7576101008083540402835291820191610af9565b820191906000526020600020905b815481529060010190602001808311610ae5575b50509150506040516020818303038152906040526040518082805190602001908083835b60208310610b3c5780518252601f199092019160209182019101610b1d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614151515610bc5576040805160e560020a62461bcd02815260206004820152601d60248201527f4e65772076657273696f6e20657175616c7320746f2063757272656e74000000604482015290519081900360640190fd5b8151610bd890600b906020850190610d37565b50600c805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03831690811790915560408051602080825285518183015285517f8e05e0e35ff592971ca8b477d4285a33a61ded208d644042667b78693a472f5e938793928392918301919085019080838360005b83811015610c62578181015183820152602001610c4a565b50505050905090810190601f168015610c8f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b600160a060020a0381161515610d00576040805160e560020a62461bcd02815260206004820152601860248201527f416464726573732073686f756c64206e6f742062652030780000000000000000604482015290519081900360640190fd5b600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000903b1190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610d7857805160ff1916838001178555610da5565b82800160010185558215610da5579182015b82811115610da5578251825591602001919060010190610d8a565b50610db1929150610db5565b5090565b61031091905b80821115610db15760008155600101610dbb5600a165627a7a72305820e5343f1a791e80d37ed22d19b5b82616a96002df85f9d211517f55176bbc0eb90029
Swarm Source
bzzr://e5343f1a791e80d37ed22d19b5b82616a96002df85f9d211517f55176bbc0eb9
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.