Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 953 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Burn | 20711134 | 8 days ago | IN | 0 ETH | 0.00058989 | ||||
Burn | 20683465 | 11 days ago | IN | 0 ETH | 0.0007317 | ||||
Burn | 20668154 | 14 days ago | IN | 0 ETH | 0.00033706 | ||||
Burn | 20538311 | 32 days ago | IN | 0 ETH | 0.00068245 | ||||
Burn | 20530551 | 33 days ago | IN | 0 ETH | 0.00061086 | ||||
Burn | 20523741 | 34 days ago | IN | 0 ETH | 0.00030858 | ||||
Burn | 20515727 | 35 days ago | IN | 0 ETH | 0.00056919 | ||||
Burn | 20514458 | 35 days ago | IN | 0 ETH | 0.00167221 | ||||
Burn | 20509827 | 36 days ago | IN | 0 ETH | 0.0004913 | ||||
Burn | 20509824 | 36 days ago | IN | 0 ETH | 0.00046021 | ||||
Burn | 20503056 | 37 days ago | IN | 0 ETH | 0.00028964 | ||||
Add Mint Request | 20464522 | 42 days ago | IN | 0 ETH | 0.00254653 | ||||
Cancel Mint Requ... | 20464471 | 42 days ago | IN | 0 ETH | 0.00078237 | ||||
Add Mint Request | 20464008 | 42 days ago | IN | 0 ETH | 0.00273084 | ||||
Add Mint Request | 20458165 | 43 days ago | IN | 0 ETH | 0.00060749 | ||||
Burn | 20172934 | 83 days ago | IN | 0 ETH | 0.00138823 | ||||
Burn | 20012248 | 105 days ago | IN | 0 ETH | 0.00592034 | ||||
Add Mint Request | 19985477 | 109 days ago | IN | 0 ETH | 0.00470612 | ||||
Burn | 19916827 | 119 days ago | IN | 0 ETH | 0.00365799 | ||||
Burn | 19895870 | 121 days ago | IN | 0 ETH | 0.00109972 | ||||
Add Mint Request | 19477603 | 180 days ago | IN | 0 ETH | 0.01165279 | ||||
Burn | 19442178 | 185 days ago | IN | 0 ETH | 0.00973887 | ||||
Burn | 19426720 | 187 days ago | IN | 0 ETH | 0.01692543 | ||||
Add Mint Request | 19392582 | 192 days ago | IN | 0 ETH | 0.02162587 | ||||
Burn | 19335309 | 200 days ago | IN | 0 ETH | 0.01888261 |
Loading...
Loading
Contract Name:
Factory
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-11-24 */ pragma solidity 0.4.24; // File: openzeppelin-solidity/contracts/ownership/Ownable.sol /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to relinquish control of the contract. * @notice Renouncing to ownership will leave the contract without an owner. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. */ function renounceOwnership() public onlyOwner { emit OwnershipRenounced(owner); owner = address(0); } /** * @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) public onlyOwner { _transferOwnership(_newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function _transferOwnership(address _newOwner) internal { require(_newOwner != address(0)); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } } // File: openzeppelin-solidity/contracts/ownership/Claimable.sol /** * @title Claimable * @dev Extension for the Ownable contract, where the ownership needs to be claimed. * This allows the new owner to accept the transfer. */ contract Claimable is Ownable { address public pendingOwner; /** * @dev Modifier throws if called by any account other than the pendingOwner. */ modifier onlyPendingOwner() { require(msg.sender == pendingOwner); _; } /** * @dev Allows the current owner to set the pendingOwner address. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { pendingOwner = newOwner; } /** * @dev Allows the pendingOwner address to finalize the transfer. */ function claimOwnership() public onlyPendingOwner { emit OwnershipTransferred(owner, pendingOwner); owner = pendingOwner; pendingOwner = address(0); } } // File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * See https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address _who) public view returns (uint256); function transfer(address _to, uint256 _value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } // File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address _owner, address _spender) public view returns (uint256); function transferFrom(address _from, address _to, uint256 _value) public returns (bool); function approve(address _spender, uint256 _value) public returns (bool); event Approval( address indexed owner, address indexed spender, uint256 value ); } // File: openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { function safeTransfer( ERC20Basic _token, address _to, uint256 _value ) internal { require(_token.transfer(_to, _value)); } function safeTransferFrom( ERC20 _token, address _from, address _to, uint256 _value ) internal { require(_token.transferFrom(_from, _to, _value)); } function safeApprove( ERC20 _token, address _spender, uint256 _value ) internal { require(_token.approve(_spender, _value)); } } // File: openzeppelin-solidity/contracts/ownership/CanReclaimToken.sol /** * @title Contracts that should be able to recover tokens * @author SylTi * @dev This allow a contract to recover any ERC20 token received in a contract by transferring the balance to the contract owner. * This will prevent any accidental loss of tokens. */ contract CanReclaimToken is Ownable { using SafeERC20 for ERC20Basic; /** * @dev Reclaim all ERC20Basic compatible tokens * @param _token ERC20Basic The address of the token contract */ function reclaimToken(ERC20Basic _token) external onlyOwner { uint256 balance = _token.balanceOf(this); _token.safeTransfer(owner, balance); } } // File: contracts/utils/OwnableContract.sol // empty block is used as this contract just inherits others. contract OwnableContract is CanReclaimToken, Claimable { } /* solhint-disable-line no-empty-blocks */ // File: contracts/controller/ControllerInterface.sol interface ControllerInterface { function mint(address to, uint amount) external returns (bool); function burn(uint value) external returns (bool); function isCustodian(address addr) external view returns (bool); function isMerchant(address addr) external view returns (bool); function getWBTC() external view returns (ERC20); } // File: contracts/factory/Factory.sol contract Factory is OwnableContract { enum RequestStatus {PENDING, CANCELED, APPROVED, REJECTED} struct Request { address requester; // sender of the request. uint amount; // amount of wbtc to mint/burn. string btcDepositAddress; // custodian's btc address in mint, merchant's btc address in burn. string btcTxid; // bitcoin txid for sending/redeeming btc in the mint/burn process. uint nonce; // serial number allocated for each request. uint timestamp; // time of the request creation. RequestStatus status; // status of the request. } ControllerInterface public controller; // mapping between merchant to the corresponding custodian deposit address, used in the minting process. // by using a different deposit address per merchant the custodian can identify which merchant deposited. mapping(address=>string) public custodianBtcDepositAddress; // mapping between merchant to the its deposit address where btc should be moved to, used in the burning process. mapping(address=>string) public merchantBtcDepositAddress; // mapping between a mint request hash and the corresponding request nonce. mapping(bytes32=>uint) public mintRequestNonce; // mapping between a burn request hash and the corresponding request nonce. mapping(bytes32=>uint) public burnRequestNonce; Request[] public mintRequests; Request[] public burnRequests; constructor(ControllerInterface _controller) public { require(_controller != address(0), "invalid _controller address"); controller = _controller; owner = _controller; } modifier onlyMerchant() { require(controller.isMerchant(msg.sender), "sender not a merchant."); _; } modifier onlyCustodian() { require(controller.isCustodian(msg.sender), "sender not a custodian."); _; } event CustodianBtcDepositAddressSet(address indexed merchant, address indexed sender, string btcDepositAddress); function setCustodianBtcDepositAddress( address merchant, string btcDepositAddress ) external onlyCustodian returns (bool) { require(merchant != 0, "invalid merchant address"); require(controller.isMerchant(merchant), "merchant address is not a real merchant."); require(!isEmptyString(btcDepositAddress), "invalid btc deposit address"); custodianBtcDepositAddress[merchant] = btcDepositAddress; emit CustodianBtcDepositAddressSet(merchant, msg.sender, btcDepositAddress); return true; } event MerchantBtcDepositAddressSet(address indexed merchant, string btcDepositAddress); function setMerchantBtcDepositAddress(string btcDepositAddress) external onlyMerchant returns (bool) { require(!isEmptyString(btcDepositAddress), "invalid btc deposit address"); merchantBtcDepositAddress[msg.sender] = btcDepositAddress; emit MerchantBtcDepositAddressSet(msg.sender, btcDepositAddress); return true; } event MintRequestAdd( uint indexed nonce, address indexed requester, uint amount, string btcDepositAddress, string btcTxid, uint timestamp, bytes32 requestHash ); function addMintRequest( uint amount, string btcTxid, string btcDepositAddress ) external onlyMerchant returns (bool) { require(!isEmptyString(btcDepositAddress), "invalid btc deposit address"); require(compareStrings(btcDepositAddress, custodianBtcDepositAddress[msg.sender]), "wrong btc deposit address"); uint nonce = mintRequests.length; uint timestamp = getTimestamp(); Request memory request = Request({ requester: msg.sender, amount: amount, btcDepositAddress: btcDepositAddress, btcTxid: btcTxid, nonce: nonce, timestamp: timestamp, status: RequestStatus.PENDING }); bytes32 requestHash = calcRequestHash(request); mintRequestNonce[requestHash] = nonce; mintRequests.push(request); emit MintRequestAdd(nonce, msg.sender, amount, btcDepositAddress, btcTxid, timestamp, requestHash); return true; } event MintRequestCancel(uint indexed nonce, address indexed requester, bytes32 requestHash); function cancelMintRequest(bytes32 requestHash) external onlyMerchant returns (bool) { uint nonce; Request memory request; (nonce, request) = getPendingMintRequest(requestHash); require(msg.sender == request.requester, "cancel sender is different than pending request initiator"); mintRequests[nonce].status = RequestStatus.CANCELED; emit MintRequestCancel(nonce, msg.sender, requestHash); return true; } event MintConfirmed( uint indexed nonce, address indexed requester, uint amount, string btcDepositAddress, string btcTxid, uint timestamp, bytes32 requestHash ); function confirmMintRequest(bytes32 requestHash) external onlyCustodian returns (bool) { uint nonce; Request memory request; (nonce, request) = getPendingMintRequest(requestHash); mintRequests[nonce].status = RequestStatus.APPROVED; require(controller.mint(request.requester, request.amount), "mint failed"); emit MintConfirmed( request.nonce, request.requester, request.amount, request.btcDepositAddress, request.btcTxid, request.timestamp, requestHash ); return true; } event MintRejected( uint indexed nonce, address indexed requester, uint amount, string btcDepositAddress, string btcTxid, uint timestamp, bytes32 requestHash ); function rejectMintRequest(bytes32 requestHash) external onlyCustodian returns (bool) { uint nonce; Request memory request; (nonce, request) = getPendingMintRequest(requestHash); mintRequests[nonce].status = RequestStatus.REJECTED; emit MintRejected( request.nonce, request.requester, request.amount, request.btcDepositAddress, request.btcTxid, request.timestamp, requestHash ); return true; } event Burned( uint indexed nonce, address indexed requester, uint amount, string btcDepositAddress, uint timestamp, bytes32 requestHash ); function burn(uint amount) external onlyMerchant returns (bool) { string memory btcDepositAddress = merchantBtcDepositAddress[msg.sender]; require(!isEmptyString(btcDepositAddress), "merchant btc deposit address was not set"); uint nonce = burnRequests.length; uint timestamp = getTimestamp(); // set txid as empty since it is not known yet. string memory btcTxid = ""; Request memory request = Request({ requester: msg.sender, amount: amount, btcDepositAddress: btcDepositAddress, btcTxid: btcTxid, nonce: nonce, timestamp: timestamp, status: RequestStatus.PENDING }); bytes32 requestHash = calcRequestHash(request); burnRequestNonce[requestHash] = nonce; burnRequests.push(request); require(controller.getWBTC().transferFrom(msg.sender, controller, amount), "trasnfer tokens to burn failed"); require(controller.burn(amount), "burn failed"); emit Burned(nonce, msg.sender, amount, btcDepositAddress, timestamp, requestHash); return true; } event BurnConfirmed( uint indexed nonce, address indexed requester, uint amount, string btcDepositAddress, string btcTxid, uint timestamp, bytes32 inputRequestHash ); function confirmBurnRequest(bytes32 requestHash, string btcTxid) external onlyCustodian returns (bool) { uint nonce; Request memory request; (nonce, request) = getPendingBurnRequest(requestHash); burnRequests[nonce].btcTxid = btcTxid; burnRequests[nonce].status = RequestStatus.APPROVED; burnRequestNonce[calcRequestHash(burnRequests[nonce])] = nonce; emit BurnConfirmed( request.nonce, request.requester, request.amount, request.btcDepositAddress, btcTxid, request.timestamp, requestHash ); return true; } function getMintRequest(uint nonce) external view returns ( uint requestNonce, address requester, uint amount, string btcDepositAddress, string btcTxid, uint timestamp, string status, bytes32 requestHash ) { Request memory request = mintRequests[nonce]; string memory statusString = getStatusString(request.status); requestNonce = request.nonce; requester = request.requester; amount = request.amount; btcDepositAddress = request.btcDepositAddress; btcTxid = request.btcTxid; timestamp = request.timestamp; status = statusString; requestHash = calcRequestHash(request); } function getMintRequestsLength() external view returns (uint length) { return mintRequests.length; } function getBurnRequest(uint nonce) external view returns ( uint requestNonce, address requester, uint amount, string btcDepositAddress, string btcTxid, uint timestamp, string status, bytes32 requestHash ) { Request storage request = burnRequests[nonce]; string memory statusString = getStatusString(request.status); requestNonce = request.nonce; requester = request.requester; amount = request.amount; btcDepositAddress = request.btcDepositAddress; btcTxid = request.btcTxid; timestamp = request.timestamp; status = statusString; requestHash = calcRequestHash(request); } function getBurnRequestsLength() external view returns (uint length) { return burnRequests.length; } function getTimestamp() internal view returns (uint) { // timestamp is only used for data maintaining purpose, it is not relied on for critical logic. return block.timestamp; // solhint-disable-line not-rely-on-time } function getPendingMintRequest(bytes32 requestHash) internal view returns (uint nonce, Request memory request) { require(requestHash != 0, "request hash is 0"); nonce = mintRequestNonce[requestHash]; request = mintRequests[nonce]; validatePendingRequest(request, requestHash); } function getPendingBurnRequest(bytes32 requestHash) internal view returns (uint nonce, Request memory request) { require(requestHash != 0, "request hash is 0"); nonce = burnRequestNonce[requestHash]; request = burnRequests[nonce]; validatePendingRequest(request, requestHash); } function validatePendingRequest(Request memory request, bytes32 requestHash) internal pure { require(request.status == RequestStatus.PENDING, "request is not pending"); require(requestHash == calcRequestHash(request), "given request hash does not match a pending request"); } function calcRequestHash(Request request) internal pure returns (bytes32) { return keccak256(abi.encode( request.requester, request.amount, request.btcDepositAddress, request.btcTxid, request.nonce, request.timestamp )); } function compareStrings (string a, string b) internal pure returns (bool) { return (keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b))); } function isEmptyString (string a) internal pure returns (bool) { return (compareStrings(a, "")); } function getStatusString(RequestStatus status) internal pure returns (string) { if (status == RequestStatus.PENDING) { return "pending"; } else if (status == RequestStatus.CANCELED) { return "canceled"; } else if (status == RequestStatus.APPROVED) { return "approved"; } else if (status == RequestStatus.REJECTED) { return "rejected"; } else { // this fallback can never be reached. return "unknown"; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"requestHash","type":"bytes32"}],"name":"confirmMintRequest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMintRequestsLength","outputs":[{"name":"length","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"btcDepositAddress","type":"string"}],"name":"setMerchantBtcDepositAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"mintRequests","outputs":[{"name":"requester","type":"address"},{"name":"amount","type":"uint256"},{"name":"btcDepositAddress","type":"string"},{"name":"btcTxid","type":"string"},{"name":"nonce","type":"uint256"},{"name":"timestamp","type":"uint256"},{"name":"status","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"burn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"burnRequests","outputs":[{"name":"requester","type":"address"},{"name":"amount","type":"uint256"},{"name":"btcDepositAddress","type":"string"},{"name":"btcTxid","type":"string"},{"name":"nonce","type":"uint256"},{"name":"timestamp","type":"uint256"},{"name":"status","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"merchant","type":"address"},{"name":"btcDepositAddress","type":"string"}],"name":"setCustodianBtcDepositAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getBurnRequestsLength","outputs":[{"name":"length","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"custodianBtcDepositAddress","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"requestHash","type":"bytes32"}],"name":"rejectMintRequest","outputs":[{"name":"","type":"bool"}],"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":"amount","type":"uint256"},{"name":"btcTxid","type":"string"},{"name":"btcDepositAddress","type":"string"}],"name":"addMintRequest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"requestHash","type":"bytes32"},{"name":"btcTxid","type":"string"}],"name":"confirmBurnRequest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"mintRequestNonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"nonce","type":"uint256"}],"name":"getMintRequest","outputs":[{"name":"requestNonce","type":"uint256"},{"name":"requester","type":"address"},{"name":"amount","type":"uint256"},{"name":"btcDepositAddress","type":"string"},{"name":"btcTxid","type":"string"},{"name":"timestamp","type":"uint256"},{"name":"status","type":"string"},{"name":"requestHash","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"requestHash","type":"bytes32"}],"name":"cancelMintRequest","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"burnRequestNonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"merchantBtcDepositAddress","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"nonce","type":"uint256"}],"name":"getBurnRequest","outputs":[{"name":"requestNonce","type":"uint256"},{"name":"requester","type":"address"},{"name":"amount","type":"uint256"},{"name":"btcDepositAddress","type":"string"},{"name":"btcTxid","type":"string"},{"name":"timestamp","type":"uint256"},{"name":"status","type":"string"},{"name":"requestHash","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"controller","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_controller","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"merchant","type":"address"},{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"btcDepositAddress","type":"string"}],"name":"CustodianBtcDepositAddressSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"merchant","type":"address"},{"indexed":false,"name":"btcDepositAddress","type":"string"}],"name":"MerchantBtcDepositAddressSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"nonce","type":"uint256"},{"indexed":true,"name":"requester","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"btcDepositAddress","type":"string"},{"indexed":false,"name":"btcTxid","type":"string"},{"indexed":false,"name":"timestamp","type":"uint256"},{"indexed":false,"name":"requestHash","type":"bytes32"}],"name":"MintRequestAdd","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"nonce","type":"uint256"},{"indexed":true,"name":"requester","type":"address"},{"indexed":false,"name":"requestHash","type":"bytes32"}],"name":"MintRequestCancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"nonce","type":"uint256"},{"indexed":true,"name":"requester","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"btcDepositAddress","type":"string"},{"indexed":false,"name":"btcTxid","type":"string"},{"indexed":false,"name":"timestamp","type":"uint256"},{"indexed":false,"name":"requestHash","type":"bytes32"}],"name":"MintConfirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"nonce","type":"uint256"},{"indexed":true,"name":"requester","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"btcDepositAddress","type":"string"},{"indexed":false,"name":"btcTxid","type":"string"},{"indexed":false,"name":"timestamp","type":"uint256"},{"indexed":false,"name":"requestHash","type":"bytes32"}],"name":"MintRejected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"nonce","type":"uint256"},{"indexed":true,"name":"requester","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"btcDepositAddress","type":"string"},{"indexed":false,"name":"timestamp","type":"uint256"},{"indexed":false,"name":"requestHash","type":"bytes32"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"nonce","type":"uint256"},{"indexed":true,"name":"requester","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"btcDepositAddress","type":"string"},{"indexed":false,"name":"btcTxid","type":"string"},{"indexed":false,"name":"timestamp","type":"uint256"},{"indexed":false,"name":"inputRequestHash","type":"bytes32"}],"name":"BurnConfirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516020806137e0833981016040525160008054600160a060020a03191633179055600160a060020a03811615156100ab57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e76616c6964205f636f6e74726f6c6c657220616464726573730000000000604482015290519081900360640190fd5b60028054600160a060020a03909216600160a060020a03199283168117909155600080549092161790556136fc806100e46000396000f30060806040526004361061012f5763ffffffff60e060020a60003504166317ffc32081146101345780632bf90baa14610157578063311104f314610183578063321d0f7e146101aa578063424e6575146101ca57806342966c68146103035780634e71e0c81461031b5780636406c10c1461033057806368c4d91914610348578063715018a61461037557806372f69a721461038a5780637840fc8e1461039f578063861f92a8146104355780638da5cb5b1461044d5780638e24a7641461047e5780639355f0a4146104ae5780639ad4b86b146104d2578063b69b22d8146104ea578063c06e2d2414610683578063c72551be1461069b578063d25e178d146106b3578063e21c40c0146106d4578063e30c3978146106ec578063f2fde38b14610701578063f77c479114610722575b600080fd5b34801561014057600080fd5b50610155600160a060020a0360043516610737565b005b34801561016357600080fd5b5061016f600435610803565b604080519115158252519081900360200190f35b34801561018f57600080fd5b50610198610b5c565b60408051918252519081900360200190f35b3480156101b657600080fd5b5061016f6004803560248101910135610b63565b3480156101d657600080fd5b506101e2600435610d2e565b6040518088600160a060020a0316600160a060020a03168152602001878152602001806020018060200186815260200185815260200184600381111561022457fe5b60ff168152602001838103835288818151815260200191508051906020019080838360005b83811015610261578181015183820152602001610249565b50505050905090810190601f16801561028e5780820380516001836020036101000a031916815260200191505b50838103825287518152875160209182019189019080838360005b838110156102c15781810151838201526020016102a9565b50505050905090810190601f1680156102ee5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34801561030f57600080fd5b5061016f600435610e9e565b34801561032757600080fd5b5061015561154f565b34801561033c57600080fd5b506101e26004356115d7565b34801561035457600080fd5b5061016f60048035600160a060020a031690602480359081019101356115e5565b34801561038157600080fd5b5061015561191e565b34801561039657600080fd5b5061019861198a565b3480156103ab57600080fd5b506103c0600160a060020a0360043516611990565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103fa5781810151838201526020016103e2565b50505050905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044157600080fd5b5061016f600435611a2b565b34801561045957600080fd5b50610462611be5565b60408051600160a060020a039092168252519081900360200190f35b34801561048a57600080fd5b5061016f600480359060248035808201929081013591604435908101910135611bf4565b3480156104ba57600080fd5b5061016f60048035906024803590810191013561210d565b3480156104de57600080fd5b50610198600435612527565b3480156104f657600080fd5b50610502600435612539565b6040518089815260200188600160a060020a0316600160a060020a031681526020018781526020018060200180602001868152602001806020018560001916600019168152602001848103845289818151815260200191508051906020019080838360005b8381101561057f578181015183820152602001610567565b50505050905090810190601f1680156105ac5780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b838110156105df5781810151838201526020016105c7565b50505050905090810190601f16801561060c5780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b8381101561063f578181015183820152602001610627565b50505050905090810190601f16801561066c5780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390f35b34801561068f57600080fd5b5061016f600435612750565b3480156106a757600080fd5b5061019860043561292e565b3480156106bf57600080fd5b506103c0600160a060020a0360043516612940565b3480156106e057600080fd5b506105026004356129a8565b3480156106f857600080fd5b50610462612bdd565b34801561070d57600080fd5b50610155600160a060020a0360043516612bec565b34801561072e57600080fd5b50610462612c32565b60008054600160a060020a0316331461074f57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b1580156107b057600080fd5b505af11580156107c4573d6000803e3d6000fd5b505050506040513d60208110156107da57600080fd5b50516000549091506107ff90600160a060020a0384811691168363ffffffff612c4116565b5050565b60008061080e613539565b6002546040805160e260020a630d7203230281523360048201529051600160a060020a03909216916335c80c8c916024808201926020929091908290030181600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b505050506040513d602081101561088857600080fd5b505115156108ce576040805160e560020a62461bcd02815260206004820152601760248201526000805160206136b1833981519152604482015290519081900360640190fd5b6108d784612ce0565b60078054929450909250600291849081106108ee57fe5b60009182526020909120600660079092020101805460ff1916600183600381111561091557fe5b02179055506002548151602080840151604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a03948516600482015260248101929092525192909316926340c10f1992604480830193928290030181600087803b15801561098d57600080fd5b505af11580156109a1573d6000803e3d6000fd5b505050506040513d60208110156109b757600080fd5b50511515610a0f576040805160e560020a62461bcd02815260206004820152600b60248201527f6d696e74206661696c6564000000000000000000000000000000000000000000604482015290519081900360640190fd5b8060000151600160a060020a031681608001517f051f4ba27061b0e6dc829669a7baa8bba9cf7f6cd2f95e1f0bdd9c22126d8b218360200151846040015185606001518660a001518a6040518086815260200180602001806020018581526020018460001916600019168152602001838103835287818151815260200191508051906020019080838360005b83811015610ab3578181015183820152602001610a9b565b50505050905090810190601f168015610ae05780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015610b13578181015183820152602001610afb565b50505050905090810190601f168015610b405780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a35060019392505050565b6007545b90565b6002546040805160e060020a631a2f71670281523360048201529051600092600160a060020a031691631a2f716791602480830192602092919082900301818787803b158015610bb257600080fd5b505af1158015610bc6573d6000803e3d6000fd5b505050506040513d6020811015610bdc57600080fd5b50511515610c22576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613691833981519152604482015290519081900360640190fd5b610c5b83838080601f01602080910402602001604051908101604052809392919081815260200183838082843750612f0c945050505050565b15610cb0576040805160e560020a62461bcd02815260206004820152601b60248201527f696e76616c696420627463206465706f73697420616464726573730000000000604482015290519081900360640190fd5b336000908152600460205260409020610cca90848461358a565b5033600160a060020a03167fec7032a7f06b5d29ee5a6a1e73ab4e4dc80890c75a5104e3c075584e42775c2984846040518080602001828103825284848281815260200192508082843760405192018290039550909350505050a250600192915050565b6007805482908110610d3c57fe5b6000918252602091829020600791909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f8101889004880285018801909252818452600160a060020a0390941696509094919291830182828015610ded5780601f10610dc257610100808354040283529160200191610ded565b820191906000526020600020905b815481529060010190602001808311610dd057829003601f168201915b5050505060038301805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152949594935090830182828015610e7d5780601f10610e5257610100808354040283529160200191610e7d565b820191906000526020600020905b815481529060010190602001808311610e6057829003601f168201915b50505050600483015460058401546006909401549293909290915060ff1687565b600060606000806060610eaf613539565b6002546040805160e060020a631a2f71670281523360048201529051600092600160a060020a031691631a2f716791602480830192602092919082900301818787803b158015610efe57600080fd5b505af1158015610f12573d6000803e3d6000fd5b505050506040513d6020811015610f2857600080fd5b50511515610f6e576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613691833981519152604482015290519081900360640190fd5b3360009081526004602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156110025780601f10610fd757610100808354040283529160200191611002565b820191906000526020600020905b815481529060010190602001808311610fe557829003601f168201915b5050505050955061101286612f0c565b1561108d576040805160e560020a62461bcd02815260206004820152602860248201527f6d65726368616e7420627463206465706f73697420616464726573732077617360448201527f206e6f7420736574000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600854945061109a612f30565b60408051602081810183526000808352835160e0810185523381529182018d90529281018a9052606081018290526080810189905260a08101849052929650945060c082015291506110eb82612f34565b6000818152600660209081526040808320899055600880546001810180835591909452865160079094027ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee381018054600160a060020a0390961673ffffffffffffffffffffffffffffffffffffffff19909616959095178555878401517ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee482015591870151805195965090948794936111c8937ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee501920190613608565b50606082015180516111e4916003840191602090910190613608565b506080820151600482015560a0820151600582015560c082015160068201805460ff1916600183600381111561121657fe5b0217905550505050600260009054906101000a9004600160a060020a0316600160a060020a0316635eebb1ce6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561127157600080fd5b505af1158015611285573d6000803e3d6000fd5b505050506040513d602081101561129b57600080fd5b5051600254604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a039283166024820152604481018c9052905191909216916323b872dd9160648083019260209291908290030181600087803b15801561131257600080fd5b505af1158015611326573d6000803e3d6000fd5b505050506040513d602081101561133c57600080fd5b50511515611394576040805160e560020a62461bcd02815260206004820152601e60248201527f747261736e66657220746f6b656e7320746f206275726e206661696c65640000604482015290519081900360640190fd5b600254604080517f42966c68000000000000000000000000000000000000000000000000000000008152600481018b90529051600160a060020a03909216916342966c68916024808201926020929091908290030181600087803b1580156113fb57600080fd5b505af115801561140f573d6000803e3d6000fd5b505050506040513d602081101561142557600080fd5b5051151561147d576040805160e560020a62461bcd02815260206004820152600b60248201527f6275726e206661696c6564000000000000000000000000000000000000000000604482015290519081900360640190fd5b33600160a060020a0316857f865e64c3fa22a0daee479fc02875d3e97d581930b9679232344d4d5dcce6a7b28a89888660405180858152602001806020018481526020018360001916600019168152602001828103825285818151815260200191508051906020019080838360005b838110156115045781810151838201526020016114ec565b50505050905090810190601f1680156115315780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a3506001979650505050505050565b600154600160a060020a0316331461156657600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b6008805482908110610d3c57fe5b6002546040805160e260020a630d7203230281523360048201529051600092600160a060020a0316916335c80c8c91602480830192602092919082900301818787803b15801561163457600080fd5b505af1158015611648573d6000803e3d6000fd5b505050506040513d602081101561165e57600080fd5b505115156116a4576040805160e560020a62461bcd02815260206004820152601760248201526000805160206136b1833981519152604482015290519081900360640190fd5b600160a060020a0384161515611704576040805160e560020a62461bcd02815260206004820152601860248201527f696e76616c6964206d65726368616e7420616464726573730000000000000000604482015290519081900360640190fd5b6002546040805160e060020a631a2f7167028152600160a060020a03878116600483015291519190921691631a2f71679160248083019260209291908290030181600087803b15801561175657600080fd5b505af115801561176a573d6000803e3d6000fd5b505050506040513d602081101561178057600080fd5b505115156117fe576040805160e560020a62461bcd02815260206004820152602860248201527f6d65726368616e742061646472657373206973206e6f742061207265616c206d60448201527f65726368616e742e000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61183783838080601f01602080910402602001604051908101604052809392919081815260200183838082843750612f0c945050505050565b1561188c576040805160e560020a62461bcd02815260206004820152601b60248201527f696e76616c696420627463206465706f73697420616464726573730000000000604482015290519081900360640190fd5b600160a060020a03841660009081526003602052604090206118af90848461358a565b5033600160a060020a031684600160a060020a03167fa1cea79438a06b74491693be087a2035e62acbe738749fc0ba7fc87df2eed93985856040518080602001828103825284848281815260200192508082843760405192018290039550909350505050a35060019392505050565b600054600160a060020a0316331461193557600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60085490565b60036020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015611a235780601f106119f857610100808354040283529160200191611a23565b820191906000526020600020905b815481529060010190602001808311611a0657829003601f168201915b505050505081565b600080611a36613539565b6002546040805160e260020a630d7203230281523360048201529051600160a060020a03909216916335c80c8c916024808201926020929091908290030181600087803b158015611a8657600080fd5b505af1158015611a9a573d6000803e3d6000fd5b505050506040513d6020811015611ab057600080fd5b50511515611af6576040805160e560020a62461bcd02815260206004820152601760248201526000805160206136b1833981519152604482015290519081900360640190fd5b611aff84612ce0565b6007805492945090925060039184908110611b1657fe5b60009182526020909120600660079092020101805460ff19166001836003811115611b3d57fe5b02179055508060000151600160a060020a031681608001517fdadc06f5b98131083e96b856c044184efd23ae2e797a876fd80aa5dae4f724558360200151846040015185606001518660a001518a60405180868152602001806020018060200185815260200184600019166000191681526020018381038352878181518152602001915080519060200190808383600083811015610ab3578181015183820152602001610a9b565b600054600160a060020a031681565b6000806000611c01613539565b6002546040805160e060020a631a2f71670281523360048201529051600092600160a060020a031691631a2f716791602480830192602092919082900301818787803b158015611c5057600080fd5b505af1158015611c64573d6000803e3d6000fd5b505050506040513d6020811015611c7a57600080fd5b50511515611cc0576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613691833981519152604482015290519081900360640190fd5b611cf987878080601f01602080910402602001604051908101604052809392919081815260200183838082843750612f0c945050505050565b15611d4e576040805160e560020a62461bcd02815260206004820152601b60248201527f696e76616c696420627463206465706f73697420616464726573730000000000604482015290519081900360640190fd5b611e2187878080601f0160208091040260200160405190810160405280939291908181526020018383808284375050336000908152600360209081526040918290208054835160026001831615610100026000190190921691909104601f8101849004840282018401909452838152965094509092508401905082828015611e175780601f10611dec57610100808354040283529160200191611e17565b820191906000526020600020905b815481529060010190602001808311611dfa57829003601f168201915b50505050506130ca565b1515611e77576040805160e560020a62461bcd02815260206004820152601960248201527f77726f6e6720627463206465706f736974206164647265737300000000000000604482015290519081900360640190fd5b6007549350611e84612f30565b925060e06040519081016040528033600160a060020a031681526020018b815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505081526020018a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375050509284525050506020810186905260408101859052606001600090529150611f3282612f34565b6000818152600560209081526040808320889055600780546001810180835594829052875191027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018054600160a060020a0390931673ffffffffffffffffffffffffffffffffffffffff19909316929092178255878401517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68982015591870151805195965093948794919361200d937fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a01920190613608565b5060608201518051612029916003840191602090910190613608565b506080820151600482015560a0820151600582015560c082015160068201805460ff1916600183600381111561205b57fe5b021790555050505033600160a060020a0316847f09e00024b3e14e42d4e78c05bf370a34c2e4ce4027dad38abafdb1bf49da432f8c8a8a8e8e8a89604051808881526020018060200180602001858152602001846000191660001916815260200183810383528989828181526020019250808284379091018481038352878152602001905087878082843760405192018290039b50909950505050505050505050a35060019998505050505050505050565b600080612118613539565b6002546040805160e260020a630d7203230281523360048201529051600160a060020a03909216916335c80c8c916024808201926020929091908290030181600087803b15801561216857600080fd5b505af115801561217c573d6000803e3d6000fd5b505050506040513d602081101561219257600080fd5b505115156121d8576040805160e560020a62461bcd02815260206004820152601760248201526000805160206136b1833981519152604482015290519081900360640190fd5b6121e186613257565b809250819350505084846008848154811015156121fa57fe5b9060005260206000209060070201600301919061221892919061358a565b50600260088381548110151561222a57fe5b60009182526020909120600660079092020101805460ff1916600183600381111561225157fe5b0217905550816006600061240b60088681548110151561226d57fe5b60009182526020918290206040805160e0810182526007939093029091018054600160a060020a03168352600180820154848601526002808301805485516101009482161594909402600019011691909104601f810187900487028301870185528083529495929493860193919290919083018282801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529382019392918301828280156123c35780601f10612398576101008083540402835291602001916123c3565b820191906000526020600020905b8154815290600101906020018083116123a657829003601f168201915b50505091835250506004820154602082015260058201546040820152600682015460609091019060ff1660038111156123f857fe5b600381111561240357fe5b905250612f34565b60001916600019168152602001908152602001600020819055508060000151600160a060020a031681608001517f1949e77206780c38f7c6487c926f8a51280fcdbf63397a01a3428dbfccd2b09f8360200151846040015189898760a001518d6040518087815260200180602001806020018581526020018460001916600019168152602001838103835288818151815260200191508051906020019080838360005b838110156124c65781810151838201526020016124ae565b50505050905090810190601f1680156124f35780820380516001836020036101000a031916815260200191505b50838103825286815260200187878082843760405192018290039a509098505050505050505050a350600195945050505050565b60056020526000908152604090205481565b600080600060608060006060600061254f613539565b606060078b81548110151561256057fe5b60009182526020918290206040805160e0810182526007939093029091018054600160a060020a03168352600180820154848601526002808301805485516101009482161594909402600019011691909104601f81018790048702830187018552808352949592949386019391929091908301828280156126225780601f106125f757610100808354040283529160200191612622565b820191906000526020600020905b81548152906001019060200180831161260557829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529382019392918301828280156126b65780601f1061268b576101008083540402835291602001916126b6565b820191906000526020600020905b81548152906001019060200180831161269957829003601f168201915b50505091835250506004820154602082015260058201546040820152600682015460609091019060ff1660038111156126eb57fe5b60038111156126f657fe5b8152505091506127098260c001516132d9565b905081608001519950816000015198508160200151975081604001519650816060015195508160a00151945080935061274182612f34565b92505050919395975091939597565b60008061275b613539565b6002546040805160e060020a631a2f71670281523360048201529051600160a060020a0390921691631a2f7167916024808201926020929091908290030181600087803b1580156127ab57600080fd5b505af11580156127bf573d6000803e3d6000fd5b505050506040513d60208110156127d557600080fd5b5051151561281b576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613691833981519152604482015290519081900360640190fd5b61282484612ce0565b80519193509150600160a060020a031633146128b0576040805160e560020a62461bcd02815260206004820152603960248201527f63616e63656c2073656e64657220697320646966666572656e74207468616e2060448201527f70656e64696e67207265717565737420696e69746961746f7200000000000000606482015290519081900360840190fd5b60016007838154811015156128c157fe5b60009182526020909120600660079092020101805460ff191660018360038111156128e857fe5b0217905550604080518581529051339184917fb419f275eebfa354bbab2709955ee0c0e25ca95fae50a8e3672c5e3d9c931f589181900360200190a35060019392505050565b60066020526000908152604090205481565b60046020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015611a235780601f106119f857610100808354040283529160200191611a23565b600080600060608060006060600080606060088b8154811015156129c857fe5b6000918252602090912060079091020160068101549092506129ec9060ff166132d9565b9050816004015499508160000160009054906101000a9004600160a060020a0316985081600101549750816002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612aae5780601f10612a8357610100808354040283529160200191612aae565b820191906000526020600020905b815481529060010190602001808311612a9157829003601f168201915b5050505060038401805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152949b50919250830182828015612b3e5780601f10612b1357610100808354040283529160200191612b3e565b820191906000526020600020905b815481529060010190602001808311612b2157829003601f168201915b5050505060058401546040805160e0810182528654600160a060020a031681526001808801546020808401919091526002808a01805486516101009582161595909502600019011691909104601f81018390048302840183018652808452979d50949b5096995089966127419692955088949386019391929083018282801561232f5780601f106123045761010080835404028352916020019161232f565b600154600160a060020a031681565b600054600160a060020a03163314612c0357600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600254600160a060020a031681565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015612ca457600080fd5b505af1158015612cb8573d6000803e3d6000fd5b505050506040513d6020811015612cce57600080fd5b50511515612cdb57600080fd5b505050565b6000612cea613539565b821515612d41576040805160e560020a62461bcd02815260206004820152601160248201527f7265717565737420686173682069732030000000000000000000000000000000604482015290519081900360640190fd5b600083815260056020526040902054600780549193509083908110612d6257fe5b60009182526020918290206040805160e0810182526007939093029091018054600160a060020a03168352600180820154848601526002808301805485516101009482161594909402600019011691909104601f8101879004870283018701855280835294959294938601939192909190830182828015612e245780601f10612df957610100808354040283529160200191612e24565b820191906000526020600020905b815481529060010190602001808311612e0757829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152938201939291830182828015612eb85780601f10612e8d57610100808354040283529160200191612eb8565b820191906000526020600020905b815481529060010190602001808311612e9b57829003601f168201915b50505091835250506004820154602082015260058201546040820152600682015460609091019060ff166003811115612eed57fe5b6003811115612ef857fe5b9052509050612f07818461344d565b915091565b6000612f288260206040519081016040528060008152506130ca565b90505b919050565b4290565b6000816000015182602001518360400151846060015185608001518660a001516040516020018087600160a060020a0316600160a060020a031681526020018681526020018060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b83811015612fc2578181015183820152602001612faa565b50505050905090810190601f168015612fef5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561302257818101518382015260200161300a565b50505050905090810190601f16801561304f5780820380516001836020036101000a031916815260200191505b50985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083106130985780518252601f199092019160209182019101613079565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b6000816040516020018082805190602001908083835b602083106130ff5780518252601f1990920191602091820191016130e0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106131625780518252601f199092019160209182019101613143565b51815160209384036101000a60001901801990921691161790526040519190930181900381208851909550889450908301928392508401908083835b602083106131bd5780518252601f19909201916020918201910161319e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106132205780518252601f199092019160209182019101613201565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120939093149695505050505050565b6000613261613539565b8215156132b8576040805160e560020a62461bcd02815260206004820152601160248201527f7265717565737420686173682069732030000000000000000000000000000000604482015290519081900360640190fd5b600083815260066020526040902054600880549193509083908110612d6257fe5b606060008260038111156132e957fe5b1415613329575060408051808201909152600781527f70656e64696e67000000000000000000000000000000000000000000000000006020820152612f2b565b600182600381111561333757fe5b1415613377575060408051808201909152600881527f63616e63656c65640000000000000000000000000000000000000000000000006020820152612f2b565b600282600381111561338557fe5b14156133c5575060408051808201909152600881527f617070726f7665640000000000000000000000000000000000000000000000006020820152612f2b565b60038260038111156133d357fe5b1415613413575060408051808201909152600881527f72656a65637465640000000000000000000000000000000000000000000000006020820152612f2b565b5060408051808201909152600781527f756e6b6e6f776e000000000000000000000000000000000000000000000000006020820152612f2b565b60008260c00151600381111561345f57fe5b146134b4576040805160e560020a62461bcd02815260206004820152601660248201527f72657175657374206973206e6f742070656e64696e6700000000000000000000604482015290519081900360640190fd5b6134bd82612f34565b81146107ff576040805160e560020a62461bcd02815260206004820152603360248201527f676976656e2072657175657374206861736820646f6573206e6f74206d61746360448201527f6820612070656e64696e67207265717565737400000000000000000000000000606482015290519081900360840190fd5b60e0604051908101604052806000600160a060020a0316815260200160008152602001606081526020016060815260200160008152602001600081526020016000600381111561358557fe5b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106135cb5782800160ff198235161785556135f8565b828001600101855582156135f8579182015b828111156135f85782358255916020019190600101906135dd565b50613604929150613676565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061364957805160ff19168380011785556135f8565b828001600101855582156135f8579182015b828111156135f857825182559160200191906001019061365b565b610b6091905b80821115613604576000815560010161367c560073656e646572206e6f742061206d65726368616e742e0000000000000000000073656e646572206e6f74206120637573746f6469616e2e000000000000000000a165627a7a72305820b0338d43bfb4717e2a4fd01cd472082587b04b41ff45fca666860ac3fdfc7f140029000000000000000000000000ca06411bd7a7296d7dbdd0050dfc846e95febeb7
Deployed Bytecode
0x60806040526004361061012f5763ffffffff60e060020a60003504166317ffc32081146101345780632bf90baa14610157578063311104f314610183578063321d0f7e146101aa578063424e6575146101ca57806342966c68146103035780634e71e0c81461031b5780636406c10c1461033057806368c4d91914610348578063715018a61461037557806372f69a721461038a5780637840fc8e1461039f578063861f92a8146104355780638da5cb5b1461044d5780638e24a7641461047e5780639355f0a4146104ae5780639ad4b86b146104d2578063b69b22d8146104ea578063c06e2d2414610683578063c72551be1461069b578063d25e178d146106b3578063e21c40c0146106d4578063e30c3978146106ec578063f2fde38b14610701578063f77c479114610722575b600080fd5b34801561014057600080fd5b50610155600160a060020a0360043516610737565b005b34801561016357600080fd5b5061016f600435610803565b604080519115158252519081900360200190f35b34801561018f57600080fd5b50610198610b5c565b60408051918252519081900360200190f35b3480156101b657600080fd5b5061016f6004803560248101910135610b63565b3480156101d657600080fd5b506101e2600435610d2e565b6040518088600160a060020a0316600160a060020a03168152602001878152602001806020018060200186815260200185815260200184600381111561022457fe5b60ff168152602001838103835288818151815260200191508051906020019080838360005b83811015610261578181015183820152602001610249565b50505050905090810190601f16801561028e5780820380516001836020036101000a031916815260200191505b50838103825287518152875160209182019189019080838360005b838110156102c15781810151838201526020016102a9565b50505050905090810190601f1680156102ee5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34801561030f57600080fd5b5061016f600435610e9e565b34801561032757600080fd5b5061015561154f565b34801561033c57600080fd5b506101e26004356115d7565b34801561035457600080fd5b5061016f60048035600160a060020a031690602480359081019101356115e5565b34801561038157600080fd5b5061015561191e565b34801561039657600080fd5b5061019861198a565b3480156103ab57600080fd5b506103c0600160a060020a0360043516611990565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103fa5781810151838201526020016103e2565b50505050905090810190601f1680156104275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044157600080fd5b5061016f600435611a2b565b34801561045957600080fd5b50610462611be5565b60408051600160a060020a039092168252519081900360200190f35b34801561048a57600080fd5b5061016f600480359060248035808201929081013591604435908101910135611bf4565b3480156104ba57600080fd5b5061016f60048035906024803590810191013561210d565b3480156104de57600080fd5b50610198600435612527565b3480156104f657600080fd5b50610502600435612539565b6040518089815260200188600160a060020a0316600160a060020a031681526020018781526020018060200180602001868152602001806020018560001916600019168152602001848103845289818151815260200191508051906020019080838360005b8381101561057f578181015183820152602001610567565b50505050905090810190601f1680156105ac5780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b838110156105df5781810151838201526020016105c7565b50505050905090810190601f16801561060c5780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b8381101561063f578181015183820152602001610627565b50505050905090810190601f16801561066c5780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390f35b34801561068f57600080fd5b5061016f600435612750565b3480156106a757600080fd5b5061019860043561292e565b3480156106bf57600080fd5b506103c0600160a060020a0360043516612940565b3480156106e057600080fd5b506105026004356129a8565b3480156106f857600080fd5b50610462612bdd565b34801561070d57600080fd5b50610155600160a060020a0360043516612bec565b34801561072e57600080fd5b50610462612c32565b60008054600160a060020a0316331461074f57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b1580156107b057600080fd5b505af11580156107c4573d6000803e3d6000fd5b505050506040513d60208110156107da57600080fd5b50516000549091506107ff90600160a060020a0384811691168363ffffffff612c4116565b5050565b60008061080e613539565b6002546040805160e260020a630d7203230281523360048201529051600160a060020a03909216916335c80c8c916024808201926020929091908290030181600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b505050506040513d602081101561088857600080fd5b505115156108ce576040805160e560020a62461bcd02815260206004820152601760248201526000805160206136b1833981519152604482015290519081900360640190fd5b6108d784612ce0565b60078054929450909250600291849081106108ee57fe5b60009182526020909120600660079092020101805460ff1916600183600381111561091557fe5b02179055506002548151602080840151604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a03948516600482015260248101929092525192909316926340c10f1992604480830193928290030181600087803b15801561098d57600080fd5b505af11580156109a1573d6000803e3d6000fd5b505050506040513d60208110156109b757600080fd5b50511515610a0f576040805160e560020a62461bcd02815260206004820152600b60248201527f6d696e74206661696c6564000000000000000000000000000000000000000000604482015290519081900360640190fd5b8060000151600160a060020a031681608001517f051f4ba27061b0e6dc829669a7baa8bba9cf7f6cd2f95e1f0bdd9c22126d8b218360200151846040015185606001518660a001518a6040518086815260200180602001806020018581526020018460001916600019168152602001838103835287818151815260200191508051906020019080838360005b83811015610ab3578181015183820152602001610a9b565b50505050905090810190601f168015610ae05780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015610b13578181015183820152602001610afb565b50505050905090810190601f168015610b405780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a35060019392505050565b6007545b90565b6002546040805160e060020a631a2f71670281523360048201529051600092600160a060020a031691631a2f716791602480830192602092919082900301818787803b158015610bb257600080fd5b505af1158015610bc6573d6000803e3d6000fd5b505050506040513d6020811015610bdc57600080fd5b50511515610c22576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613691833981519152604482015290519081900360640190fd5b610c5b83838080601f01602080910402602001604051908101604052809392919081815260200183838082843750612f0c945050505050565b15610cb0576040805160e560020a62461bcd02815260206004820152601b60248201527f696e76616c696420627463206465706f73697420616464726573730000000000604482015290519081900360640190fd5b336000908152600460205260409020610cca90848461358a565b5033600160a060020a03167fec7032a7f06b5d29ee5a6a1e73ab4e4dc80890c75a5104e3c075584e42775c2984846040518080602001828103825284848281815260200192508082843760405192018290039550909350505050a250600192915050565b6007805482908110610d3c57fe5b6000918252602091829020600791909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f8101889004880285018801909252818452600160a060020a0390941696509094919291830182828015610ded5780601f10610dc257610100808354040283529160200191610ded565b820191906000526020600020905b815481529060010190602001808311610dd057829003601f168201915b5050505060038301805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152949594935090830182828015610e7d5780601f10610e5257610100808354040283529160200191610e7d565b820191906000526020600020905b815481529060010190602001808311610e6057829003601f168201915b50505050600483015460058401546006909401549293909290915060ff1687565b600060606000806060610eaf613539565b6002546040805160e060020a631a2f71670281523360048201529051600092600160a060020a031691631a2f716791602480830192602092919082900301818787803b158015610efe57600080fd5b505af1158015610f12573d6000803e3d6000fd5b505050506040513d6020811015610f2857600080fd5b50511515610f6e576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613691833981519152604482015290519081900360640190fd5b3360009081526004602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156110025780601f10610fd757610100808354040283529160200191611002565b820191906000526020600020905b815481529060010190602001808311610fe557829003601f168201915b5050505050955061101286612f0c565b1561108d576040805160e560020a62461bcd02815260206004820152602860248201527f6d65726368616e7420627463206465706f73697420616464726573732077617360448201527f206e6f7420736574000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600854945061109a612f30565b60408051602081810183526000808352835160e0810185523381529182018d90529281018a9052606081018290526080810189905260a08101849052929650945060c082015291506110eb82612f34565b6000818152600660209081526040808320899055600880546001810180835591909452865160079094027ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee381018054600160a060020a0390961673ffffffffffffffffffffffffffffffffffffffff19909616959095178555878401517ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee482015591870151805195965090948794936111c8937ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee501920190613608565b50606082015180516111e4916003840191602090910190613608565b506080820151600482015560a0820151600582015560c082015160068201805460ff1916600183600381111561121657fe5b0217905550505050600260009054906101000a9004600160a060020a0316600160a060020a0316635eebb1ce6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561127157600080fd5b505af1158015611285573d6000803e3d6000fd5b505050506040513d602081101561129b57600080fd5b5051600254604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a039283166024820152604481018c9052905191909216916323b872dd9160648083019260209291908290030181600087803b15801561131257600080fd5b505af1158015611326573d6000803e3d6000fd5b505050506040513d602081101561133c57600080fd5b50511515611394576040805160e560020a62461bcd02815260206004820152601e60248201527f747261736e66657220746f6b656e7320746f206275726e206661696c65640000604482015290519081900360640190fd5b600254604080517f42966c68000000000000000000000000000000000000000000000000000000008152600481018b90529051600160a060020a03909216916342966c68916024808201926020929091908290030181600087803b1580156113fb57600080fd5b505af115801561140f573d6000803e3d6000fd5b505050506040513d602081101561142557600080fd5b5051151561147d576040805160e560020a62461bcd02815260206004820152600b60248201527f6275726e206661696c6564000000000000000000000000000000000000000000604482015290519081900360640190fd5b33600160a060020a0316857f865e64c3fa22a0daee479fc02875d3e97d581930b9679232344d4d5dcce6a7b28a89888660405180858152602001806020018481526020018360001916600019168152602001828103825285818151815260200191508051906020019080838360005b838110156115045781810151838201526020016114ec565b50505050905090810190601f1680156115315780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a3506001979650505050505050565b600154600160a060020a0316331461156657600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b6008805482908110610d3c57fe5b6002546040805160e260020a630d7203230281523360048201529051600092600160a060020a0316916335c80c8c91602480830192602092919082900301818787803b15801561163457600080fd5b505af1158015611648573d6000803e3d6000fd5b505050506040513d602081101561165e57600080fd5b505115156116a4576040805160e560020a62461bcd02815260206004820152601760248201526000805160206136b1833981519152604482015290519081900360640190fd5b600160a060020a0384161515611704576040805160e560020a62461bcd02815260206004820152601860248201527f696e76616c6964206d65726368616e7420616464726573730000000000000000604482015290519081900360640190fd5b6002546040805160e060020a631a2f7167028152600160a060020a03878116600483015291519190921691631a2f71679160248083019260209291908290030181600087803b15801561175657600080fd5b505af115801561176a573d6000803e3d6000fd5b505050506040513d602081101561178057600080fd5b505115156117fe576040805160e560020a62461bcd02815260206004820152602860248201527f6d65726368616e742061646472657373206973206e6f742061207265616c206d60448201527f65726368616e742e000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b61183783838080601f01602080910402602001604051908101604052809392919081815260200183838082843750612f0c945050505050565b1561188c576040805160e560020a62461bcd02815260206004820152601b60248201527f696e76616c696420627463206465706f73697420616464726573730000000000604482015290519081900360640190fd5b600160a060020a03841660009081526003602052604090206118af90848461358a565b5033600160a060020a031684600160a060020a03167fa1cea79438a06b74491693be087a2035e62acbe738749fc0ba7fc87df2eed93985856040518080602001828103825284848281815260200192508082843760405192018290039550909350505050a35060019392505050565b600054600160a060020a0316331461193557600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60085490565b60036020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015611a235780601f106119f857610100808354040283529160200191611a23565b820191906000526020600020905b815481529060010190602001808311611a0657829003601f168201915b505050505081565b600080611a36613539565b6002546040805160e260020a630d7203230281523360048201529051600160a060020a03909216916335c80c8c916024808201926020929091908290030181600087803b158015611a8657600080fd5b505af1158015611a9a573d6000803e3d6000fd5b505050506040513d6020811015611ab057600080fd5b50511515611af6576040805160e560020a62461bcd02815260206004820152601760248201526000805160206136b1833981519152604482015290519081900360640190fd5b611aff84612ce0565b6007805492945090925060039184908110611b1657fe5b60009182526020909120600660079092020101805460ff19166001836003811115611b3d57fe5b02179055508060000151600160a060020a031681608001517fdadc06f5b98131083e96b856c044184efd23ae2e797a876fd80aa5dae4f724558360200151846040015185606001518660a001518a60405180868152602001806020018060200185815260200184600019166000191681526020018381038352878181518152602001915080519060200190808383600083811015610ab3578181015183820152602001610a9b565b600054600160a060020a031681565b6000806000611c01613539565b6002546040805160e060020a631a2f71670281523360048201529051600092600160a060020a031691631a2f716791602480830192602092919082900301818787803b158015611c5057600080fd5b505af1158015611c64573d6000803e3d6000fd5b505050506040513d6020811015611c7a57600080fd5b50511515611cc0576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613691833981519152604482015290519081900360640190fd5b611cf987878080601f01602080910402602001604051908101604052809392919081815260200183838082843750612f0c945050505050565b15611d4e576040805160e560020a62461bcd02815260206004820152601b60248201527f696e76616c696420627463206465706f73697420616464726573730000000000604482015290519081900360640190fd5b611e2187878080601f0160208091040260200160405190810160405280939291908181526020018383808284375050336000908152600360209081526040918290208054835160026001831615610100026000190190921691909104601f8101849004840282018401909452838152965094509092508401905082828015611e175780601f10611dec57610100808354040283529160200191611e17565b820191906000526020600020905b815481529060010190602001808311611dfa57829003601f168201915b50505050506130ca565b1515611e77576040805160e560020a62461bcd02815260206004820152601960248201527f77726f6e6720627463206465706f736974206164647265737300000000000000604482015290519081900360640190fd5b6007549350611e84612f30565b925060e06040519081016040528033600160a060020a031681526020018b815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505081526020018a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375050509284525050506020810186905260408101859052606001600090529150611f3282612f34565b6000818152600560209081526040808320889055600780546001810180835594829052875191027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68881018054600160a060020a0390931673ffffffffffffffffffffffffffffffffffffffff19909316929092178255878401517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68982015591870151805195965093948794919361200d937fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a01920190613608565b5060608201518051612029916003840191602090910190613608565b506080820151600482015560a0820151600582015560c082015160068201805460ff1916600183600381111561205b57fe5b021790555050505033600160a060020a0316847f09e00024b3e14e42d4e78c05bf370a34c2e4ce4027dad38abafdb1bf49da432f8c8a8a8e8e8a89604051808881526020018060200180602001858152602001846000191660001916815260200183810383528989828181526020019250808284379091018481038352878152602001905087878082843760405192018290039b50909950505050505050505050a35060019998505050505050505050565b600080612118613539565b6002546040805160e260020a630d7203230281523360048201529051600160a060020a03909216916335c80c8c916024808201926020929091908290030181600087803b15801561216857600080fd5b505af115801561217c573d6000803e3d6000fd5b505050506040513d602081101561219257600080fd5b505115156121d8576040805160e560020a62461bcd02815260206004820152601760248201526000805160206136b1833981519152604482015290519081900360640190fd5b6121e186613257565b809250819350505084846008848154811015156121fa57fe5b9060005260206000209060070201600301919061221892919061358a565b50600260088381548110151561222a57fe5b60009182526020909120600660079092020101805460ff1916600183600381111561225157fe5b0217905550816006600061240b60088681548110151561226d57fe5b60009182526020918290206040805160e0810182526007939093029091018054600160a060020a03168352600180820154848601526002808301805485516101009482161594909402600019011691909104601f810187900487028301870185528083529495929493860193919290919083018282801561232f5780601f106123045761010080835404028352916020019161232f565b820191906000526020600020905b81548152906001019060200180831161231257829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529382019392918301828280156123c35780601f10612398576101008083540402835291602001916123c3565b820191906000526020600020905b8154815290600101906020018083116123a657829003601f168201915b50505091835250506004820154602082015260058201546040820152600682015460609091019060ff1660038111156123f857fe5b600381111561240357fe5b905250612f34565b60001916600019168152602001908152602001600020819055508060000151600160a060020a031681608001517f1949e77206780c38f7c6487c926f8a51280fcdbf63397a01a3428dbfccd2b09f8360200151846040015189898760a001518d6040518087815260200180602001806020018581526020018460001916600019168152602001838103835288818151815260200191508051906020019080838360005b838110156124c65781810151838201526020016124ae565b50505050905090810190601f1680156124f35780820380516001836020036101000a031916815260200191505b50838103825286815260200187878082843760405192018290039a509098505050505050505050a350600195945050505050565b60056020526000908152604090205481565b600080600060608060006060600061254f613539565b606060078b81548110151561256057fe5b60009182526020918290206040805160e0810182526007939093029091018054600160a060020a03168352600180820154848601526002808301805485516101009482161594909402600019011691909104601f81018790048702830187018552808352949592949386019391929091908301828280156126225780601f106125f757610100808354040283529160200191612622565b820191906000526020600020905b81548152906001019060200180831161260557829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529382019392918301828280156126b65780601f1061268b576101008083540402835291602001916126b6565b820191906000526020600020905b81548152906001019060200180831161269957829003601f168201915b50505091835250506004820154602082015260058201546040820152600682015460609091019060ff1660038111156126eb57fe5b60038111156126f657fe5b8152505091506127098260c001516132d9565b905081608001519950816000015198508160200151975081604001519650816060015195508160a00151945080935061274182612f34565b92505050919395975091939597565b60008061275b613539565b6002546040805160e060020a631a2f71670281523360048201529051600160a060020a0390921691631a2f7167916024808201926020929091908290030181600087803b1580156127ab57600080fd5b505af11580156127bf573d6000803e3d6000fd5b505050506040513d60208110156127d557600080fd5b5051151561281b576040805160e560020a62461bcd0281526020600482015260166024820152600080516020613691833981519152604482015290519081900360640190fd5b61282484612ce0565b80519193509150600160a060020a031633146128b0576040805160e560020a62461bcd02815260206004820152603960248201527f63616e63656c2073656e64657220697320646966666572656e74207468616e2060448201527f70656e64696e67207265717565737420696e69746961746f7200000000000000606482015290519081900360840190fd5b60016007838154811015156128c157fe5b60009182526020909120600660079092020101805460ff191660018360038111156128e857fe5b0217905550604080518581529051339184917fb419f275eebfa354bbab2709955ee0c0e25ca95fae50a8e3672c5e3d9c931f589181900360200190a35060019392505050565b60066020526000908152604090205481565b60046020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015611a235780601f106119f857610100808354040283529160200191611a23565b600080600060608060006060600080606060088b8154811015156129c857fe5b6000918252602090912060079091020160068101549092506129ec9060ff166132d9565b9050816004015499508160000160009054906101000a9004600160a060020a0316985081600101549750816002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612aae5780601f10612a8357610100808354040283529160200191612aae565b820191906000526020600020905b815481529060010190602001808311612a9157829003601f168201915b5050505060038401805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152949b50919250830182828015612b3e5780601f10612b1357610100808354040283529160200191612b3e565b820191906000526020600020905b815481529060010190602001808311612b2157829003601f168201915b5050505060058401546040805160e0810182528654600160a060020a031681526001808801546020808401919091526002808a01805486516101009582161595909502600019011691909104601f81018390048302840183018652808452979d50949b5096995089966127419692955088949386019391929083018282801561232f5780601f106123045761010080835404028352916020019161232f565b600154600160a060020a031681565b600054600160a060020a03163314612c0357600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600254600160a060020a031681565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015612ca457600080fd5b505af1158015612cb8573d6000803e3d6000fd5b505050506040513d6020811015612cce57600080fd5b50511515612cdb57600080fd5b505050565b6000612cea613539565b821515612d41576040805160e560020a62461bcd02815260206004820152601160248201527f7265717565737420686173682069732030000000000000000000000000000000604482015290519081900360640190fd5b600083815260056020526040902054600780549193509083908110612d6257fe5b60009182526020918290206040805160e0810182526007939093029091018054600160a060020a03168352600180820154848601526002808301805485516101009482161594909402600019011691909104601f8101879004870283018701855280835294959294938601939192909190830182828015612e245780601f10612df957610100808354040283529160200191612e24565b820191906000526020600020905b815481529060010190602001808311612e0757829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152938201939291830182828015612eb85780601f10612e8d57610100808354040283529160200191612eb8565b820191906000526020600020905b815481529060010190602001808311612e9b57829003601f168201915b50505091835250506004820154602082015260058201546040820152600682015460609091019060ff166003811115612eed57fe5b6003811115612ef857fe5b9052509050612f07818461344d565b915091565b6000612f288260206040519081016040528060008152506130ca565b90505b919050565b4290565b6000816000015182602001518360400151846060015185608001518660a001516040516020018087600160a060020a0316600160a060020a031681526020018681526020018060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b83811015612fc2578181015183820152602001612faa565b50505050905090810190601f168015612fef5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b8381101561302257818101518382015260200161300a565b50505050905090810190601f16801561304f5780820380516001836020036101000a031916815260200191505b50985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083106130985780518252601f199092019160209182019101613079565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912095945050505050565b6000816040516020018082805190602001908083835b602083106130ff5780518252601f1990920191602091820191016130e0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106131625780518252601f199092019160209182019101613143565b51815160209384036101000a60001901801990921691161790526040519190930181900381208851909550889450908301928392508401908083835b602083106131bd5780518252601f19909201916020918201910161319e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106132205780518252601f199092019160209182019101613201565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120939093149695505050505050565b6000613261613539565b8215156132b8576040805160e560020a62461bcd02815260206004820152601160248201527f7265717565737420686173682069732030000000000000000000000000000000604482015290519081900360640190fd5b600083815260066020526040902054600880549193509083908110612d6257fe5b606060008260038111156132e957fe5b1415613329575060408051808201909152600781527f70656e64696e67000000000000000000000000000000000000000000000000006020820152612f2b565b600182600381111561333757fe5b1415613377575060408051808201909152600881527f63616e63656c65640000000000000000000000000000000000000000000000006020820152612f2b565b600282600381111561338557fe5b14156133c5575060408051808201909152600881527f617070726f7665640000000000000000000000000000000000000000000000006020820152612f2b565b60038260038111156133d357fe5b1415613413575060408051808201909152600881527f72656a65637465640000000000000000000000000000000000000000000000006020820152612f2b565b5060408051808201909152600781527f756e6b6e6f776e000000000000000000000000000000000000000000000000006020820152612f2b565b60008260c00151600381111561345f57fe5b146134b4576040805160e560020a62461bcd02815260206004820152601660248201527f72657175657374206973206e6f742070656e64696e6700000000000000000000604482015290519081900360640190fd5b6134bd82612f34565b81146107ff576040805160e560020a62461bcd02815260206004820152603360248201527f676976656e2072657175657374206861736820646f6573206e6f74206d61746360448201527f6820612070656e64696e67207265717565737400000000000000000000000000606482015290519081900360840190fd5b60e0604051908101604052806000600160a060020a0316815260200160008152602001606081526020016060815260200160008152602001600081526020016000600381111561358557fe5b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106135cb5782800160ff198235161785556135f8565b828001600101855582156135f8579182015b828111156135f85782358255916020019190600101906135dd565b50613604929150613676565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061364957805160ff19168380011785556135f8565b828001600101855582156135f8579182015b828111156135f857825182559160200191906001019061365b565b610b6091905b80821115613604576000815560010161367c560073656e646572206e6f742061206d65726368616e742e0000000000000000000073656e646572206e6f74206120637573746f6469616e2e000000000000000000a165627a7a72305820b0338d43bfb4717e2a4fd01cd472082587b04b41ff45fca666860ac3fdfc7f140029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ca06411bd7a7296d7dbdd0050dfc846e95febeb7
-----Decoded View---------------
Arg [0] : _controller (address): 0xCA06411bd7a7296d7dbdd0050DFc846E95fEBEB7
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ca06411bd7a7296d7dbdd0050dfc846e95febeb7
Swarm Source
bzzr://b0338d43bfb4717e2a4fd01cd472082587b04b41ff45fca666860ac3fdfc7f14
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.