Contract Overview
Balance:
0.1 Ether
More Info
My Name Tag:
Not Available
TokenTracker:
[ Download CSV Export ]
Contract Name:
Ethername
Compiler Version
v0.4.21+commit.dfe3193c
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-06-16 */ pragma solidity ^0.4.21; /** @title Manager * @author M.H. Kang */ contract Managed { event Commission(uint256 basisPoint); address public manager; uint256 public commission; function Managed() public { manager = msg.sender; } function() public payable {} /* FUNCTION */ function setCommission(uint256 _commission) external { require(_commission < 10000); commission = _commission; emit Commission(commission); } function withdrawBalance() external { manager.transfer(address(this).balance); } function transferPower(address _newManager) external onlyManager { manager = _newManager; } function callFor(address _to, uint256 _value, uint256 _gas, bytes _code) external payable onlyManager returns (bool) { return _to.call.value(_value).gas(_gas)(_code); } /* MODIFIER */ modifier onlyManager { require(msg.sender == manager); _; } } /** @title EthernameRaw * @author M.H. Kang */ contract EthernameRaw is Managed { /* EVENT */ event Transfer( address indexed from, address indexed to, bytes32 indexed name ); event Approval( address indexed owner, address indexed approved, bytes32 indexed name ); event SendEther( address indexed from, address indexed to, bytes32 sender, bytes32 recipient, uint256 value ); event Name(address indexed owner, bytes32 indexed name); event Price(bytes32 indexed name, uint256 price); event Buy(bytes32 indexed name, address buyer, uint256 price); event Attribute(bytes32 indexed name, bytes32 key); /* DATA STRUCT */ struct Record { address owner; uint256 price; mapping (bytes32 => bytes) attrs; } /* STORAGE */ string public constant name = "Ethername"; string public constant symbol = "ENM"; mapping (address => bytes32) public ownerToName; mapping (bytes32 => Record) public nameToRecord; mapping (bytes32 => address) public nameToApproved; /* FUNCTION */ function rawRegister(bytes32 _name) public payable { _register(_name, msg.sender); } function rawTransfer(address _to, bytes32 _name) public onlyOwner(msg.sender, _name) { _transfer(msg.sender, _to, _name); } function rawApprove(address _to, bytes32 _name) public onlyOwner(msg.sender, _name) { _approve(msg.sender, _to, _name); } function rawTransferFrom(address _from, address _to, bytes32 _name) public onlyOwner(_from, _name) onlyApproved(msg.sender, _name) { _transfer(_from, _to, _name); } function rawSetPrice(bytes32 _name, uint256 _price) public onlyOwner(msg.sender, _name) { require(_price == uint256(uint128(_price))); nameToRecord[_name].price = _price; emit Price(_name, _price); } function rawBuy(bytes32 _name) public payable { Record memory _record = nameToRecord[_name]; require(_record.price > 0); uint256 _price = _computePrice(_record.price); require(msg.value >= _price); _record.owner.transfer(_record.price); _transfer(_record.owner, msg.sender, _name); msg.sender.transfer(msg.value - _price); emit Buy(_name, msg.sender, _price); } function rawUseName(bytes32 _name) public onlyOwner(msg.sender, _name) { _useName(msg.sender, _name); } function rawSetAttribute(bytes32 _name, bytes32 _key, bytes _value) public onlyOwner(msg.sender, _name) { nameToRecord[_name].attrs[_key] = _value; emit Attribute(_name, _key); } function rawWipeAttributes(bytes32 _name, bytes32[] _keys) public onlyOwner(msg.sender, _name) { mapping (bytes32 => bytes) attrs = nameToRecord[_name].attrs; for (uint i = 0; i < _keys.length; i++) { delete attrs[_keys[i]]; emit Attribute(_name, _keys[i]); } } function rawSendEther(bytes32 _name) public payable returns (bool _result) { address _to = nameToRecord[_name].owner; _result = (_name != bytes32(0)) && (_to != address(0)) && _to.send(msg.value); if (_result) { emit SendEther( msg.sender, _to, rawNameOf(msg.sender), _name, msg.value ); } } /* VIEW FUNCTION */ function rawNameOf(address _address) public view returns (bytes32 _name) { _name = ownerToName[_address]; } function rawOwnerOf(bytes32 _name) public view returns (address _owner) { _owner = nameToRecord[_name].owner; } function rawDetailsOf(bytes32 _name, bytes32 _key) public view returns (address _owner, uint256 _price, bytes _value) { _owner = nameToRecord[_name].owner; _price = _computePrice(nameToRecord[_name].price); _value = nameToRecord[_name].attrs[_key]; } /* INTERNAL FUNCTION */ function _register(bytes32 _name, address _to) internal { require(nameToRecord[_name].owner == address(0)); for (uint i = 0; i < _name.length; i++) { require((_name[i] == 0) || (_name[i] > 96 && _name[i] < 123) || (_name[i] > 47 && _name[i] < 58)); } _transfer(0, _to, _name); } /** * @dev When transferred, * price and approved are set to 0 but attrs remains. */ function _transfer(address _from, address _to, bytes32 _name) internal { address _null = address(0); if (nameToApproved[_name] != _null) { _approve(_from, _null, _name); } if (ownerToName[_from] == _name) { _useName(_from, 0); } nameToRecord[_name] = Record(_to, 0); if (ownerToName[_to] == bytes32(0)) { _useName(_to, _name); } emit Transfer(_from, _to, _name); } function _approve(address _owner, address _to, bytes32 _name) internal { nameToApproved[_name] = _to; emit Approval(_owner, _to, _name); } function _useName(address _owner, bytes32 _name) internal { ownerToName[_owner] = _name; emit Name(_owner, _name); } function _computePrice(uint256 _price) internal view returns (uint256) { return _price * (10000 + commission) / 10000; } function _stringToBytes32(string _string) internal pure returns (bytes32 _bytes32) { require(bytes(_string).length < 33); assembly { _bytes32 := mload(add(_string, 0x20)) } } function _bytes32ToString(bytes32 _bytes32) internal pure returns (string _string) { assembly { let m := mload(0x40) mstore(m, 0x20) mstore(add(m, 0x20), _bytes32) mstore(0x40, add(m, 0x40)) _string := m } } /* MODIFIER */ modifier onlyOwner(address _claimant, bytes32 _name) { require(nameToRecord[_name].owner == _claimant); _; } modifier onlyApproved(address _claimant, bytes32 _name) { require(nameToApproved[_name] == _claimant); _; } } /** @title Ethername * @author M.H. Kang * @notice This contract is designed for any DAPPs to have * username feature without additional implementation. */ contract Ethername is EthernameRaw { /* CONSTRUCTOR */ function Ethername() public { commission = 200; // reserved word nameToRecord[bytes32('')] = Record(this, 0); // initial register _register(bytes32('ethername'), this); _register(bytes32('root'), msg.sender); } /* FUNCTION */ function register(string _name) external payable { rawRegister(_stringToBytes32(_name)); } function transfer(address _to, string _name) external { rawTransfer(_to, _stringToBytes32(_name)); } function approve(address _to, string _name) external { rawApprove(_to, _stringToBytes32(_name)); } function transferFrom(address _from, address _to, string _name) external { rawTransferFrom(_from, _to, _stringToBytes32(_name)); } function setPrice(string _name, uint256 _price) external { rawSetPrice(_stringToBytes32(_name), _price); } function buy(string _name) external payable { rawBuy(_stringToBytes32(_name)); } function useName(string _name) external { rawUseName(_stringToBytes32(_name)); } function setAttribute(string _name, string _key, bytes _value) external { rawSetAttribute(_stringToBytes32(_name), _stringToBytes32(_key), _value); } function wipeAttributes(string _name, bytes32[] _keys) external { rawWipeAttributes(_stringToBytes32(_name), _keys); } function sendEther(string _name) external payable returns (bool _result) { _result = rawSendEther(_stringToBytes32(_name)); } /* VIEW FUNCTION */ function nameOf(address _address) external view returns (string _name) { _name = _bytes32ToString(rawNameOf(_address)); } function ownerOf(string _name) external view returns (address _owner) { _owner = rawOwnerOf(_stringToBytes32(_name)); } function detailsOf(string _name, string _key) external view returns (address _owner, uint256 _price, bytes _value) { return rawDetailsOf(_stringToBytes32(_name), _stringToBytes32(_key)); } }
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"string"},{"name":"_key","type":"string"}],"name":"detailsOf","outputs":[{"name":"_owner","type":"address"},{"name":"_price","type":"uint256"},{"name":"_value","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_name","type":"string"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"nameToRecord","outputs":[{"name":"owner","type":"address"},{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"rawNameOf","outputs":[{"name":"_name","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"sendEther","outputs":[{"name":"_result","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_price","type":"uint256"}],"name":"setPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_key","type":"string"},{"name":"_value","type":"bytes"}],"name":"setAttribute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_name","type":"string"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_commission","type":"uint256"}],"name":"setCommission","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_name","type":"string"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"manager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"}],"name":"rawBuy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"}],"name":"rawUseName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"bytes32"}],"name":"rawOwnerOf","outputs":[{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"}],"name":"rawRegister","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_keys","type":"bytes32[]"}],"name":"rawWipeAttributes","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"}],"name":"rawSendEther","outputs":[{"name":"_result","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"string"}],"name":"ownerOf","outputs":[{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"useName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_key","type":"bytes32"}],"name":"rawDetailsOf","outputs":[{"name":"_owner","type":"address"},{"name":"_price","type":"uint256"},{"name":"_value","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"nameToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_name","type":"bytes32"}],"name":"rawTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_gas","type":"uint256"},{"name":"_code","type":"bytes"}],"name":"callFor","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_name","type":"bytes32"}],"name":"rawTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_keys","type":"bytes32[]"}],"name":"wipeAttributes","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"commission","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_key","type":"bytes32"},{"name":"_value","type":"bytes"}],"name":"rawSetAttribute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ownerToName","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"register","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_name","type":"bytes32"}],"name":"rawApprove","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"nameOf","outputs":[{"name":"_name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newManager","type":"address"}],"name":"transferPower","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"bytes32"},{"name":"_price","type":"uint256"}],"name":"rawSetPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"name","type":"bytes32"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"approved","type":"address"},{"indexed":true,"name":"name","type":"bytes32"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"sender","type":"bytes32"},{"indexed":false,"name":"recipient","type":"bytes32"},{"indexed":false,"name":"value","type":"uint256"}],"name":"SendEther","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"name","type":"bytes32"}],"name":"Name","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"bytes32"},{"indexed":false,"name":"price","type":"uint256"}],"name":"Price","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"bytes32"},{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"price","type":"uint256"}],"name":"Buy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"name","type":"bytes32"},{"indexed":false,"name":"key","type":"bytes32"}],"name":"Attribute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"basisPoint","type":"uint256"}],"name":"Commission","type":"event"}]
Contract Creation Code
606060405234156200001057600080fd5b60008054600160a060020a03191633600160a060020a031617905560c860015560408051908101604052600160a060020a033016815260006020808301829052908052600390527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff81518154600160a060020a031916600160a060020a0391909116178155602082015160019091015550620000db7f65746865726e616d65000000000000000000000000000000000000000000000030640100000000620015c36200011b82021704565b620001157f726f6f740000000000000000000000000000000000000000000000000000000033640100000000620015c36200011b82021704565b62000567565b600082815260036020526040812054600160a060020a0316156200013e57600080fd5b5060005b602081101562000350578281602081106200015957fe5b1a7f010000000000000000000000000000000000000000000000000000000000000002600160f860020a03191660007f01000000000000000000000000000000000000000000000000000000000000000214806200027357507f6000000000000000000000000000000000000000000000000000000000000000838260208110620001e057fe5b1a7f010000000000000000000000000000000000000000000000000000000000000002600160f860020a0319161180156200027357507f7b000000000000000000000000000000000000000000000000000000000000008382602081106200024457fe5b1a7f010000000000000000000000000000000000000000000000000000000000000002600160f860020a031916105b806200033b57507f2f00000000000000000000000000000000000000000000000000000000000000838260208110620002a857fe5b1a7f010000000000000000000000000000000000000000000000000000000000000002600160f860020a0319161180156200033b57507f3a000000000000000000000000000000000000000000000000000000000000008382602081106200030c57fe5b1a7f010000000000000000000000000000000000000000000000000000000000000002600160f860020a031916105b15156200034757600080fd5b60010162000142565b6200036c60008385640100000000620014576200037182021704565b505050565b600081815260046020526040812054600160a060020a031615620003aa57620003aa8482846401000000006200174f620004b482021704565b600160a060020a038416600090815260026020526040902054821415620003e657620003e6846000640100000000620015746200051882021704565b604080519081016040908152600160a060020a038516825260006020808401829052858252600390522081518154600160a060020a031916600160a060020a0391909116178155602082015160019091015550600160a060020a03831660009081526002602052604090205415156200047357620004738383640100000000620015746200051882021704565b81600160a060020a038085169086167f8d61cf26ce654b1352bb60df9f3d4056b9e85a63977debf8fc9cd727aeda767e60405160405180910390a450505050565b600081815260046020526040908190208054600160a060020a031916600160a060020a03858116918217909255839290918616907f36a9e0c1da9cdc6d8f4bd4cb261f9ad6a45eb1641a557ead7530fbeff9a26336905160405180910390a4505050565b600160a060020a038216600081815260026020526040908190208390558291907fe82cd0f5912f81bd9cb0a7628f0cfd68d292da3882216f3fa90748aee3f04841905160405180910390a35050565b61191580620005776000396000f3006060604052600436106101cc5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101ce578063072e43081461025857806309886649146103115780631030d8521461033c57806317376938146103745780631809ced7146103a557806322e01192146103cc57806326f590f6146103ee57806329cd00f714610424578063355e6b431461044f5780633ebfc93414610465578063481c6a7514610498578063492cc769146104c75780634fca3159146104da5780635d8d4415146104e55780635fd8c710146104fb5780637817eedd1461050e578063783b4569146105245780637aa1a77d1461052f5780637d1157c814610583578063920ffa261461058e57806395d89b41146105ac57806397fe728a146105bf5780639b10e9f7146105dd578063aa5b641f146105f6578063b0d60c2e1461060c578063c60c3aca14610634578063dd955d4c1461065c578063de9122f71461067e578063e1489191146106a8578063eca0290b146106bb578063efc5853c14610717578063f2c298be14610736578063f4a9202014610749578063f5c573821461076b578063f818d7231461078a578063fd8828eb146107a9575b005b34156101d957600080fd5b6101e16107c2565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561021d578082015183820152602001610205565b50505050905090810190601f16801561024a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561026357600080fd5b61028260246004803582810192908201359181359182019101356107f9565b604051600160a060020a03841681526020810183905260606040820181815290820183818151815260200191508051906020019080838360005b838110156102d45780820151838201526020016102bc565b50505050905090810190601f1680156103015780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b341561031c57600080fd5b6101cc60048035600160a060020a0316906024803590810191013561088c565b341561034757600080fd5b6103526004356108d2565b604051600160a060020a03909216825260208201526040908101905180910390f35b341561037f57600080fd5b610393600160a060020a03600435166108f7565b60405190815260200160405180910390f35b6103b86004803560248101910135610912565b604051901515815260200160405180910390f35b34156103d757600080fd5b6101cc60246004803582810192910135903561095b565b34156103f957600080fd5b6101cc602460048035828101929082013591813580830192908201359160443591820191013561099c565b341561042f57600080fd5b6101cc60048035600160a060020a03169060248035908101910135610a4c565b341561045a57600080fd5b6101cc600435610a8d565b341561047057600080fd5b6101cc600160a060020a03600480358216916024803590911691604435918201910135610ad6565b34156104a357600080fd5b6104ab610b1e565b604051600160a060020a03909116815260200160405180910390f35b6101cc6004803560248101910135610b2d565b6101cc600435610b71565b34156104f057600080fd5b6101cc600435610c9c565b341561050657600080fd5b6101cc610cd0565b341561051957600080fd5b6104ab600435610d0b565b6101cc600435610d26565b341561053a57600080fd5b6101cc60048035906044602480359081019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650610d3395505050505050565b6103b8600435610e06565b341561059957600080fd5b6104ab6004803560248101910135610ed6565b34156105b757600080fd5b6101e1610f18565b34156105ca57600080fd5b6101cc6004803560248101910135610f4f565b34156105e857600080fd5b610282600435602435610f8f565b341561060157600080fd5b6104ab60043561108b565b341561061757600080fd5b6101cc600160a060020a03600435811690602435166044356110a6565b6103b860048035600160a060020a03169060248035916044359160643590810191013561110e565b341561066757600080fd5b6101cc600160a060020a0360043516602435611166565b341561068957600080fd5b6101cc602460048035828101929082013591813591820191013561119b565b34156106b357600080fd5b610393611209565b34156106c657600080fd5b6101cc600480359060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061120f95505050505050565b341561072257600080fd5b610393600160a060020a03600435166112a2565b6101cc60048035602481019101356112b4565b341561075457600080fd5b6101cc600160a060020a03600435166024356112f4565b341561077657600080fd5b6101e1600160a060020a0360043516611329565b341561079557600080fd5b6101cc600160a060020a0360043516611348565b34156107b457600080fd5b6101cc600435602435611392565b60408051908101604052600981527f45746865726e616d650000000000000000000000000000000000000000000000602082015281565b6000806108046117e1565b61087c61083f88888080601f01602080910402602001604051908101604052818152929190602084018383808284375061142b945050505050565b61087787878080601f01602080910402602001604051908101604052818152929190602084018383808284375061142b945050505050565b610f8f565b9250925092509450945094915050565b6108cd836108c884848080601f01602080910402602001604051908101604052818152929190602084018383808284375061142b945050505050565b611166565b505050565b60036020526000908152604090208054600190910154600160a060020a039091169082565b600160a060020a031660009081526002602052604090205490565b600061095461094f84848080601f01602080910402602001604051908101604052818152929190602084018383808284375061142b945050505050565b610e06565b9392505050565b6108cd61099684848080601f01602080910402602001604051908101604052818152929190602084018383808284375061142b945050505050565b82611392565b610a446109d787878080601f01602080910402602001604051908101604052818152929190602084018383808284375061142b945050505050565b610a0f86868080601f01602080910402602001604051908101604052818152929190602084018383808284375061142b945050505050565b84848080601f01602080910402602001604051908101604052818152929190602084018383808284375061120f945050505050565b505050505050565b6108cd83610a8884848080601f01602080910402602001604051908101604052818152929190602084018383808284375061142b945050505050565b6112f4565b6127108110610a9b57600080fd5b60018190557f407599dce05d13b379509ef378c8927c9c67477b25f4a11ef7a0f538ebebd0e88160405190815260200160405180910390a150565b610b188484610b1385858080601f01602080910402602001604051908101604052818152929190602084018383808284375061142b945050505050565b6110a6565b50505050565b600054600160a060020a031681565b610b6d610b6883838080601f01602080910402602001604051908101604052818152929190602084018383808284375061142b945050505050565b610b71565b5050565b610b796117f3565b6000828152600360205260408082209080519081016040528154600160a060020a03168152600190910154602082019081529092506000905111610bbc57600080fd5b610bc98260200151611446565b90503481901015610bd957600080fd5b8151600160a060020a03166108fc83602001519081150290604051600060405180830381858888f193505050501515610c1157600080fd5b610c1d82513385611457565b33600160a060020a03166108fc8234039081150290604051600060405180830381858888f193505050501515610c5257600080fd5b827f0d296b8ffb4a6420e4906f0cfc3233559cffb80d18e99919e8ac0c5b247108d43383604051600160a060020a03909216825260208201526040908101905180910390a2505050565b60008181526003602052604090205433908290600160a060020a03808416911614610cc657600080fd5b6108cd3384611574565b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515610d0957600080fd5b565b600090815260036020526040902054600160a060020a031690565b610d3081336115c3565b50565b600082815260036020526040812054819033908590600160a060020a03808416911614610d5f57600080fd5b6000868152600360205260408120600201945092505b8451831015610a4457836000868581518110610d8d57fe5b90602001906020020151815260208101919091526040016000908120610db29161180a565b857f710bff5b8c1d241423dbe8f61fff69b38189aff7051d451ec741c29d832db16e868581518110610de057fe5b9060200190602002015160405190815260200160405180910390a2600190920191610d75565b600081815260036020526040812054600160a060020a03168215801590610e355750600160a060020a03811615155b8015610e645750600160a060020a0381163480156108fc0290604051600060405180830381858888f193505050505b91508115610ed05780600160a060020a031633600160a060020a03167f2610c614ff6c3706a12f962a0ae3479518ca8b7e04b2cdf2ebf9ec35b5035cf4610eaa336108f7565b863460405192835260208301919091526040808301919091526060909101905180910390a35b50919050565b6000610954610f1384848080601f01602080910402602001604051908101604052818152929190602084018383808284375061142b945050505050565b610d0b565b60408051908101604052600381527f454e4d0000000000000000000000000000000000000000000000000000000000602082015281565b610b6d610f8a83838080601f01602080910402602001604051908101604052818152929190602084018383808284375061142b945050505050565b610c9c565b600080610f9a6117e1565b60008581526003602052604090208054600190910154600160a060020a039091169350610fc690611446565b6000868152600360209081526040808320888452600290810183529281902080549496509361010060018216150260001901169290920491601f830182900482029091019051908101604052809291908181526020018280546001816001161561010002031660029004801561107d5780601f106110525761010080835404028352916020019161107d565b820191906000526020600020905b81548152906001019060200180831161106057829003601f168201915b505050505090509250925092565b600460205260009081526040902054600160a060020a031681565b60008181526003602052604090205483908290600160a060020a038084169116146110d057600080fd5b60008381526004602052604090205433908490600160a060020a038084169116146110fa57600080fd5b611105878787611457565b50505050505050565b6000805433600160a060020a0390811691161461112a57600080fd5b600160a060020a0386168486858560405180838380828437820191505092505050600060405180830381858888f19a9950505050505050505050565b60008181526003602052604090205433908290600160a060020a0380841691161461119057600080fd5b610b18338585611457565b610b186111d685858080601f01602080910402602001604051908101604052818152929190602084018383808284375061142b945050505050565b83838080602002602001604051908101604052809392919081815260200183836020028082843750610d33945050505050565b60015481565b60008381526003602052604090205433908490600160a060020a0380841691161461123957600080fd5b6000858152600360209081526040808320878452600201909152902083805161126692916020019061184e565b50847f710bff5b8c1d241423dbe8f61fff69b38189aff7051d451ec741c29d832db16e8560405190815260200160405180910390a25050505050565b60026020526000908152604090205481565b610b6d6112ef83838080601f01602080910402602001604051908101604052818152929190602084018383808284375061142b945050505050565b610d26565b60008181526003602052604090205433908290600160a060020a0380841691161461131e57600080fd5b610b1833858561174f565b6113316117e1565b61134261133d836108f7565b6117c0565b92915050565b60005433600160a060020a0390811691161461136357600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008281526003602052604090205433908390600160a060020a038084169116146113bc57600080fd5b6fffffffffffffffffffffffffffffffff831683146113da57600080fd5b6000848152600360205260409081902060010184905584907f6cf258b00bb4939e673f2b0fd9cdfe157e1c8a5f60a2532efe3d3eb49f98f6449085905190815260200160405180910390a250505050565b6000602182511061143b57600080fd5b602082015192915050565b600154612710908101919091020490565b600081815260046020526040812054600160a060020a03161561147f5761147f84828461174f565b600160a060020a0384166000908152600260205260409020548214156114aa576114aa846000611574565b604080519081016040908152600160a060020a03851682526000602080840182905285825260039052208151815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0391909116178155602082015160019091015550600160a060020a0383166000908152600260205260409020541515611533576115338383611574565b81600160a060020a038085169086167f8d61cf26ce654b1352bb60df9f3d4056b9e85a63977debf8fc9cd727aeda767e60405160405180910390a450505050565b600160a060020a038216600081815260026020526040908190208390558291907fe82cd0f5912f81bd9cb0a7628f0cfd68d292da3882216f3fa90748aee3f04841905160405180910390a35050565b600082815260036020526040812054600160a060020a0316156115e557600080fd5b5060005b6020811015611743578281602081106115fe57fe5b1a60f860020a02600160f860020a031916600060f860020a0214806116a457507f600000000000000000000000000000000000000000000000000000000000000083826020811061164b57fe5b1a60f860020a02600160f860020a0319161180156116a457507f7b0000000000000000000000000000000000000000000000000000000000000083826020811061169157fe5b1a60f860020a02600160f860020a031916105b8061173057507f2f000000000000000000000000000000000000000000000000000000000000008382602081106116d757fe5b1a60f860020a02600160f860020a03191611801561173057507f3a0000000000000000000000000000000000000000000000000000000000000083826020811061171d57fe5b1a60f860020a02600160f860020a031916105b151561173b57600080fd5b6001016115e9565b6108cd60008385611457565b60008181526004602052604090819020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03858116918217909255839290918616907f36a9e0c1da9cdc6d8f4bd4cb261f9ad6a45eb1641a557ead7530fbeff9a26336905160405180910390a4505050565b6117c86117e1565b6040516020808252810192909252506040808201905290565b60206040519081016040526000815290565b604080519081016040526000808252602082015290565b50805460018160011615610100020316600290046000825580601f106118305750610d30565b601f016020900490600052602060002090810190610d3091906118cc565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061188f57805160ff19168380011785556118bc565b828001600101855582156118bc579182015b828111156118bc5782518255916020019190600101906118a1565b506118c89291506118cc565b5090565b6118e691905b808211156118c857600081556001016118d2565b905600a165627a7a72305820ef8c94615fc17646072849c568de0940468df3d6e51e0325f87e46fa16124cee0029
Swarm Source
bzzr://ef8c94615fc17646072849c568de0940468df3d6e51e0325f87e46fa16124cee
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.