ETH Price: $2,066.67 (-2.86%)

Contract

0xd22693bf2a8Be6Cd1B44FCbC018A6E82db8eD874
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Rates54513252018-04-16 14:15:562888 days ago1523888156IN
0xd22693bf...2db8eD874
0 ETH0.0020754342
Transfer54154982018-04-10 13:17:202894 days ago1523366240IN
0xd22693bf...2db8eD874
0 ETH0.0027262541
Set Whitelist54083772018-04-09 9:11:582896 days ago1523265118IN
0xd22693bf...2db8eD874
0 ETH0.000046111
Set Whitelist53901412018-04-06 8:40:252899 days ago1523004025IN
0xd22693bf...2db8eD874
0 ETH0.000092232
Set Whitelist53899432018-04-06 7:46:042899 days ago1523000764IN
0xd22693bf...2db8eD874
0 ETH0.000046111
Set Whitelist53418062018-03-29 7:49:362907 days ago1522309776IN
0xd22693bf...2db8eD874
0 ETH0.000093153
Set Whitelist53418022018-03-29 7:48:262907 days ago1522309706IN
0xd22693bf...2db8eD874
0 ETH0.000093343
Transfer53373522018-03-28 13:43:322907 days ago1522244612IN
0xd22693bf...2db8eD874
0 ETH0.00333641
Transfer53373402018-03-28 13:40:052907 days ago1522244405IN
0xd22693bf...2db8eD874
0 ETH0.00395141
Transfer53372812018-03-28 13:26:252907 days ago1522243585IN
0xd22693bf...2db8eD874
0 ETH0.0009959341
Set Rates53245912018-03-26 10:01:102910 days ago1522058470IN
0xd22693bf...2db8eD874
0 ETH0.0020260141
Set Rates53245722018-03-26 9:56:532910 days ago1522058213IN
0xd22693bf...2db8eD874
0 ETH0.0020233941
Set Rates53245162018-03-26 9:42:272910 days ago1522057347IN
0xd22693bf...2db8eD874
0 ETH0.0020260141
Set Whitelist53243242018-03-26 8:58:502910 days ago1522054730IN
0xd22693bf...2db8eD874
0 ETH0.000092232
Transfer Ownersh...53113392018-03-24 5:34:162912 days ago1521869656IN
0xd22693bf...2db8eD874
0 ETH0.000031031
Transfer Role53062052018-03-23 8:53:512913 days ago1521795231IN
0xd22693bf...2db8eD874
0 ETH0.000146143

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HcftSale

Compiler Version
v0.4.20+commit.3155dd80

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-03-23
*/

pragma solidity ^0.4.0;

/**
 * @title Ownable
 * @dev Adds onlyOwner modifier. Subcontracts should implement checkOwner to check if caller is owner.
 */
contract Ownable {
    modifier onlyOwner() {
        checkOwner();
        _;
    }

    function checkOwner() internal;
}

/**
 * @title OwnableImpl
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract OwnableImpl is Ownable {
    address public owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    function OwnableImpl() public {
        owner = msg.sender;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    function checkOwner() internal {
        require(msg.sender == owner);
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) onlyOwner public {
        require(newOwner != address(0));
        OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
    event Pause();
    event Unpause();

    bool public paused = false;


    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     */
    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     */
    modifier whenPaused() {
        require(paused);
        _;
    }

    /**
     * @dev called by the owner to pause, triggers stopped state
     */
    function pause() onlyOwner whenNotPaused public {
        paused = true;
        Pause();
    }

    /**
     * @dev called by the owner to unpause, returns to normal state
     */
    function unpause() onlyOwner whenPaused public {
        paused = false;
        Unpause();
    }
}

/**
 * @title Read-only ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ReadOnlyToken {
    uint256 public totalSupply;
    function balanceOf(address who) public constant returns (uint256);
    function allowance(address owner, address spender) public constant returns (uint256);
}

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract Token is ReadOnlyToken {
  function transfer(address to, uint256 value) public returns (bool);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract MintableToken is Token {
    event Mint(address indexed to, uint256 amount);

    function mint(address _to, uint256 _amount) public returns (bool);
}

/**
 * @title Sale contract for Daonomic platform should implement this
 */
contract Sale {
    /**
     * @dev This event should be emitted when user buys something
     */
    event Purchase(address indexed buyer, address token, uint256 value, uint256 sold, uint256 bonus);
    /**
     * @dev Should be emitted if new payment method added
     */
    event RateAdd(address token);
    /**
     * @dev Should be emitted if payment method removed
     */
    event RateRemove(address token);

    /**
     * @dev Calculate rate for specified payment method
     */
    function getRate(address token) constant public returns (uint256);
    /**
     * @dev Calculate current bonus in tokens
     */
    function getBonus(uint256 sold) constant public returns (uint256);
}

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 * @dev this version copied from zeppelin-solidity, constant changed to pure
 */
library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

/**
 * @title Token represents some external value (for example, BTC)
 */
contract ExternalToken is Token {
    event Mint(address indexed to, uint256 value, bytes data);
    event Burn(address indexed burner, uint256 value, bytes data);

    function burn(uint256 _value, bytes _data) public;
}

/**
 * @dev This adapter helps to receive tokens. It has some subcontracts for different tokens:
 *   ERC20ReceiveAdapter - for receiving simple ERC20 tokens
 *   ERC223ReceiveAdapter - for receiving ERC223 tokens
 *   ReceiveApprovalAdapter - for receiving ERC20 tokens when token notifies receiver with receiveApproval
 *   EtherReceiveAdapter - for receiving ether (onReceive callback will be used). this is needed for handling ether like tokens
 *   CompatReceiveApproval - implements all these adapters
 */
contract ReceiveAdapter {

    /**
     * @dev Receive tokens from someone. Owner of the tokens should approve first
     */
    function onReceive(address _token, address _from, uint256 _value, bytes _data) internal;
}

/**
 * @dev Helps to receive ERC20-complaint tokens. Owner should call token.approve first
 */
contract ERC20ReceiveAdapter is ReceiveAdapter {
    function receive(address _token, uint256 _value, bytes _data) public {
        Token token = Token(_token);
        token.transferFrom(msg.sender, this, _value);
        onReceive(_token, msg.sender, _value, _data);
    }
}

/**
 * @title ERC223 TokenReceiver interface
 * @dev see https://github.com/ethereum/EIPs/issues/223
 */
contract TokenReceiver {
    function onTokenTransfer(address _from, uint256 _value, bytes _data) public;
}

/**
 * @dev Helps to receive ERC223-complaint tokens. ERC223 Token contract should notify receiver.
 */
contract ERC223ReceiveAdapter is TokenReceiver, ReceiveAdapter {
    function tokenFallback(address _from, uint256 _value, bytes _data) public {
        onReceive(msg.sender, _from, _value, _data);
    }

    function onTokenTransfer(address _from, uint256 _value, bytes _data) public {
        onReceive(msg.sender, _from, _value, _data);
    }
}

contract EtherReceiver {
	function receiveWithData(bytes _data) payable public;
}

contract EtherReceiveAdapter is EtherReceiver, ReceiveAdapter {
    function () payable public {
        receiveWithData("");
    }

    function receiveWithData(bytes _data) payable public {
        onReceive(address(0), msg.sender, msg.value, _data);
    }
}

/**
 * @dev This ReceiveAdapter supports all possible tokens
 */
contract CompatReceiveAdapter is ERC20ReceiveAdapter, ERC223ReceiveAdapter, EtherReceiveAdapter {

}

contract AbstractSale is Sale, CompatReceiveAdapter, Ownable {
    using SafeMath for uint256;

    event Withdraw(address token, address to, uint256 value);
    event Burn(address token, uint256 value, bytes data);

    function onReceive(address _token, address _from, uint256 _value, bytes _data) internal {
        uint256 sold = getSold(_token, _value);
        require(sold > 0);
        uint256 bonus = getBonus(sold);
        address buyer;
        if (_data.length == 20) {
            buyer = address(toBytes20(_data, 0));
        } else {
            require(_data.length == 0);
            buyer = _from;
        }
        checkPurchaseValid(buyer, sold, bonus);
        doPurchase(buyer, sold, bonus);
        Purchase(buyer, _token, _value, sold, bonus);
        onPurchase(buyer, _token, _value, sold, bonus);
    }

    function getSold(address _token, uint256 _value) constant public returns (uint256) {
        uint256 rate = getRate(_token);
        require(rate > 0);
        return _value.mul(rate).div(10**18);
    }

    function getBonus(uint256 sold) constant public returns (uint256);

    function getRate(address _token) constant public returns (uint256);

    function doPurchase(address buyer, uint256 sold, uint256 bonus) internal;

    function checkPurchaseValid(address /*buyer*/, uint256 /*sold*/, uint256 /*bonus*/) internal {

    }

    function onPurchase(address /*buyer*/, address /*token*/, uint256 /*value*/, uint256 /*sold*/, uint256 /*bonus*/) internal {

    }

    function toBytes20(bytes b, uint256 _start) pure internal returns (bytes20 result) {
        require(_start + 20 <= b.length);
        assembly {
            let from := add(_start, add(b, 0x20))
            result := mload(from)
        }
    }

    function withdrawEth(address _to, uint256 _value) onlyOwner public {
        withdraw(address(0), _to, _value);
    }

    function withdraw(address _token, address _to, uint256 _value) onlyOwner public {
        require(_to != address(0));
        verifyCanWithdraw(_token, _to, _value);
        if (_token == address(0)) {
            _to.transfer(_value);
        } else {
            Token(_token).transfer(_to, _value);
        }
        Withdraw(_token, _to, _value);
    }

    function verifyCanWithdraw(address token, address to, uint256 amount) internal;

    function burnWithData(address _token, uint256 _value, bytes _data) onlyOwner public {
        ExternalToken(_token).burn(_value, _data);
        Burn(_token, _value, _data);
    }
}

/**
 * @title This sale mints token when user sends accepted payments
 */
contract MintingSale is AbstractSale {
    MintableToken public token;

    function MintingSale(address _token) public {
        token = MintableToken(_token);
    }

    function doPurchase(address buyer, uint256 sold, uint256 bonus) internal {
        token.mint(buyer, sold.add(bonus));
    }

    function verifyCanWithdraw(address, address, uint256) internal {

    }
}

/**
 * @title Secured
 * @dev Adds only(role) modifier. Subcontracts should implement checkRole to check if caller is allowed to do action.
 */
contract Secured {
    modifier only(string role) {
        require(msg.sender == getRole(role));
        _;
    }

    function getRole(string role) constant public returns (address);
}

contract Whitelist is Secured {
	mapping(address => bool) whitelist;
	event WhitelistChange(address indexed addr, bool allow);

	function isInWhitelist(address addr) constant public returns (bool) {
		return whitelist[addr];
	}

	function setWhitelist(address addr, bool allow) only("operator") public {
		setWhitelistInternal(addr, allow);
	}

	function setWhitelistInternal(address addr, bool allow) internal {
		whitelist[addr] = allow;
		WhitelistChange(addr, allow);
	}
}

contract WhitelistSale is AbstractSale, Whitelist {
	function checkPurchaseValid(address buyer, uint256 sold, uint256 bonus) internal {
		super.checkPurchaseValid(buyer, sold, bonus);
		require(isInWhitelist(buyer));
	}
}

contract SecuredImpl is Ownable, Secured {
	mapping(string => address) users;
	event RoleTransferred(address indexed previousUser, address indexed newUser, string role);

	function getRole(string role) constant public returns (address) {
		return users[role];
	}

	function transferRole(string role, address to) onlyOwner public {
		require(to != address(0));
		RoleTransferred(users[role], to, role);
		users[role] = to;
	}
}

contract RatesChangingSale is AbstractSale {
	event RateChange(address token, uint256 rate);
	mapping (address => uint256) rates;

	function getRate(address _token) constant public returns (uint256) {
		return rates[_token];
	}

	function setRate(address _token, uint256 _rate) onlyOwner public {
		rates[_token] = _rate;
		RateChange(_token, _rate);
		if (_rate == 0) {
			RateRemove(_token);
		} else {
			RateAdd(_token);
		}
	}
}

contract HcftSale is OwnableImpl, SecuredImpl, MintingSale, WhitelistSale, RatesChangingSale {
	address public btcToken;

	function HcftSale(address _mintableToken, address _btcToken)
	MintingSale(_mintableToken) {
		btcToken = _btcToken;
		setRates(1000 * 10**18, 10000 * 10**28, 10**34);
	}

	function getSold(address _token, uint256 _value) constant public returns (uint256) {
		return super.getSold(_token, _value).div(99).mul(98);
	}

	function getBonus(uint256 /*bonus*/) constant public returns (uint256) {
		return 0;
	}

	function setRates(uint256 ethRate, uint256 btcRate, uint256 usdRate) onlyOwner public {
		setRate(address(0), ethRate);
		setRate(btcToken, btcRate);
		setRate(address(1), usdRate);
	}

	function transferTokenOwnership(address newOwner) onlyOwner public {
		OwnableImpl(token).transferOwnership(newOwner);
	}

	function pauseToken() onlyOwner public {
		Pausable(token).pause();
	}

	function unpauseToken() onlyOwner public {
		Pausable(token).unpause();
	}

	function withdrawBtc(bytes _to, uint256 _value) onlyOwner public {
		burnWithData(btcToken, _value, _to);
	}

	function transfer(address beneficiary, uint256 amount) onlyOwner public {
		emulatePurchase(beneficiary, address(10), 0, amount);
	}

	function emulatePurchase(address beneficiary, address paymentMethod, uint256 value, uint256 amount) onlyOwner public {
		setWhitelistInternal(beneficiary, true);
		doPurchase(beneficiary, amount, 0);
		Purchase(beneficiary, paymentMethod, value, amount, 0);
		onPurchase(beneficiary, paymentMethod, value, amount, 0);
	}
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"btcToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"isInWhitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"withdrawEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferTokenOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"receive","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_rate","type":"uint256"}],"name":"setRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pauseToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"bytes"},{"name":"_value","type":"uint256"}],"name":"withdrawBtc","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_token","type":"address"}],"name":"getRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"getBonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"role","type":"string"},{"name":"to","type":"address"}],"name":"transferRole","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpauseToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"allow","type":"bool"}],"name":"setWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_token","type":"address"},{"name":"_value","type":"uint256"}],"name":"getSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"role","type":"string"}],"name":"getRole","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"paymentMethod","type":"address"},{"name":"value","type":"uint256"},{"name":"amount","type":"uint256"}],"name":"emulatePurchase","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"burnWithData","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_data","type":"bytes"}],"name":"receiveWithData","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"onTokenTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"amount","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"ethRate","type":"uint256"},{"name":"btcRate","type":"uint256"},{"name":"usdRate","type":"uint256"}],"name":"setRates","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_mintableToken","type":"address"},{"name":"_btcToken","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"rate","type":"uint256"}],"name":"RateChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"allow","type":"bool"}],"name":"WhitelistChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousUser","type":"address"},{"indexed":true,"name":"newUser","type":"address"},{"indexed":false,"name":"role","type":"string"}],"name":"RoleTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"sold","type":"uint256"},{"indexed":false,"name":"bonus","type":"uint256"}],"name":"Purchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"}],"name":"RateAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"}],"name":"RateRemove","type":"event"}]

606060405234156200001057600080fd5b604051604080620015e2833981016040528080519190602001805160008054600160a060020a03338116600160a060020a0319928316179092556002805483881690831617905560058054928416929091169190911790559150620000ad9050683635c9adc5dea000006d04ee2d6d415b85acef81000000006e01ed09bead87c0378d8e640000000064010000000062000e6c620000b582021704565b505062000253565b620000cd6401000000006200116e6200012e82021704565b620000e86000846401000000006200076d6200014c82021704565b6005546200010e90600160a060020a0316836401000000006200076d6200014c82021704565b620001296001826401000000006200076d6200014c82021704565b505050565b60005433600160a060020a039081169116146200014a57600080fd5b565b620001646401000000006200116e6200012e82021704565b600160a060020a038216600090815260046020526040908190208290557ffa9eee6b142afc22a1af1f2aa5676c202fd1aa4138fde6a13484e6dc6b3f4ac1908390839051600160a060020a03909216825260208201526040908101905180910390a180151562000211577f42ae07c0efe4ecce5b414088bb0b3a5466396d6afa097b0d1d07188e78fae7b382604051600160a060020a03909116815260200160405180910390a16200024f565b7f7fa3995810e92a3f38bcfa9eb48e2e5b8eceb6ff181c6d57445f1126b0cd687382604051600160a060020a03909116815260200160405180910390a15b5050565b61137f80620002636000396000f30060606040526004361061013a5763ffffffff60e060020a600035041663074bc101811461015357806309fd8212146101825780631b9a91a4146101b557806321e6b53d146101d757806327d23b86146101f65780632bdb70971461025b5780632c3496271461027d5780633294ab001461029057806337cef791146102e35780634aa66b28146103145780634cfe62c71461032a57806350669a031461038657806353d6fd59146103995780636b8393dd146103bd5780636e9067fb146103df57806371560f801461043057806383e49c531461045b5780638da5cb5b146104c0578063949a9d59146104d3578063a4c0ed3614610519578063a9059cbb1461057e578063c0ee0b8a14610519578063d004f38b146105a0578063d9caed12146105bc578063f2fde38b146105e4578063fc0c546a14610603575b610151602060405190810160405260008152610616565b005b341561015e57600080fd5b610166610626565b604051600160a060020a03909116815260200160405180910390f35b341561018d57600080fd5b6101a1600160a060020a0360043516610635565b604051901515815260200160405180910390f35b34156101c057600080fd5b610151600160a060020a0360043516602435610653565b34156101e257600080fd5b610151600160a060020a036004351661066b565b341561020157600080fd5b61015160048035600160a060020a03169060248035919060649060443590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506106da95505050505050565b341561026657600080fd5b610151600160a060020a036004351660243561076d565b341561028857600080fd5b610151610861565b341561029b57600080fd5b61015160046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965050933593506108be92505050565b34156102ee57600080fd5b610302600160a060020a03600435166108dd565b60405190815260200160405180910390f35b341561031f57600080fd5b6103026004356108f8565b341561033557600080fd5b61015160046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965050509235600160a060020a031692506108fe915050565b341561039157600080fd5b610151610ac3565b34156103a457600080fd5b610151600160a060020a03600435166024351515610b0a565b34156103c857600080fd5b610302600160a060020a0360043516602435610b70565b34156103ea57600080fd5b61016660046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610ba595505050505050565b341561043b57600080fd5b610151600160a060020a0360043581169060243516604435606435610c1d565b341561046657600080fd5b61015160048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610cb695505050505050565b34156104cb57600080fd5b610166610e3b565b61015160046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061061695505050505050565b341561052457600080fd5b61015160048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610e4a95505050505050565b341561058957600080fd5b610151600160a060020a0360043516602435610e56565b34156105ab57600080fd5b610151600435602435604435610e6c565b34156105c757600080fd5b610151600160a060020a0360043581169060243516604435610ea0565b34156105ef57600080fd5b610151600160a060020a0360043516610fdc565b341561060e57600080fd5b610166611064565b6106236000333484611073565b50565b600554600160a060020a031681565b600160a060020a031660009081526003602052604090205460ff1690565b61065b61116e565b61066760008383610ea0565b5050565b61067361116e565b600254600160a060020a031663f2fde38b8260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156106c357600080fd5b6102c65a03f115156106d457600080fd5b50505050565b82600160a060020a0381166323b872dd33308660006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561074557600080fd5b6102c65a03f1151561075657600080fd5b50505060405180519050506106d484338585611073565b61077561116e565b600160a060020a038216600090815260046020526040908190208290557ffa9eee6b142afc22a1af1f2aa5676c202fd1aa4138fde6a13484e6dc6b3f4ac1908390839051600160a060020a03909216825260208201526040908101905180910390a1801515610820577f42ae07c0efe4ecce5b414088bb0b3a5466396d6afa097b0d1d07188e78fae7b382604051600160a060020a03909116815260200160405180910390a1610667565b7f7fa3995810e92a3f38bcfa9eb48e2e5b8eceb6ff181c6d57445f1126b0cd687382604051600160a060020a03909116815260200160405180910390a15050565b61086961116e565b600254600160a060020a0316638456cb596040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156108a857600080fd5b6102c65a03f115156108b957600080fd5b505050565b6108c661116e565b60055461066790600160a060020a03168284610cb6565b600160a060020a031660009081526004602052604090205490565b50600090565b61090661116e565b600160a060020a038116151561091b57600080fd5b80600160a060020a03166001836040518082805190602001908083835b602083106109575780518252601f199092019160209182019101610938565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405190819003902054600160a060020a03167ff1c91f9eb8acad0d142210b9d2a050d74e664d8a3603351ebea896aa758a75148460405160208082528190810183818151815260200191508051906020019080838360005b838110156109f35780820151838201526020016109db565b50505050905090810190601f168015610a205780820380516001836020036101000a031916815260200191505b509250505060405180910390a3806001836040518082805190602001908083835b60208310610a605780518252601f199092019160209182019101610a41565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051908190039020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555050565b610acb61116e565b600254600160a060020a0316633f4ba83a6040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156108a857600080fd5b60408051908101604052600881527f6f70657261746f720000000000000000000000000000000000000000000000006020820152610b4781610ba5565b600160a060020a031633600160a060020a0316141515610b6657600080fd5b6108b9838361118b565b6000610b9e6062610b926063610b8687876111ea565b9063ffffffff61122b16565b9063ffffffff61124216565b9392505050565b60006001826040518082805190602001908083835b60208310610bd95780518252601f199092019160209182019101610bba565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405190819003902054600160a060020a031692915050565b610c2561116e565b610c3084600161118b565b610c3c8482600061126d565b83600160a060020a03167f8f7a55179307cea51948432d653dbd53a23fedc388bcb3e04e311f8220d8786484848460006040518085600160a060020a0316600160a060020a0316815260200184815260200183815260200182815260200194505050505060405180910390a26106d48484848460006112fb565b610cbe61116e565b82600160a060020a031663fe9d930383836040518363ffffffff1660e060020a0281526004018083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610d24578082015183820152602001610d0c565b50505050905090810190601f168015610d515780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1515610d7057600080fd5b6102c65a03f11515610d8157600080fd5b5050507f8d38f5a0c1764ff1cca876ce8fe136163fddfce925659e6ad05437cfff6fd392838383604051600160a060020a03841681526020810183905260606040820181815290820183818151815260200191508051906020019080838360005b83811015610dfa578082015183820152602001610de2565b50505050905090810190601f168015610e275780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1505050565b600054600160a060020a031681565b6108b933848484611073565b610e5e61116e565b61066782600a600084610c1d565b610e7461116e565b610e7f60008461076d565b600554610e9590600160a060020a03168361076d565b6108b960018261076d565b610ea861116e565b600160a060020a0382161515610ebd57600080fd5b610ec88383836108b9565b600160a060020a0383161515610f0e57600160a060020a03821681156108fc0282604051600060405180830381858888f193505050501515610f0957600080fd5b610f87565b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610f6b57600080fd5b6102c65a03f11515610f7c57600080fd5b505050604051805150505b7f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b610fe461116e565b600160a060020a0381161515610ff957600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600254600160a060020a031681565b60008060006110828786610b70565b92506000831161109157600080fd5b61109a836108f8565b91508351601414156110c8576110b1846000611302565b6c01000000000000000000000000900490506110d7565b8351156110d457600080fd5b50845b6110e2818484611325565b6110ed81848461126d565b80600160a060020a03167f8f7a55179307cea51948432d653dbd53a23fedc388bcb3e04e311f8220d87864888786866040518085600160a060020a0316600160a060020a0316815260200184815260200183815260200182815260200194505050505060405180910390a261116581888786866112fb565b50505050505050565b60005433600160a060020a0390811691161461118957600080fd5b565b600160a060020a03821660008181526003602052604090819020805460ff19168415151790557f3f50d04114467f3ca25c50f1540e2864f8a852c0380bbbbb603ebfda10b5baf290839051901515815260200160405180910390a25050565b6000806111f6846108dd565b90506000811161120557600080fd5b611221670de0b6b3a7640000610b86858463ffffffff61124216565b91505b5092915050565b600080828481151561123957fe5b04949350505050565b6000808315156112555760009150611224565b5082820282848281151561126557fe5b0414610b9e57fe5b600254600160a060020a03166340c10f198461128f858563ffffffff61134416565b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156112db57600080fd5b6102c65a03f115156112ec57600080fd5b50505060405180515050505050565b5050505050565b6000825160148301111561131557600080fd5b6020830182018051949350505050565b6113308383836108b9565b61133983610635565b15156108b957600080fd5b600082820183811015610b9e57fe00a165627a7a723058200c465c28bacfa5666e5cc02b3b12898899a3abeaa71e6977df50a0a222f81f2d002900000000000000000000000044afba0928e2175cfa326bffd6632e43b4b1a8d7000000000000000000000000f876c67ce21a03a848dbae562d583296ee5a8449

Deployed Bytecode

0x60606040526004361061013a5763ffffffff60e060020a600035041663074bc101811461015357806309fd8212146101825780631b9a91a4146101b557806321e6b53d146101d757806327d23b86146101f65780632bdb70971461025b5780632c3496271461027d5780633294ab001461029057806337cef791146102e35780634aa66b28146103145780634cfe62c71461032a57806350669a031461038657806353d6fd59146103995780636b8393dd146103bd5780636e9067fb146103df57806371560f801461043057806383e49c531461045b5780638da5cb5b146104c0578063949a9d59146104d3578063a4c0ed3614610519578063a9059cbb1461057e578063c0ee0b8a14610519578063d004f38b146105a0578063d9caed12146105bc578063f2fde38b146105e4578063fc0c546a14610603575b610151602060405190810160405260008152610616565b005b341561015e57600080fd5b610166610626565b604051600160a060020a03909116815260200160405180910390f35b341561018d57600080fd5b6101a1600160a060020a0360043516610635565b604051901515815260200160405180910390f35b34156101c057600080fd5b610151600160a060020a0360043516602435610653565b34156101e257600080fd5b610151600160a060020a036004351661066b565b341561020157600080fd5b61015160048035600160a060020a03169060248035919060649060443590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506106da95505050505050565b341561026657600080fd5b610151600160a060020a036004351660243561076d565b341561028857600080fd5b610151610861565b341561029b57600080fd5b61015160046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965050933593506108be92505050565b34156102ee57600080fd5b610302600160a060020a03600435166108dd565b60405190815260200160405180910390f35b341561031f57600080fd5b6103026004356108f8565b341561033557600080fd5b61015160046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965050509235600160a060020a031692506108fe915050565b341561039157600080fd5b610151610ac3565b34156103a457600080fd5b610151600160a060020a03600435166024351515610b0a565b34156103c857600080fd5b610302600160a060020a0360043516602435610b70565b34156103ea57600080fd5b61016660046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610ba595505050505050565b341561043b57600080fd5b610151600160a060020a0360043581169060243516604435606435610c1d565b341561046657600080fd5b61015160048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610cb695505050505050565b34156104cb57600080fd5b610166610e3b565b61015160046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061061695505050505050565b341561052457600080fd5b61015160048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610e4a95505050505050565b341561058957600080fd5b610151600160a060020a0360043516602435610e56565b34156105ab57600080fd5b610151600435602435604435610e6c565b34156105c757600080fd5b610151600160a060020a0360043581169060243516604435610ea0565b34156105ef57600080fd5b610151600160a060020a0360043516610fdc565b341561060e57600080fd5b610166611064565b6106236000333484611073565b50565b600554600160a060020a031681565b600160a060020a031660009081526003602052604090205460ff1690565b61065b61116e565b61066760008383610ea0565b5050565b61067361116e565b600254600160a060020a031663f2fde38b8260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b15156106c357600080fd5b6102c65a03f115156106d457600080fd5b50505050565b82600160a060020a0381166323b872dd33308660006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561074557600080fd5b6102c65a03f1151561075657600080fd5b50505060405180519050506106d484338585611073565b61077561116e565b600160a060020a038216600090815260046020526040908190208290557ffa9eee6b142afc22a1af1f2aa5676c202fd1aa4138fde6a13484e6dc6b3f4ac1908390839051600160a060020a03909216825260208201526040908101905180910390a1801515610820577f42ae07c0efe4ecce5b414088bb0b3a5466396d6afa097b0d1d07188e78fae7b382604051600160a060020a03909116815260200160405180910390a1610667565b7f7fa3995810e92a3f38bcfa9eb48e2e5b8eceb6ff181c6d57445f1126b0cd687382604051600160a060020a03909116815260200160405180910390a15050565b61086961116e565b600254600160a060020a0316638456cb596040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156108a857600080fd5b6102c65a03f115156108b957600080fd5b505050565b6108c661116e565b60055461066790600160a060020a03168284610cb6565b600160a060020a031660009081526004602052604090205490565b50600090565b61090661116e565b600160a060020a038116151561091b57600080fd5b80600160a060020a03166001836040518082805190602001908083835b602083106109575780518252601f199092019160209182019101610938565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405190819003902054600160a060020a03167ff1c91f9eb8acad0d142210b9d2a050d74e664d8a3603351ebea896aa758a75148460405160208082528190810183818151815260200191508051906020019080838360005b838110156109f35780820151838201526020016109db565b50505050905090810190601f168015610a205780820380516001836020036101000a031916815260200191505b509250505060405180910390a3806001836040518082805190602001908083835b60208310610a605780518252601f199092019160209182019101610a41565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051908190039020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555050565b610acb61116e565b600254600160a060020a0316633f4ba83a6040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156108a857600080fd5b60408051908101604052600881527f6f70657261746f720000000000000000000000000000000000000000000000006020820152610b4781610ba5565b600160a060020a031633600160a060020a0316141515610b6657600080fd5b6108b9838361118b565b6000610b9e6062610b926063610b8687876111ea565b9063ffffffff61122b16565b9063ffffffff61124216565b9392505050565b60006001826040518082805190602001908083835b60208310610bd95780518252601f199092019160209182019101610bba565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405190819003902054600160a060020a031692915050565b610c2561116e565b610c3084600161118b565b610c3c8482600061126d565b83600160a060020a03167f8f7a55179307cea51948432d653dbd53a23fedc388bcb3e04e311f8220d8786484848460006040518085600160a060020a0316600160a060020a0316815260200184815260200183815260200182815260200194505050505060405180910390a26106d48484848460006112fb565b610cbe61116e565b82600160a060020a031663fe9d930383836040518363ffffffff1660e060020a0281526004018083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610d24578082015183820152602001610d0c565b50505050905090810190601f168015610d515780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1515610d7057600080fd5b6102c65a03f11515610d8157600080fd5b5050507f8d38f5a0c1764ff1cca876ce8fe136163fddfce925659e6ad05437cfff6fd392838383604051600160a060020a03841681526020810183905260606040820181815290820183818151815260200191508051906020019080838360005b83811015610dfa578082015183820152602001610de2565b50505050905090810190601f168015610e275780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1505050565b600054600160a060020a031681565b6108b933848484611073565b610e5e61116e565b61066782600a600084610c1d565b610e7461116e565b610e7f60008461076d565b600554610e9590600160a060020a03168361076d565b6108b960018261076d565b610ea861116e565b600160a060020a0382161515610ebd57600080fd5b610ec88383836108b9565b600160a060020a0383161515610f0e57600160a060020a03821681156108fc0282604051600060405180830381858888f193505050501515610f0957600080fd5b610f87565b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610f6b57600080fd5b6102c65a03f11515610f7c57600080fd5b505050604051805150505b7f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b610fe461116e565b600160a060020a0381161515610ff957600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600254600160a060020a031681565b60008060006110828786610b70565b92506000831161109157600080fd5b61109a836108f8565b91508351601414156110c8576110b1846000611302565b6c01000000000000000000000000900490506110d7565b8351156110d457600080fd5b50845b6110e2818484611325565b6110ed81848461126d565b80600160a060020a03167f8f7a55179307cea51948432d653dbd53a23fedc388bcb3e04e311f8220d87864888786866040518085600160a060020a0316600160a060020a0316815260200184815260200183815260200182815260200194505050505060405180910390a261116581888786866112fb565b50505050505050565b60005433600160a060020a0390811691161461118957600080fd5b565b600160a060020a03821660008181526003602052604090819020805460ff19168415151790557f3f50d04114467f3ca25c50f1540e2864f8a852c0380bbbbb603ebfda10b5baf290839051901515815260200160405180910390a25050565b6000806111f6846108dd565b90506000811161120557600080fd5b611221670de0b6b3a7640000610b86858463ffffffff61124216565b91505b5092915050565b600080828481151561123957fe5b04949350505050565b6000808315156112555760009150611224565b5082820282848281151561126557fe5b0414610b9e57fe5b600254600160a060020a03166340c10f198461128f858563ffffffff61134416565b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156112db57600080fd5b6102c65a03f115156112ec57600080fd5b50505060405180515050505050565b5050505050565b6000825160148301111561131557600080fd5b6020830182018051949350505050565b6113308383836108b9565b61133983610635565b15156108b957600080fd5b600082820183811015610b9e57fe00a165627a7a723058200c465c28bacfa5666e5cc02b3b12898899a3abeaa71e6977df50a0a222f81f2d0029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000044afba0928e2175cfa326bffd6632e43b4b1a8d7000000000000000000000000f876c67ce21a03a848dbae562d583296ee5a8449

-----Decoded View---------------
Arg [0] : _mintableToken (address): 0x44AfbA0928E2175Cfa326bffd6632e43b4B1A8D7
Arg [1] : _btcToken (address): 0xf876c67CE21a03A848dbaE562D583296Ee5A8449

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000044afba0928e2175cfa326bffd6632e43b4b1a8d7
Arg [1] : 000000000000000000000000f876c67ce21a03a848dbae562d583296ee5a8449


Swarm Source

bzzr://0c465c28bacfa5666e5cc02b3b12898899a3abeaa71e6977df50a0a222f81f2d

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.