Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 21 from a total of 21 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Upgrade Old | 11073592 | 1567 days ago | IN | 0 ETH | 0.10764674 | ||||
Upgrade Old | 11073557 | 1567 days ago | IN | 0 ETH | 0.11308452 | ||||
Upgrade Old | 11047066 | 1571 days ago | IN | 0 ETH | 0.2547776 | ||||
Upgrade Old | 11040815 | 1572 days ago | IN | 0 ETH | 0.20606261 | ||||
Upgrade Old | 11040807 | 1572 days ago | IN | 0 ETH | 0.20612015 | ||||
Upgrade Old | 11040806 | 1572 days ago | IN | 0 ETH | 0.21061874 | ||||
Upgrade Old | 11040761 | 1572 days ago | IN | 0 ETH | 0.20606263 | ||||
Upgrade Old | 11034909 | 1572 days ago | IN | 0 ETH | 0.2675478 | ||||
Upgrade Old | 11030729 | 1573 days ago | IN | 0 ETH | 0.15357223 | ||||
Upgrade Old | 11017712 | 1575 days ago | IN | 0 ETH | 0.20309989 | ||||
Upgrade Old | 10978366 | 1581 days ago | IN | 0 ETH | 0.49353133 | ||||
Upgrade Old | 10731070 | 1619 days ago | IN | 0 ETH | 0.75914462 | ||||
Upgrade Old | 10666757 | 1629 days ago | IN | 0 ETH | 0.36075137 | ||||
Upgrade Old | 10639491 | 1633 days ago | IN | 0 ETH | 0.00353384 | ||||
Upgrade Old | 10601843 | 1639 days ago | IN | 0 ETH | 0.1546315 | ||||
Upgrade Old | 10570229 | 1644 days ago | IN | 0 ETH | 0.19889513 | ||||
Upgrade Old | 10569391 | 1644 days ago | IN | 0 ETH | 0.20340594 | ||||
Upgrade Old | 10568766 | 1644 days ago | IN | 0 ETH | 0.28707826 | ||||
Upgrade Old | 10567924 | 1644 days ago | IN | 0 ETH | 0.39755011 | ||||
Accept Ownership | 10567239 | 1645 days ago | IN | 0 ETH | 0.00204046 | ||||
Transfer Ownersh... | 10566924 | 1645 days ago | IN | 0 ETH | 0.00389211 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
ConverterUpgrader
Compiler Version
v0.4.26+commit.4563c3fc
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-07-31 */ // File: solidity/contracts/utility/interfaces/IOwned.sol pragma solidity 0.4.26; /* Owned contract interface */ contract IOwned { // this function isn't abstract since the compiler emits automatically generated getter functions as external function owner() public view returns (address) {this;} function transferOwnership(address _newOwner) public; function acceptOwnership() public; } // File: solidity/contracts/token/interfaces/IERC20Token.sol pragma solidity 0.4.26; /* ERC20 Standard Token interface */ contract IERC20Token { // these functions aren't abstract since the compiler emits automatically generated getter functions as external function name() public view returns (string) {this;} function symbol() public view returns (string) {this;} function decimals() public view returns (uint8) {this;} function totalSupply() public view returns (uint256) {this;} function balanceOf(address _owner) public view returns (uint256) {_owner; this;} function allowance(address _owner, address _spender) public view returns (uint256) {_owner; _spender; this;} function transfer(address _to, uint256 _value) public returns (bool success); function transferFrom(address _from, address _to, uint256 _value) public returns (bool success); function approve(address _spender, uint256 _value) public returns (bool success); } // File: solidity/contracts/utility/interfaces/ITokenHolder.sol pragma solidity 0.4.26; /* Token Holder interface */ contract ITokenHolder is IOwned { function withdrawTokens(IERC20Token _token, address _to, uint256 _amount) public; } // File: solidity/contracts/converter/interfaces/IConverterAnchor.sol pragma solidity 0.4.26; /* Converter Anchor interface */ contract IConverterAnchor is IOwned, ITokenHolder { } // File: solidity/contracts/utility/interfaces/IWhitelist.sol pragma solidity 0.4.26; /* Whitelist interface */ contract IWhitelist { function isWhitelisted(address _address) public view returns (bool); } // File: solidity/contracts/converter/interfaces/IConverter.sol pragma solidity 0.4.26; /* Converter interface */ contract IConverter is IOwned { function converterType() public pure returns (uint16); function anchor() public view returns (IConverterAnchor) {this;} function isActive() public view returns (bool); function targetAmountAndFee(IERC20Token _sourceToken, IERC20Token _targetToken, uint256 _amount) public view returns (uint256, uint256); function convert(IERC20Token _sourceToken, IERC20Token _targetToken, uint256 _amount, address _trader, address _beneficiary) public payable returns (uint256); function conversionWhitelist() public view returns (IWhitelist) {this;} function conversionFee() public view returns (uint32) {this;} function maxConversionFee() public view returns (uint32) {this;} function reserveBalance(IERC20Token _reserveToken) public view returns (uint256); function() external payable; function transferAnchorOwnership(address _newOwner) public; function acceptAnchorOwnership() public; function setConversionFee(uint32 _conversionFee) public; function setConversionWhitelist(IWhitelist _whitelist) public; function withdrawTokens(IERC20Token _token, address _to, uint256 _amount) public; function withdrawETH(address _to) public; function addReserve(IERC20Token _token, uint32 _ratio) public; // deprecated, backward compatibility function token() public view returns (IConverterAnchor); function transferTokenOwnership(address _newOwner) public; function acceptTokenOwnership() public; function connectors(address _address) public view returns (uint256, uint32, bool, bool, bool); function getConnectorBalance(IERC20Token _connectorToken) public view returns (uint256); function connectorTokens(uint256 _index) public view returns (IERC20Token); function connectorTokenCount() public view returns (uint16); } // File: solidity/contracts/converter/interfaces/IConverterUpgrader.sol pragma solidity 0.4.26; /* Converter Upgrader interface */ contract IConverterUpgrader { function upgrade(bytes32 _version) public; function upgrade(uint16 _version) public; } // File: solidity/contracts/converter/interfaces/ITypedConverterCustomFactory.sol pragma solidity 0.4.26; /* Typed Converter Custom Factory interface */ contract ITypedConverterCustomFactory { function converterType() public pure returns (uint16); } // File: solidity/contracts/utility/interfaces/IContractRegistry.sol pragma solidity 0.4.26; /* Contract Registry interface */ contract IContractRegistry { function addressOf(bytes32 _contractName) public view returns (address); // deprecated, backward compatibility function getAddress(bytes32 _contractName) public view returns (address); } // File: solidity/contracts/converter/interfaces/IConverterFactory.sol pragma solidity 0.4.26; /* Converter Factory interface */ contract IConverterFactory { function createAnchor(uint16 _type, string _name, string _symbol, uint8 _decimals) public returns (IConverterAnchor); function createConverter(uint16 _type, IConverterAnchor _anchor, IContractRegistry _registry, uint32 _maxConversionFee) public returns (IConverter); function customFactories(uint16 _type) public view returns (ITypedConverterCustomFactory) { _type; this; } } // File: solidity/contracts/utility/Owned.sol pragma solidity 0.4.26; /** * @dev Provides support and utilities for contract ownership */ contract Owned is IOwned { address public owner; address public newOwner; /** * @dev triggered when the owner is updated * * @param _prevOwner previous owner * @param _newOwner new owner */ event OwnerUpdate(address indexed _prevOwner, address indexed _newOwner); /** * @dev initializes a new Owned instance */ constructor() public { owner = msg.sender; } // allows execution by the owner only modifier ownerOnly { _ownerOnly(); _; } // error message binary size optimization function _ownerOnly() internal view { require(msg.sender == owner, "ERR_ACCESS_DENIED"); } /** * @dev allows transferring the contract ownership * the new owner still needs to accept the transfer * can only be called by the contract owner * * @param _newOwner new contract owner */ function transferOwnership(address _newOwner) public ownerOnly { require(_newOwner != owner, "ERR_SAME_OWNER"); newOwner = _newOwner; } /** * @dev used by a new owner to accept an ownership transfer */ function acceptOwnership() public { require(msg.sender == newOwner, "ERR_ACCESS_DENIED"); emit OwnerUpdate(owner, newOwner); owner = newOwner; newOwner = address(0); } } // File: solidity/contracts/utility/Utils.sol pragma solidity 0.4.26; /** * @dev Utilities & Common Modifiers */ contract Utils { // verifies that a value is greater than zero modifier greaterThanZero(uint256 _value) { _greaterThanZero(_value); _; } // error message binary size optimization function _greaterThanZero(uint256 _value) internal pure { require(_value > 0, "ERR_ZERO_VALUE"); } // validates an address - currently only checks that it isn't null modifier validAddress(address _address) { _validAddress(_address); _; } // error message binary size optimization function _validAddress(address _address) internal pure { require(_address != address(0), "ERR_INVALID_ADDRESS"); } // verifies that the address is different than this contract address modifier notThis(address _address) { _notThis(_address); _; } // error message binary size optimization function _notThis(address _address) internal view { require(_address != address(this), "ERR_ADDRESS_IS_SELF"); } } // File: solidity/contracts/utility/ContractRegistryClient.sol pragma solidity 0.4.26; /** * @dev Base contract for ContractRegistry clients */ contract ContractRegistryClient is Owned, Utils { bytes32 internal constant CONTRACT_REGISTRY = "ContractRegistry"; bytes32 internal constant BANCOR_NETWORK = "BancorNetwork"; bytes32 internal constant BANCOR_FORMULA = "BancorFormula"; bytes32 internal constant CONVERTER_FACTORY = "ConverterFactory"; bytes32 internal constant CONVERSION_PATH_FINDER = "ConversionPathFinder"; bytes32 internal constant CONVERTER_UPGRADER = "BancorConverterUpgrader"; bytes32 internal constant CONVERTER_REGISTRY = "BancorConverterRegistry"; bytes32 internal constant CONVERTER_REGISTRY_DATA = "BancorConverterRegistryData"; bytes32 internal constant BNT_TOKEN = "BNTToken"; bytes32 internal constant BANCOR_X = "BancorX"; bytes32 internal constant BANCOR_X_UPGRADER = "BancorXUpgrader"; bytes32 internal constant CHAINLINK_ORACLE_WHITELIST = "ChainlinkOracleWhitelist"; IContractRegistry public registry; // address of the current contract-registry IContractRegistry public prevRegistry; // address of the previous contract-registry bool public onlyOwnerCanUpdateRegistry; // only an owner can update the contract-registry /** * @dev verifies that the caller is mapped to the given contract name * * @param _contractName contract name */ modifier only(bytes32 _contractName) { _only(_contractName); _; } // error message binary size optimization function _only(bytes32 _contractName) internal view { require(msg.sender == addressOf(_contractName), "ERR_ACCESS_DENIED"); } /** * @dev initializes a new ContractRegistryClient instance * * @param _registry address of a contract-registry contract */ constructor(IContractRegistry _registry) internal validAddress(_registry) { registry = IContractRegistry(_registry); prevRegistry = IContractRegistry(_registry); } /** * @dev updates to the new contract-registry */ function updateRegistry() public { // verify that this function is permitted require(msg.sender == owner || !onlyOwnerCanUpdateRegistry, "ERR_ACCESS_DENIED"); // get the new contract-registry IContractRegistry newRegistry = IContractRegistry(addressOf(CONTRACT_REGISTRY)); // verify that the new contract-registry is different and not zero require(newRegistry != address(registry) && newRegistry != address(0), "ERR_INVALID_REGISTRY"); // verify that the new contract-registry is pointing to a non-zero contract-registry require(newRegistry.addressOf(CONTRACT_REGISTRY) != address(0), "ERR_INVALID_REGISTRY"); // save a backup of the current contract-registry before replacing it prevRegistry = registry; // replace the current contract-registry with the new contract-registry registry = newRegistry; } /** * @dev restores the previous contract-registry */ function restoreRegistry() public ownerOnly { // restore the previous contract-registry registry = prevRegistry; } /** * @dev restricts the permission to update the contract-registry * * @param _onlyOwnerCanUpdateRegistry indicates whether or not permission is restricted to owner only */ function restrictRegistryUpdate(bool _onlyOwnerCanUpdateRegistry) public ownerOnly { // change the permission to update the contract-registry onlyOwnerCanUpdateRegistry = _onlyOwnerCanUpdateRegistry; } /** * @dev returns the address associated with the given contract name * * @param _contractName contract name * * @return contract address */ function addressOf(bytes32 _contractName) internal view returns (address) { return registry.addressOf(_contractName); } } // File: solidity/contracts/token/interfaces/IEtherToken.sol pragma solidity 0.4.26; /* Ether Token interface */ contract IEtherToken is IERC20Token { function deposit() public payable; function withdraw(uint256 _amount) public; function depositTo(address _to) public payable; function withdrawTo(address _to, uint256 _amount) public; } // File: solidity/contracts/utility/interfaces/IChainlinkPriceOracle.sol pragma solidity 0.4.26; /* Chainlink Price Oracle interface */ interface IChainlinkPriceOracle { function latestAnswer() external view returns (int256); function latestTimestamp() external view returns (uint256); } // File: solidity/contracts/utility/interfaces/IPriceOracle.sol pragma solidity 0.4.26; /* Price Oracle interface */ contract IPriceOracle { function latestRate(IERC20Token _tokenA, IERC20Token _tokenB) public view returns (uint256, uint256); function lastUpdateTime() public view returns (uint256); function latestRateAndUpdateTime(IERC20Token _tokenA, IERC20Token _tokenB) public view returns (uint256, uint256, uint256); function tokenAOracle() public view returns (IChainlinkPriceOracle) {this;} function tokenBOracle() public view returns (IChainlinkPriceOracle) {this;} } // File: solidity/contracts/converter/types/liquidity-pool-v2/interfaces/ILiquidityPoolV2Converter.sol pragma solidity 0.4.26; /* Liquidity Pool V2 Converter interface */ contract ILiquidityPoolV2Converter { function reserveStakedBalance(IERC20Token _reserveToken) public view returns (uint256); function setReserveStakedBalance(IERC20Token _reserveToken, uint256 _balance) public; function primaryReserveToken() public view returns (IERC20Token); function priceOracle() public view returns (IPriceOracle); function activate(IERC20Token _primaryReserveToken, IChainlinkPriceOracle _primaryReserveOracle, IChainlinkPriceOracle _secondaryReserveOracle) public; } // File: solidity/contracts/converter/ConverterUpgrader.sol pragma solidity 0.4.26; /** * @dev Converter Upgrader * * The converter upgrader contract allows upgrading an older converter contract (0.4 and up) * to the latest version. * To begin the upgrade process, simply execute the 'upgrade' function. * At the end of the process, the ownership of the newly upgraded converter will be transferred * back to the original owner and the original owner will need to execute the 'acceptOwnership' function. * * The address of the new converter is available in the ConverterUpgrade event. * * Note that for older converters that don't yet have the 'upgrade' function, ownership should first * be transferred manually to the ConverterUpgrader contract using the 'transferOwnership' function * and then the upgrader 'upgrade' function should be executed directly. */ contract ConverterUpgrader is IConverterUpgrader, ContractRegistryClient { address private constant ETH_RESERVE_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; IEtherToken public etherToken; /** * @dev triggered when the contract accept a converter ownership * * @param _converter converter address * @param _owner new owner - local upgrader address */ event ConverterOwned(address indexed _converter, address indexed _owner); /** * @dev triggered when the upgrading process is done * * @param _oldConverter old converter address * @param _newConverter new converter address */ event ConverterUpgrade(address indexed _oldConverter, address indexed _newConverter); /** * @dev initializes a new ConverterUpgrader instance * * @param _registry address of a contract registry contract */ constructor(IContractRegistry _registry, IEtherToken _etherToken) ContractRegistryClient(_registry) public { etherToken = _etherToken; } /** * @dev upgrades an old converter to the latest version * will throw if ownership wasn't transferred to the upgrader before calling this function. * ownership of the new converter will be transferred back to the original owner. * fires the ConverterUpgrade event upon success. * can only be called by a converter * * @param _version old converter version */ function upgrade(bytes32 _version) public { upgradeOld(IConverter(msg.sender), _version); } /** * @dev upgrades an old converter to the latest version * will throw if ownership wasn't transferred to the upgrader before calling this function. * ownership of the new converter will be transferred back to the original owner. * fires the ConverterUpgrade event upon success. * can only be called by a converter * * @param _version old converter version */ function upgrade(uint16 _version) public { upgradeOld(IConverter(msg.sender), bytes32(_version)); } /** * @dev upgrades an old converter to the latest version * will throw if ownership wasn't transferred to the upgrader before calling this function. * ownership of the new converter will be transferred back to the original owner. * fires the ConverterUpgrade event upon success. * * @param _converter old converter contract address * @param _version old converter version */ function upgradeOld(IConverter _converter, bytes32 _version) public { _version; IConverter converter = IConverter(_converter); address prevOwner = converter.owner(); acceptConverterOwnership(converter); IConverter newConverter = createConverter(converter); copyReserves(converter, newConverter); copyConversionFee(converter, newConverter); transferReserveBalances(converter, newConverter); IConverterAnchor anchor = converter.token(); // get the activation status before it's being invalidated bool activate = isV28OrHigherConverter(converter) && converter.isActive(); if (anchor.owner() == address(converter)) { converter.transferTokenOwnership(newConverter); newConverter.acceptAnchorOwnership(); } handleTypeSpecificData(converter, newConverter, activate); converter.transferOwnership(prevOwner); newConverter.transferOwnership(prevOwner); emit ConverterUpgrade(address(converter), address(newConverter)); } /** * @dev the first step when upgrading a converter is to transfer the ownership to the local contract. * the upgrader contract then needs to accept the ownership transfer before initiating * the upgrade process. * fires the ConverterOwned event upon success * * @param _oldConverter converter to accept ownership of */ function acceptConverterOwnership(IConverter _oldConverter) private { _oldConverter.acceptOwnership(); emit ConverterOwned(_oldConverter, this); } /** * @dev creates a new converter with same basic data as the original old converter * the newly created converter will have no reserves at this step. * * @param _oldConverter old converter contract address * * @return the new converter new converter contract address */ function createConverter(IConverter _oldConverter) private returns (IConverter) { IConverterAnchor anchor = _oldConverter.token(); uint32 maxConversionFee = _oldConverter.maxConversionFee(); uint16 reserveTokenCount = _oldConverter.connectorTokenCount(); // determine new converter type uint16 newType = 0; // new converter - get the type from the converter itself if (isV28OrHigherConverter(_oldConverter)) newType = _oldConverter.converterType(); // old converter - if it has 1 reserve token, the type is a liquid token, otherwise the type liquidity pool else if (reserveTokenCount > 1) newType = 1; IConverterFactory converterFactory = IConverterFactory(addressOf(CONVERTER_FACTORY)); IConverter converter = converterFactory.createConverter(newType, anchor, registry, maxConversionFee); converter.acceptOwnership(); return converter; } /** * @dev copies the reserves from the old converter to the new one. * note that this will not work for an unlimited number of reserves due to block gas limit constraints. * * @param _oldConverter old converter contract address * @param _newConverter new converter contract address */ function copyReserves(IConverter _oldConverter, IConverter _newConverter) private { uint16 reserveTokenCount = _oldConverter.connectorTokenCount(); for (uint16 i = 0; i < reserveTokenCount; i++) { address reserveAddress = _oldConverter.connectorTokens(i); (, uint32 weight, , , ) = _oldConverter.connectors(reserveAddress); // Ether reserve if (reserveAddress == ETH_RESERVE_ADDRESS) { _newConverter.addReserve(IERC20Token(ETH_RESERVE_ADDRESS), weight); } // Ether reserve token else if (reserveAddress == address(etherToken)) { _newConverter.addReserve(IERC20Token(ETH_RESERVE_ADDRESS), weight); } // ERC20 reserve token else { _newConverter.addReserve(IERC20Token(reserveAddress), weight); } } } /** * @dev copies the conversion fee from the old converter to the new one * * @param _oldConverter old converter contract address * @param _newConverter new converter contract address */ function copyConversionFee(IConverter _oldConverter, IConverter _newConverter) private { uint32 conversionFee = _oldConverter.conversionFee(); _newConverter.setConversionFee(conversionFee); } /** * @dev transfers the balance of each reserve in the old converter to the new one. * note that the function assumes that the new converter already has the exact same number of * also, this will not work for an unlimited number of reserves due to block gas limit constraints. * * @param _oldConverter old converter contract address * @param _newConverter new converter contract address */ function transferReserveBalances(IConverter _oldConverter, IConverter _newConverter) private { uint256 reserveBalance; uint16 reserveTokenCount = _oldConverter.connectorTokenCount(); for (uint16 i = 0; i < reserveTokenCount; i++) { address reserveAddress = _oldConverter.connectorTokens(i); // Ether reserve if (reserveAddress == ETH_RESERVE_ADDRESS) { _oldConverter.withdrawETH(address(_newConverter)); } // Ether reserve token else if (reserveAddress == address(etherToken)) { reserveBalance = etherToken.balanceOf(_oldConverter); _oldConverter.withdrawTokens(etherToken, address(this), reserveBalance); etherToken.withdrawTo(address(_newConverter), reserveBalance); } // ERC20 reserve token else { IERC20Token connector = IERC20Token(reserveAddress); reserveBalance = connector.balanceOf(_oldConverter); _oldConverter.withdrawTokens(connector, address(_newConverter), reserveBalance); } } } /** * @dev handles upgrading custom (type specific) data from the old converter to the new one * * @param _oldConverter old converter contract address * @param _newConverter new converter contract address * @param _activate activate the new converter */ function handleTypeSpecificData(IConverter _oldConverter, IConverter _newConverter, bool _activate) private { if (!isV28OrHigherConverter(_oldConverter)) return; uint16 converterType = _oldConverter.converterType(); if (converterType == 2) { uint16 reserveTokenCount = _oldConverter.connectorTokenCount(); for (uint16 i = 0; i < reserveTokenCount; i++) { // copy reserve staked balance IERC20Token reserveTokenAddress = _oldConverter.connectorTokens(i); uint256 balance = ILiquidityPoolV2Converter(_oldConverter).reserveStakedBalance(reserveTokenAddress); ILiquidityPoolV2Converter(_newConverter).setReserveStakedBalance(reserveTokenAddress, balance); } if (!_activate) { return; } // get the primary reserve token IERC20Token primaryReserveToken = ILiquidityPoolV2Converter(_oldConverter).primaryReserveToken(); // get the chainlink price oracles IPriceOracle priceOracle = ILiquidityPoolV2Converter(_oldConverter).priceOracle(); IChainlinkPriceOracle oracleA = priceOracle.tokenAOracle(); IChainlinkPriceOracle oracleB = priceOracle.tokenBOracle(); // activate the new converter ILiquidityPoolV2Converter(_newConverter).activate(primaryReserveToken, oracleA, oracleB); } } bytes4 private constant IS_V28_OR_HIGHER_FUNC_SELECTOR = bytes4(keccak256("isV28OrHigher()")); // using assembly code to identify converter version // can't rely on the version number since the function had a different signature in older converters function isV28OrHigherConverter(IConverter _converter) internal view returns (bool) { bool success; uint256[1] memory ret; bytes memory data = abi.encodeWithSelector(IS_V28_OR_HIGHER_FUNC_SELECTOR); assembly { success := staticcall( 5000, // isV28OrHigher consumes 190 gas, but just for extra safety _converter, // destination address add(data, 32), // input buffer (starts after the first 32 bytes in the `data` array) mload(data), // input length (loaded from the first 32 bytes in the `data` array) ret, // output buffer 32 // output length ) } return success && ret[0] != 0; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_onlyOwnerCanUpdateRegistry","type":"bool"}],"name":"restrictRegistryUpdate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"onlyOwnerCanUpdateRegistry","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"updateRegistry","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"prevRegistry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"registry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_version","type":"uint16"}],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"restoreRegistry","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"etherToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_version","type":"bytes32"}],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_converter","type":"address"},{"name":"_version","type":"bytes32"}],"name":"upgradeOld","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_registry","type":"address"},{"name":"_etherToken","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_converter","type":"address"},{"indexed":true,"name":"_owner","type":"address"}],"name":"ConverterOwned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_oldConverter","type":"address"},{"indexed":true,"name":"_newConverter","type":"address"}],"name":"ConverterUpgrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_prevOwner","type":"address"},{"indexed":true,"name":"_newOwner","type":"address"}],"name":"OwnerUpdate","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516040806120df83398101604052805160209091015160008054600160a060020a03191633179055818061004f81640100000000610092810204565b5060028054600160a060020a03928316600160a060020a03199182168117909255600380548216909217909155600480549390921692169190911790555061010c565b600160a060020a038116151561010957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4552525f494e56414c49445f4144445245535300000000000000000000000000604482015290519081900360640190fd5b50565b611fc48061011b6000396000f3006080604052600436106100b65763ffffffff60e060020a600035041663024c7ec781146100bb5780632fe8a6ad146100d757806349d10b641461010057806361cd756e1461011557806379ba5097146101465780637b1039991461015b5780638da5cb5b1461017057806390f58c9614610185578063b4a176d3146101a1578063b8066bcb146101b6578063bc444e13146101cb578063d4ee1d90146101e3578063f2cfed87146101f8578063f2fde38b1461021c575b600080fd5b3480156100c757600080fd5b506100d5600435151561023d565b005b3480156100e357600080fd5b506100ec610285565b604080519115158252519081900360200190f35b34801561010c57600080fd5b506100d56102a6565b34801561012157600080fd5b5061012a610525565b60408051600160a060020a039092168252519081900360200190f35b34801561015257600080fd5b506100d5610534565b34801561016757600080fd5b5061012a610607565b34801561017c57600080fd5b5061012a610616565b34801561019157600080fd5b506100d561ffff60043516610625565b3480156101ad57600080fd5b506100d5610636565b3480156101c257600080fd5b5061012a61066f565b3480156101d757600080fd5b506100d560043561067e565b3480156101ef57600080fd5b5061012a610688565b34801561020457600080fd5b506100d5600160a060020a0360043516602435610697565b34801561022857600080fd5b506100d5600160a060020a0360043516610aa8565b610245610b45565b60038054911515740100000000000000000000000000000000000000000274ff000000000000000000000000000000000000000019909216919091179055565b60035474010000000000000000000000000000000000000000900460ff1681565b60008054600160a060020a03163314806102db575060035474010000000000000000000000000000000000000000900460ff16155b1515610331576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f4143434553535f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b61035a7f436f6e7472616374526567697374727900000000000000000000000000000000610ba9565b600254909150600160a060020a038083169116148015906103835750600160a060020a03811615155b15156103d9576040805160e560020a62461bcd02815260206004820152601460248201527f4552525f494e56414c49445f5245474953545259000000000000000000000000604482015290519081900360640190fd5b604080517fbb34534c0000000000000000000000000000000000000000000000000000000081527f436f6e747261637452656769737472790000000000000000000000000000000060048201529051600091600160a060020a0384169163bb34534c9160248082019260209290919082900301818787803b15801561045d57600080fd5b505af1158015610471573d6000803e3d6000fd5b505050506040513d602081101561048757600080fd5b5051600160a060020a031614156104e8576040805160e560020a62461bcd02815260206004820152601460248201527f4552525f494e56414c49445f5245474953545259000000000000000000000000604482015290519081900360640190fd5b6002805460038054600160a060020a0380841673ffffffffffffffffffffffffffffffffffffffff19928316179092559091169216919091179055565b600354600160a060020a031681565b600154600160a060020a03163314610596576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f4143434553535f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b60015460008054604051600160a060020a0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600254600160a060020a031681565b600054600160a060020a031681565b6106333361ffff8316610697565b50565b61063e610b45565b6003546002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055565b600454600160a060020a031681565b6106333382610697565b600154600160a060020a031681565b600080600080600086945084600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156106e057600080fd5b505af11580156106f4573d6000803e3d6000fd5b505050506040513d602081101561070a57600080fd5b5051935061071785610c41565b61072085610cd0565b925061072c8584611052565b61073685846113df565b61074085846114d2565b84600160a060020a031663fc0c546a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561077e57600080fd5b505af1158015610792573d6000803e3d6000fd5b505050506040513d60208110156107a857600080fd5b505191506107b58561194f565b8015610827575084600160a060020a03166322f3e2d46040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107fa57600080fd5b505af115801561080e573d6000803e3d6000fd5b505050506040513d602081101561082457600080fd5b50515b905084600160a060020a031682600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087157600080fd5b505af1158015610885573d6000803e3d6000fd5b505050506040513d602081101561089b57600080fd5b5051600160a060020a031614156109765784600160a060020a03166321e6b53d846040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b15801561090757600080fd5b505af115801561091b573d6000803e3d6000fd5b5050505082600160a060020a031663cdc91c696040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561095d57600080fd5b505af1158015610971573d6000803e3d6000fd5b505050505b610981858483611a0b565b84600160a060020a031663f2fde38b856040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b1580156109dc57600080fd5b505af11580156109f0573d6000803e3d6000fd5b5050505082600160a060020a031663f2fde38b856040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b158015610a4f57600080fd5b505af1158015610a63573d6000803e3d6000fd5b5050604051600160a060020a038087169350881691507f522b846327aea07106ec4d64ae4b6d6dea47689884dab650fd3a1f2e1d6a270190600090a350505050505050565b610ab0610b45565b600054600160a060020a0382811691161415610b16576040805160e560020a62461bcd02815260206004820152600e60248201527f4552525f53414d455f4f574e4552000000000000000000000000000000000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a03163314610ba7576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f4143434553535f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b565b600254604080517fbb34534c000000000000000000000000000000000000000000000000000000008152600481018490529051600092600160a060020a03169163bb34534c91602480830192602092919082900301818787803b158015610c0f57600080fd5b505af1158015610c23573d6000803e3d6000fd5b505050506040513d6020811015610c3957600080fd5b505192915050565b80600160a060020a03166379ba50976040518163ffffffff1660e060020a028152600401600060405180830381600087803b158015610c7f57600080fd5b505af1158015610c93573d6000803e3d6000fd5b5050604051309250600160a060020a03841691507ff764604894fa993d4370a9cb28b81c11deb1aafdb2909156173ae3833dad807590600090a350565b600080600080600080600087600160a060020a031663fc0c546a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610d1957600080fd5b505af1158015610d2d573d6000803e3d6000fd5b505050506040513d6020811015610d4357600080fd5b5051604080517f94c275ad0000000000000000000000000000000000000000000000000000000081529051919750600160a060020a038a16916394c275ad916004808201926020929091908290030181600087803b158015610da457600080fd5b505af1158015610db8573d6000803e3d6000fd5b505050506040513d6020811015610dce57600080fd5b5051604080517f71f52bf30000000000000000000000000000000000000000000000000000000081529051919650600160a060020a038a16916371f52bf3916004808201926020929091908290030181600087803b158015610e2f57600080fd5b505af1158015610e43573d6000803e3d6000fd5b505050506040513d6020811015610e5957600080fd5b5051935060009250610e6a8861194f565b15610ee05787600160a060020a0316633e8ff43f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ead57600080fd5b505af1158015610ec1573d6000803e3d6000fd5b505050506040513d6020811015610ed757600080fd5b50519250610ef2565b60018461ffff161115610ef257600192505b610f1b7f436f6e766572746572466163746f727900000000000000000000000000000000610ba9565b600254604080517f15f64b6a00000000000000000000000000000000000000000000000000000000815261ffff87166004820152600160a060020a038a81166024830152928316604482015263ffffffff891660648201529051929450908416916315f64b6a916084808201926020929091908290030181600087803b158015610fa457600080fd5b505af1158015610fb8573d6000803e3d6000fd5b505050506040513d6020811015610fce57600080fd5b5051604080517f79ba50970000000000000000000000000000000000000000000000000000000081529051919250600160a060020a038316916379ba50979160048082019260009290919082900301818387803b15801561102e57600080fd5b505af1158015611042573d6000803e3d6000fd5b50929a9950505050505050505050565b60008060008085600160a060020a03166371f52bf36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561109657600080fd5b505af11580156110aa573d6000803e3d6000fd5b505050506040513d60208110156110c057600080fd5b50519350600092505b8361ffff168361ffff1610156113d75785600160a060020a03166319b64015846040518263ffffffff1660e060020a028152600401808261ffff168152602001915050602060405180830381600087803b15801561112657600080fd5b505af115801561113a573d6000803e3d6000fd5b505050506040513d602081101561115057600080fd5b5051604080517f0e53aae9000000000000000000000000000000000000000000000000000000008152600160a060020a038084166004830152915192945090881691630e53aae99160248082019260a0929091908290030181600087803b1580156111ba57600080fd5b505af11580156111ce573d6000803e3d6000fd5b505050506040513d60a08110156111e457600080fd5b50602001519050600160a060020a03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156112ad57604080517f6a49d2c400000000000000000000000000000000000000000000000000000000815273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600482015263ffffffff831660248201529051600160a060020a03871691636a49d2c491604480830192600092919082900301818387803b15801561129057600080fd5b505af11580156112a4573d6000803e3d6000fd5b505050506113cc565b600454600160a060020a038381169116141561134357604080517f6a49d2c400000000000000000000000000000000000000000000000000000000815273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600482015263ffffffff831660248201529051600160a060020a03871691636a49d2c491604480830192600092919082900301818387803b15801561129057600080fd5b604080517f6a49d2c4000000000000000000000000000000000000000000000000000000008152600160a060020a03848116600483015263ffffffff84166024830152915191871691636a49d2c49160448082019260009290919082900301818387803b1580156113b357600080fd5b505af11580156113c7573d6000803e3d6000fd5b505050505b6001909201916110c9565b505050505050565b600082600160a060020a031663579cd3ca6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561141f57600080fd5b505af1158015611433573d6000803e3d6000fd5b505050506040513d602081101561144957600080fd5b5051604080517fecbca55d00000000000000000000000000000000000000000000000000000000815263ffffffff831660048201529051919250600160a060020a0384169163ecbca55d9160248082019260009290919082900301818387803b1580156114b557600080fd5b505af11580156114c9573d6000803e3d6000fd5b50505050505050565b600080600080600086600160a060020a03166371f52bf36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561151857600080fd5b505af115801561152c573d6000803e3d6000fd5b505050506040513d602081101561154257600080fd5b50519350600092505b8361ffff168361ffff1610156114c95786600160a060020a03166319b64015846040518263ffffffff1660e060020a028152600401808261ffff168152602001915050602060405180830381600087803b1580156115a857600080fd5b505af11580156115bc573d6000803e3d6000fd5b505050506040513d60208110156115d257600080fd5b50519150600160a060020a03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156116735786600160a060020a031663690d8320876040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b15801561165657600080fd5b505af115801561166a573d6000803e3d6000fd5b50505050611944565b600454600160a060020a03838116911614156118235760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038b811694820194909452905192909116916370a08231916024808201926020929091908290030181600087803b1580156116f557600080fd5b505af1158015611709573d6000803e3d6000fd5b505050506040513d602081101561171f57600080fd5b505160048054604080517f5e35359e000000000000000000000000000000000000000000000000000000008152600160a060020a03928316938101939093523060248401526044830184905251929750891691635e35359e9160648082019260009290919082900301818387803b15801561179957600080fd5b505af11580156117ad573d6000803e3d6000fd5b505060048054604080517f205c2878000000000000000000000000000000000000000000000000000000008152600160a060020a038c811694820194909452602481018b9052905192909116935063205c2878925060448082019260009290919082900301818387803b15801561165657600080fd5b50604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038881166004830152915183928316916370a082319160248083019260209291908290030181600087803b15801561188957600080fd5b505af115801561189d573d6000803e3d6000fd5b505050506040513d60208110156118b357600080fd5b5051604080517f5e35359e000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152898116602483015260448201849052915192975090891691635e35359e9160648082019260009290919082900301818387803b15801561192b57600080fd5b505af115801561193f573d6000803e3d6000fd5b505050505b60019092019161154b565b60008061195a611f79565b604080517f69735632384f72486967686572282900000000000000000000000000000000008152815190819003600f0181206004825260248201909252602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093178352815191929091849188611388fa9250828015611a025750815115155b95945050505050565b6000806000806000806000806000611a228c61194f565b1515611a2d57611f6b565b8b600160a060020a0316633e8ff43f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611a6b57600080fd5b505af1158015611a7f573d6000803e3d6000fd5b505050506040513d6020811015611a9557600080fd5b50519850600261ffff8a161415611f6b578b600160a060020a03166371f52bf36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611ae457600080fd5b505af1158015611af8573d6000803e3d6000fd5b505050506040513d6020811015611b0e57600080fd5b50519750600096505b8761ffff168761ffff161015611cc4578b600160a060020a03166319b64015886040518263ffffffff1660e060020a028152600401808261ffff168152602001915050602060405180830381600087803b158015611b7457600080fd5b505af1158015611b88573d6000803e3d6000fd5b505050506040513d6020811015611b9e57600080fd5b5051604080517e5e319c000000000000000000000000000000000000000000000000000000008152600160a060020a0380841660048301529151929850908e1691625e319c916024808201926020929091908290030181600087803b158015611c0657600080fd5b505af1158015611c1a573d6000803e3d6000fd5b505050506040513d6020811015611c3057600080fd5b5051604080517fbf7da6ba000000000000000000000000000000000000000000000000000000008152600160a060020a038981166004830152602482018490529151929750908d169163bf7da6ba9160448082019260009290919082900301818387803b158015611ca057600080fd5b505af1158015611cb4573d6000803e3d6000fd5b505060019098019750611b179050565b891515611cd057611f6b565b8b600160a060020a0316630337e3fb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611d0e57600080fd5b505af1158015611d22573d6000803e3d6000fd5b505050506040513d6020811015611d3857600080fd5b5051604080517f2630c12f0000000000000000000000000000000000000000000000000000000081529051919550600160a060020a038e1691632630c12f916004808201926020929091908290030181600087803b158015611d9957600080fd5b505af1158015611dad573d6000803e3d6000fd5b505050506040513d6020811015611dc357600080fd5b5051604080517fb9e1715b0000000000000000000000000000000000000000000000000000000081529051919450600160a060020a0385169163b9e1715b916004808201926020929091908290030181600087803b158015611e2457600080fd5b505af1158015611e38573d6000803e3d6000fd5b505050506040513d6020811015611e4e57600080fd5b5051604080517ff997fda70000000000000000000000000000000000000000000000000000000081529051919350600160a060020a0385169163f997fda7916004808201926020929091908290030181600087803b158015611eaf57600080fd5b505af1158015611ec3573d6000803e3d6000fd5b505050506040513d6020811015611ed957600080fd5b5051604080517f119b90cd000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152858116602483015280841660448301529151929350908d169163119b90cd9160648082019260009290919082900301818387803b158015611f5257600080fd5b505af1158015611f66573d6000803e3d6000fd5b505050505b505050505050505050505050565b60206040519081016040528060019060208202803883395091929150505600a165627a7a72305820cd272a18b92e8d173af6176f64cfb021ab179b3da9704c8ebb85eecd8f9c907a002900000000000000000000000052ae12abe5d8bd778bd5397f99ca900624cfadd4000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Deployed Bytecode
0x6080604052600436106100b65763ffffffff60e060020a600035041663024c7ec781146100bb5780632fe8a6ad146100d757806349d10b641461010057806361cd756e1461011557806379ba5097146101465780637b1039991461015b5780638da5cb5b1461017057806390f58c9614610185578063b4a176d3146101a1578063b8066bcb146101b6578063bc444e13146101cb578063d4ee1d90146101e3578063f2cfed87146101f8578063f2fde38b1461021c575b600080fd5b3480156100c757600080fd5b506100d5600435151561023d565b005b3480156100e357600080fd5b506100ec610285565b604080519115158252519081900360200190f35b34801561010c57600080fd5b506100d56102a6565b34801561012157600080fd5b5061012a610525565b60408051600160a060020a039092168252519081900360200190f35b34801561015257600080fd5b506100d5610534565b34801561016757600080fd5b5061012a610607565b34801561017c57600080fd5b5061012a610616565b34801561019157600080fd5b506100d561ffff60043516610625565b3480156101ad57600080fd5b506100d5610636565b3480156101c257600080fd5b5061012a61066f565b3480156101d757600080fd5b506100d560043561067e565b3480156101ef57600080fd5b5061012a610688565b34801561020457600080fd5b506100d5600160a060020a0360043516602435610697565b34801561022857600080fd5b506100d5600160a060020a0360043516610aa8565b610245610b45565b60038054911515740100000000000000000000000000000000000000000274ff000000000000000000000000000000000000000019909216919091179055565b60035474010000000000000000000000000000000000000000900460ff1681565b60008054600160a060020a03163314806102db575060035474010000000000000000000000000000000000000000900460ff16155b1515610331576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f4143434553535f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b61035a7f436f6e7472616374526567697374727900000000000000000000000000000000610ba9565b600254909150600160a060020a038083169116148015906103835750600160a060020a03811615155b15156103d9576040805160e560020a62461bcd02815260206004820152601460248201527f4552525f494e56414c49445f5245474953545259000000000000000000000000604482015290519081900360640190fd5b604080517fbb34534c0000000000000000000000000000000000000000000000000000000081527f436f6e747261637452656769737472790000000000000000000000000000000060048201529051600091600160a060020a0384169163bb34534c9160248082019260209290919082900301818787803b15801561045d57600080fd5b505af1158015610471573d6000803e3d6000fd5b505050506040513d602081101561048757600080fd5b5051600160a060020a031614156104e8576040805160e560020a62461bcd02815260206004820152601460248201527f4552525f494e56414c49445f5245474953545259000000000000000000000000604482015290519081900360640190fd5b6002805460038054600160a060020a0380841673ffffffffffffffffffffffffffffffffffffffff19928316179092559091169216919091179055565b600354600160a060020a031681565b600154600160a060020a03163314610596576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f4143434553535f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b60015460008054604051600160a060020a0393841693909116917f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a91a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b600254600160a060020a031681565b600054600160a060020a031681565b6106333361ffff8316610697565b50565b61063e610b45565b6003546002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055565b600454600160a060020a031681565b6106333382610697565b600154600160a060020a031681565b600080600080600086945084600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156106e057600080fd5b505af11580156106f4573d6000803e3d6000fd5b505050506040513d602081101561070a57600080fd5b5051935061071785610c41565b61072085610cd0565b925061072c8584611052565b61073685846113df565b61074085846114d2565b84600160a060020a031663fc0c546a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561077e57600080fd5b505af1158015610792573d6000803e3d6000fd5b505050506040513d60208110156107a857600080fd5b505191506107b58561194f565b8015610827575084600160a060020a03166322f3e2d46040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156107fa57600080fd5b505af115801561080e573d6000803e3d6000fd5b505050506040513d602081101561082457600080fd5b50515b905084600160a060020a031682600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561087157600080fd5b505af1158015610885573d6000803e3d6000fd5b505050506040513d602081101561089b57600080fd5b5051600160a060020a031614156109765784600160a060020a03166321e6b53d846040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b15801561090757600080fd5b505af115801561091b573d6000803e3d6000fd5b5050505082600160a060020a031663cdc91c696040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561095d57600080fd5b505af1158015610971573d6000803e3d6000fd5b505050505b610981858483611a0b565b84600160a060020a031663f2fde38b856040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b1580156109dc57600080fd5b505af11580156109f0573d6000803e3d6000fd5b5050505082600160a060020a031663f2fde38b856040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b158015610a4f57600080fd5b505af1158015610a63573d6000803e3d6000fd5b5050604051600160a060020a038087169350881691507f522b846327aea07106ec4d64ae4b6d6dea47689884dab650fd3a1f2e1d6a270190600090a350505050505050565b610ab0610b45565b600054600160a060020a0382811691161415610b16576040805160e560020a62461bcd02815260206004820152600e60248201527f4552525f53414d455f4f574e4552000000000000000000000000000000000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a03163314610ba7576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f4143434553535f44454e494544000000000000000000000000000000604482015290519081900360640190fd5b565b600254604080517fbb34534c000000000000000000000000000000000000000000000000000000008152600481018490529051600092600160a060020a03169163bb34534c91602480830192602092919082900301818787803b158015610c0f57600080fd5b505af1158015610c23573d6000803e3d6000fd5b505050506040513d6020811015610c3957600080fd5b505192915050565b80600160a060020a03166379ba50976040518163ffffffff1660e060020a028152600401600060405180830381600087803b158015610c7f57600080fd5b505af1158015610c93573d6000803e3d6000fd5b5050604051309250600160a060020a03841691507ff764604894fa993d4370a9cb28b81c11deb1aafdb2909156173ae3833dad807590600090a350565b600080600080600080600087600160a060020a031663fc0c546a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610d1957600080fd5b505af1158015610d2d573d6000803e3d6000fd5b505050506040513d6020811015610d4357600080fd5b5051604080517f94c275ad0000000000000000000000000000000000000000000000000000000081529051919750600160a060020a038a16916394c275ad916004808201926020929091908290030181600087803b158015610da457600080fd5b505af1158015610db8573d6000803e3d6000fd5b505050506040513d6020811015610dce57600080fd5b5051604080517f71f52bf30000000000000000000000000000000000000000000000000000000081529051919650600160a060020a038a16916371f52bf3916004808201926020929091908290030181600087803b158015610e2f57600080fd5b505af1158015610e43573d6000803e3d6000fd5b505050506040513d6020811015610e5957600080fd5b5051935060009250610e6a8861194f565b15610ee05787600160a060020a0316633e8ff43f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ead57600080fd5b505af1158015610ec1573d6000803e3d6000fd5b505050506040513d6020811015610ed757600080fd5b50519250610ef2565b60018461ffff161115610ef257600192505b610f1b7f436f6e766572746572466163746f727900000000000000000000000000000000610ba9565b600254604080517f15f64b6a00000000000000000000000000000000000000000000000000000000815261ffff87166004820152600160a060020a038a81166024830152928316604482015263ffffffff891660648201529051929450908416916315f64b6a916084808201926020929091908290030181600087803b158015610fa457600080fd5b505af1158015610fb8573d6000803e3d6000fd5b505050506040513d6020811015610fce57600080fd5b5051604080517f79ba50970000000000000000000000000000000000000000000000000000000081529051919250600160a060020a038316916379ba50979160048082019260009290919082900301818387803b15801561102e57600080fd5b505af1158015611042573d6000803e3d6000fd5b50929a9950505050505050505050565b60008060008085600160a060020a03166371f52bf36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561109657600080fd5b505af11580156110aa573d6000803e3d6000fd5b505050506040513d60208110156110c057600080fd5b50519350600092505b8361ffff168361ffff1610156113d75785600160a060020a03166319b64015846040518263ffffffff1660e060020a028152600401808261ffff168152602001915050602060405180830381600087803b15801561112657600080fd5b505af115801561113a573d6000803e3d6000fd5b505050506040513d602081101561115057600080fd5b5051604080517f0e53aae9000000000000000000000000000000000000000000000000000000008152600160a060020a038084166004830152915192945090881691630e53aae99160248082019260a0929091908290030181600087803b1580156111ba57600080fd5b505af11580156111ce573d6000803e3d6000fd5b505050506040513d60a08110156111e457600080fd5b50602001519050600160a060020a03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156112ad57604080517f6a49d2c400000000000000000000000000000000000000000000000000000000815273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600482015263ffffffff831660248201529051600160a060020a03871691636a49d2c491604480830192600092919082900301818387803b15801561129057600080fd5b505af11580156112a4573d6000803e3d6000fd5b505050506113cc565b600454600160a060020a038381169116141561134357604080517f6a49d2c400000000000000000000000000000000000000000000000000000000815273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600482015263ffffffff831660248201529051600160a060020a03871691636a49d2c491604480830192600092919082900301818387803b15801561129057600080fd5b604080517f6a49d2c4000000000000000000000000000000000000000000000000000000008152600160a060020a03848116600483015263ffffffff84166024830152915191871691636a49d2c49160448082019260009290919082900301818387803b1580156113b357600080fd5b505af11580156113c7573d6000803e3d6000fd5b505050505b6001909201916110c9565b505050505050565b600082600160a060020a031663579cd3ca6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561141f57600080fd5b505af1158015611433573d6000803e3d6000fd5b505050506040513d602081101561144957600080fd5b5051604080517fecbca55d00000000000000000000000000000000000000000000000000000000815263ffffffff831660048201529051919250600160a060020a0384169163ecbca55d9160248082019260009290919082900301818387803b1580156114b557600080fd5b505af11580156114c9573d6000803e3d6000fd5b50505050505050565b600080600080600086600160a060020a03166371f52bf36040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561151857600080fd5b505af115801561152c573d6000803e3d6000fd5b505050506040513d602081101561154257600080fd5b50519350600092505b8361ffff168361ffff1610156114c95786600160a060020a03166319b64015846040518263ffffffff1660e060020a028152600401808261ffff168152602001915050602060405180830381600087803b1580156115a857600080fd5b505af11580156115bc573d6000803e3d6000fd5b505050506040513d60208110156115d257600080fd5b50519150600160a060020a03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156116735786600160a060020a031663690d8320876040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050600060405180830381600087803b15801561165657600080fd5b505af115801561166a573d6000803e3d6000fd5b50505050611944565b600454600160a060020a03838116911614156118235760048054604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038b811694820194909452905192909116916370a08231916024808201926020929091908290030181600087803b1580156116f557600080fd5b505af1158015611709573d6000803e3d6000fd5b505050506040513d602081101561171f57600080fd5b505160048054604080517f5e35359e000000000000000000000000000000000000000000000000000000008152600160a060020a03928316938101939093523060248401526044830184905251929750891691635e35359e9160648082019260009290919082900301818387803b15801561179957600080fd5b505af11580156117ad573d6000803e3d6000fd5b505060048054604080517f205c2878000000000000000000000000000000000000000000000000000000008152600160a060020a038c811694820194909452602481018b9052905192909116935063205c2878925060448082019260009290919082900301818387803b15801561165657600080fd5b50604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038881166004830152915183928316916370a082319160248083019260209291908290030181600087803b15801561188957600080fd5b505af115801561189d573d6000803e3d6000fd5b505050506040513d60208110156118b357600080fd5b5051604080517f5e35359e000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152898116602483015260448201849052915192975090891691635e35359e9160648082019260009290919082900301818387803b15801561192b57600080fd5b505af115801561193f573d6000803e3d6000fd5b505050505b60019092019161154b565b60008061195a611f79565b604080517f69735632384f72486967686572282900000000000000000000000000000000008152815190819003600f0181206004825260248201909252602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093178352815191929091849188611388fa9250828015611a025750815115155b95945050505050565b6000806000806000806000806000611a228c61194f565b1515611a2d57611f6b565b8b600160a060020a0316633e8ff43f6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611a6b57600080fd5b505af1158015611a7f573d6000803e3d6000fd5b505050506040513d6020811015611a9557600080fd5b50519850600261ffff8a161415611f6b578b600160a060020a03166371f52bf36040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611ae457600080fd5b505af1158015611af8573d6000803e3d6000fd5b505050506040513d6020811015611b0e57600080fd5b50519750600096505b8761ffff168761ffff161015611cc4578b600160a060020a03166319b64015886040518263ffffffff1660e060020a028152600401808261ffff168152602001915050602060405180830381600087803b158015611b7457600080fd5b505af1158015611b88573d6000803e3d6000fd5b505050506040513d6020811015611b9e57600080fd5b5051604080517e5e319c000000000000000000000000000000000000000000000000000000008152600160a060020a0380841660048301529151929850908e1691625e319c916024808201926020929091908290030181600087803b158015611c0657600080fd5b505af1158015611c1a573d6000803e3d6000fd5b505050506040513d6020811015611c3057600080fd5b5051604080517fbf7da6ba000000000000000000000000000000000000000000000000000000008152600160a060020a038981166004830152602482018490529151929750908d169163bf7da6ba9160448082019260009290919082900301818387803b158015611ca057600080fd5b505af1158015611cb4573d6000803e3d6000fd5b505060019098019750611b179050565b891515611cd057611f6b565b8b600160a060020a0316630337e3fb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611d0e57600080fd5b505af1158015611d22573d6000803e3d6000fd5b505050506040513d6020811015611d3857600080fd5b5051604080517f2630c12f0000000000000000000000000000000000000000000000000000000081529051919550600160a060020a038e1691632630c12f916004808201926020929091908290030181600087803b158015611d9957600080fd5b505af1158015611dad573d6000803e3d6000fd5b505050506040513d6020811015611dc357600080fd5b5051604080517fb9e1715b0000000000000000000000000000000000000000000000000000000081529051919450600160a060020a0385169163b9e1715b916004808201926020929091908290030181600087803b158015611e2457600080fd5b505af1158015611e38573d6000803e3d6000fd5b505050506040513d6020811015611e4e57600080fd5b5051604080517ff997fda70000000000000000000000000000000000000000000000000000000081529051919350600160a060020a0385169163f997fda7916004808201926020929091908290030181600087803b158015611eaf57600080fd5b505af1158015611ec3573d6000803e3d6000fd5b505050506040513d6020811015611ed957600080fd5b5051604080517f119b90cd000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152858116602483015280841660448301529151929350908d169163119b90cd9160648082019260009290919082900301818387803b158015611f5257600080fd5b505af1158015611f66573d6000803e3d6000fd5b505050505b505050505050505050505050565b60206040519081016040528060019060208202803883395091929150505600a165627a7a72305820cd272a18b92e8d173af6176f64cfb021ab179b3da9704c8ebb85eecd8f9c907a0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000052ae12abe5d8bd778bd5397f99ca900624cfadd4000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
-----Decoded View---------------
Arg [0] : _registry (address): 0x52Ae12ABe5D8BD778BD5397F99cA900624CfADD4
Arg [1] : _etherToken (address): 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000052ae12abe5d8bd778bd5397f99ca900624cfadd4
Arg [1] : 000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.