ETH Price: $3,480.93 (+0.93%)

Contract

0x812F8D75654Ee5A342ecF98DDF166739Eb9Ed58F
 

Overview

ETH Balance

0.815424085902911809 ETH

Eth Value

$2,838.44 (@ $3,480.93/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Exit168173742023-03-13 6:46:11653 days ago1678689971IN
0x812F8D75...9Eb9Ed58F
0 ETH0.0009041916.78282159
Withdraw79491832019-06-13 8:04:112022 days ago1560413051IN
0x812F8D75...9Eb9Ed58F
0 ETH0.00035028.05
Withdraw69885432018-12-31 23:43:072185 days ago1546299787IN
0x812F8D75...9Eb9Ed58F
0 ETH0.000045682
Withdraw69885432018-12-31 23:43:072185 days ago1546299787IN
0x812F8D75...9Eb9Ed58F
0 ETH0.00004351
Sell65132142018-10-14 11:22:202264 days ago1539516140IN
0x812F8D75...9Eb9Ed58F
0 ETH0.000047951
Withdraw65130952018-10-14 10:54:562264 days ago1539514496IN
0x812F8D75...9Eb9Ed58F
0 ETH0.00004351
Withdraw64405772018-10-02 16:34:312275 days ago1538498071IN
0x812F8D75...9Eb9Ed58F
0 ETH0.000334987.7
Withdraw64405652018-10-02 16:32:242275 days ago1538497944IN
0x812F8D75...9Eb9Ed58F
0 ETH0.000326287.5
Withdraw64405642018-10-02 16:32:022275 days ago1538497922IN
0x812F8D75...9Eb9Ed58F
0 ETH0.000326287.5
Withdraw64405442018-10-02 16:29:102275 days ago1538497750IN
0x812F8D75...9Eb9Ed58F
0 ETH0.000326287.5
Sell64405362018-10-02 16:27:042275 days ago1538497624IN
0x812F8D75...9Eb9Ed58F
0 ETH0.000383648
Sell64405242018-10-02 16:23:162275 days ago1538497396IN
0x812F8D75...9Eb9Ed58F
0 ETH0.000383648
Sell64405122018-10-02 16:20:432275 days ago1538497243IN
0x812F8D75...9Eb9Ed58F
0 ETH0.000385178
Sell64405042018-10-02 16:18:562275 days ago1538497136IN
0x812F8D75...9Eb9Ed58F
0 ETH0.000384158
Withdraw64374332018-10-02 4:16:282276 days ago1538453788IN
0x812F8D75...9Eb9Ed58F
0 ETH0.0002741212
Withdraw64374132018-10-02 4:11:322276 days ago1538453492IN
0x812F8D75...9Eb9Ed58F
0 ETH0.0005220412
Withdraw64374032018-10-02 4:07:162276 days ago1538453236IN
0x812F8D75...9Eb9Ed58F
0 ETH0.0005220412
Withdraw64374032018-10-02 4:07:162276 days ago1538453236IN
0x812F8D75...9Eb9Ed58F
0 ETH0.0005220412
Sell64374002018-10-02 4:06:172276 days ago1538453177IN
0x812F8D75...9Eb9Ed58F
0 ETH0.0005762212
Sell64373962018-10-02 4:05:292276 days ago1538453129IN
0x812F8D75...9Eb9Ed58F
0 ETH0.0005754612
Sell64373902018-10-02 4:04:232276 days ago1538453063IN
0x812F8D75...9Eb9Ed58F
0 ETH0.0005762212
Withdraw64371282018-10-02 3:05:462276 days ago1538449546IN
0x812F8D75...9Eb9Ed58F
0 ETH0.0004785411
Withdraw64370822018-10-02 2:55:322276 days ago1538448932IN
0x812F8D75...9Eb9Ed58F
0 ETH0.0002741212
Withdraw64370772018-10-02 2:54:132276 days ago1538448853IN
0x812F8D75...9Eb9Ed58F
0 ETH0.0002741212
Withdraw64370622018-10-02 2:51:412276 days ago1538448701IN
0x812F8D75...9Eb9Ed58F
0 ETH0.0003420412
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
168173742023-03-13 6:46:11653 days ago1678689971
0x812F8D75...9Eb9Ed58F
0.16378795 ETH
79491832019-06-13 8:04:112022 days ago1560413051
0x812F8D75...9Eb9Ed58F
0.00594933 ETH
69885432018-12-31 23:43:072185 days ago1546299787
0x812F8D75...9Eb9Ed58F
0.00150868 ETH
65130952018-10-14 10:54:562264 days ago1539514496
0x812F8D75...9Eb9Ed58F
0.00149798 ETH
64405772018-10-02 16:34:312275 days ago1538498071
0x812F8D75...9Eb9Ed58F
1.47081026 ETH
64405652018-10-02 16:32:242275 days ago1538497944
0x812F8D75...9Eb9Ed58F
0.63173581 ETH
64405642018-10-02 16:32:022275 days ago1538497922
0x812F8D75...9Eb9Ed58F
0.76798035 ETH
64405442018-10-02 16:29:102275 days ago1538497750
0x812F8D75...9Eb9Ed58F
4.92521378 ETH
64374132018-10-02 4:11:322276 days ago1538453492
0x812F8D75...9Eb9Ed58F
0.58172633 ETH
64374032018-10-02 4:07:162276 days ago1538453236
0x812F8D75...9Eb9Ed58F
0.47505929 ETH
64374032018-10-02 4:07:162276 days ago1538453236
0x812F8D75...9Eb9Ed58F
0.45169124 ETH
64371282018-10-02 3:05:462276 days ago1538449546
0x812F8D75...9Eb9Ed58F
0.09327355 ETH
64370622018-10-02 2:51:412276 days ago1538448701
0x812F8D75...9Eb9Ed58F
0.212232 ETH
64370522018-10-02 2:47:272276 days ago1538448447
0x812F8D75...9Eb9Ed58F
0.09729126 ETH
64269872018-09-30 11:11:542278 days ago1538305914
0x812F8D75...9Eb9Ed58F
0.00292917 ETH
64267452018-09-30 10:13:342278 days ago1538302414
0x812F8D75...9Eb9Ed58F
0.95013178 ETH
64194552018-09-29 5:34:372279 days ago1538199277
0x812F8D75...9Eb9Ed58F
1.71488432 ETH
64194412018-09-29 5:32:012279 days ago1538199121
0x812F8D75...9Eb9Ed58F
1.61010636 ETH
63904012018-09-24 10:59:082284 days ago1537786748
0x812F8D75...9Eb9Ed58F
0.0107487 ETH
62763192018-09-05 12:42:302303 days ago1536151350
0x812F8D75...9Eb9Ed58F
1.18203886 ETH
62500552018-09-01 2:32:402307 days ago1535769160
0x812F8D75...9Eb9Ed58F
0.00000019 ETH
62447502018-08-31 5:08:172308 days ago1535692097
0x812F8D75...9Eb9Ed58F
0.00018377 ETH
62336652018-08-29 8:19:242310 days ago1535530764
0x812F8D75...9Eb9Ed58F
0.00000035 ETH
62225302018-08-27 11:06:122312 days ago1535367972
0x812F8D75...9Eb9Ed58F
0.01452926 ETH
62115082018-08-25 14:41:462313 days ago1535208106
0x812F8D75...9Eb9Ed58F
0.0402162 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Hourglass

Compiler Version
v0.4.20+commit.3155dd80

Optimization Enabled:
No with 200 runs

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

pragma solidity ^0.4.20;

/*
* LastHero团队.
* -> 这是什么?
* 改进的自主金字塔资金模型:
* [x] 该合约是目前最稳定的智能合约,经受过所有的攻击测试!
* [x] 由ARC等多名安全专家审核测试。
* [X] 新功能:可部分卖出,而不必将你的所有资产全部卖出!
* [x] 新功能:可以在钱包之间传输代币。可以在智能合约中进行交易!
* [x] 新特性:世界首创POS节点以太坊职能合约,让V神疯狂的新功能。
* [x] 主节点:持有100个代币即可拥有自己的主节点,主节点是唯一的智能合约入口!
* [x] 主节点:所有通过你的主节点进入合约的玩家,你可以获得10%的分红!
*
* -> 关于项目?
* 我们的团队成员拥有超强的创建安全智能合约的能力。
* 新的开发团队由经验丰富的专业开发人员组成,并由资深合约安全专家审核。
* 另外,我们公开进行过数百次的模拟攻击,该合约从来没有被攻破过。
* 
* -> 这个项目的成员有哪些?
* - PonziBot (math/memes/main site/master)数学
* - Mantso (lead solidity dev/lead web3 dev)主程
* - swagg (concept design/feedback/management)概念设计/反馈/管理
* - Anonymous#1 (main site/web3/test cases)网站/web3/测试
* - Anonymous#2 (math formulae/whitepaper)数学推导/白皮书
*
* -> 该项目的安全审核人员:
* - Arc
* - tocisck
* - sumpunk
*/

contract Hourglass {
    /*=================================
    =            MODIFIERS  全局       =
    =================================*/
    // 只限持币用户
    modifier onlyBagholders() {
        require(myTokens() > 0);
        _;
    }
    
    // 只限收益用户
    modifier onlyStronghands() {
        require(myDividends(true) > 0);
        _;
    }
    
    // 管理员权限:
    // -> 更改合约名称
    // -> 更改代币名称
    // -> 改变POS的难度(确保维持一个主节点需要多少代币,以避免滥发)
    // 管理员没有权限做以下事宜:
    // -> 动用资金
    // -> 禁止用户取款
    // -> 自毁合约
    // -> 改变代币价格
    modifier onlyAdministrator(){ // 用来确定是管理员
        address _customerAddress = msg.sender;
        require(administrators[keccak256(_customerAddress)]); // 在管理员列表中存在
        _; // 表示在modifier的函数执行完后,开始执行其它函数
    }
    
    
    // 确保合约中第一批代币均等的分配
    // 这意味着,不公平的优势成本是不可能存在的
    // 这将为基金的健康成长打下坚实的基础。
    modifier antiEarlyWhale(uint256 _amountOfEthereum){ // 判断状态
        address _customerAddress = msg.sender;
        
        // 我们还是处于不利的投资地位吗?
        // 既然如此,我们将禁止早期的大额投资 
        if( onlyAmbassadors && ((totalEthereumBalance() - _amountOfEthereum) <= ambassadorQuota_ )){
            require(
                // 这个用户在代表名单吗?
                ambassadors_[_customerAddress] == true &&
                
                // 用户购买量是否超过代表的最大配额?
                (ambassadorAccumulatedQuota_[_customerAddress] + _amountOfEthereum) <= ambassadorMaxPurchase_
                
            );
            
            // 更新累计配额  
            ambassadorAccumulatedQuota_[_customerAddress] = SafeMath.add(ambassadorAccumulatedQuota_[_customerAddress], _amountOfEthereum);
        
            // 执行
            _;
        } else {
            // 如果基金中以太币数量下降到创世值,代表阶段也不会重新启动。
            onlyAmbassadors = false;
            _;    
        }
        
    }
    
    
    /*==============================
    =            EVENTS  事件      =
    ==============================*/
    event onTokenPurchase( // 购买代币
        address indexed customerAddress,
        uint256 incomingEthereum,
        uint256 tokensMinted,
        address indexed referredBy
    );
    
    event onTokenSell( // 出售代币
        address indexed customerAddress,
        uint256 tokensBurned,
        uint256 ethereumEarned
    );
    
    event onReinvestment( // 再投资
        address indexed customerAddress,
        uint256 ethereumReinvested,
        uint256 tokensMinted
    );
    
    event onWithdraw( // 提取资金
        address indexed customerAddress,
        uint256 ethereumWithdrawn
    );
    
    // ERC20标准
    event Transfer( // 一次交易
        address indexed from,
        address indexed to,
        uint256 tokens
    );
    
    
    /*=====================================
    =            CONFIGURABLES  配置       =
    =====================================*/
    string public name = "LastHero3D"; // 名字
    string public symbol = "Keys"; // 符号
    uint8 constant public decimals = 18; // 小数位
    uint8 constant internal dividendFee_ = 10; // 交易分红比例
    uint256 constant internal tokenPriceInitial_ = 0.0000001 ether; // 代币初始价格
    uint256 constant internal tokenPriceIncremental_ = 0.00000001 ether; // 代币递增价格
    uint256 constant internal magnitude = 2**64;
    
    // 股份证明(默认值为100代币)
    uint256 public stakingRequirement = 100e18;
    
    // 代表计划
    mapping(address => bool) internal ambassadors_; // 代表集合
    uint256 constant internal ambassadorMaxPurchase_ = 1 ether; // 最大购买
    uint256 constant internal ambassadorQuota_ = 20 ether; // 购买限额
    
    
    
   /*================================
    =            DATASETS   数据     =
    ================================*/
    // 每个地址的股份数量(按比例编号)
    mapping(address => uint256) internal tokenBalanceLedger_; // 保存地址的代币数量
    mapping(address => uint256) internal referralBalance_; // 保存地址的推荐分红
    mapping(address => int256) internal payoutsTo_;
    mapping(address => uint256) internal ambassadorAccumulatedQuota_;
    uint256 internal tokenSupply_ = 0;
    uint256 internal profitPerShare_;
    
    // 管理员列表(管理员权限见上述)
    mapping(bytes32 => bool) public administrators; // 管理者地址列表
    
    // 当代表制度成立,只有代表可以购买代币(这确保了完美的金字塔分布,以防持币比例不均)
    bool public onlyAmbassadors = true; // 限制只有代表能够购买代币
    


    /*=======================================
    =            PUBLIC FUNCTIONS 公开函数   =
    =======================================*/
    /*
    * -- 应用入口 --  
    */
    function Hourglass()
        public
    {
        // 在这里添加管理员
        administrators[0xdacb12a29ec52e618a1dbe39a3317833066e94371856cc2013565dab2ae6fa62] = true;
        
        // 在这里添加代表。
        // mantso - lead solidity dev & lead web dev. 
        ambassadors_[0x24257cF6fEBC8aAaE2dC20906d4Db1C619d40329] = true;
        
        // ponzibot - mathematics & website, and undisputed meme god.
        ambassadors_[0xEa01f6203bD55BA694594FDb5575f2936dB7f698] = true;
        
        // swagg - concept design, feedback, management.
        ambassadors_[0x22caa6670991D67bf0EA033156114F07de4aa20b] = true;
        
        // k-dawgz - shilling machine, meme maestro, bizman.
        ambassadors_[0xf9d7f59E5d0711f5482968D69B5aEe251945D1c5] = true;
        
        // elmojo - all those pretty .GIFs & memes you see? you can thank this man for that.
        ambassadors_[0x4d82B6839Fd64eF7D3Af64080167A42bF9B9E332] = true;
        
        // capex - community moderator.
        ambassadors_[0x1f50451b941d163837623E25E22033C11626491C] = true;
        
        // jörmungandr - pentests & twitter trendsetter.
        ambassadors_[0xC68538d6971D1B0AC8829f8B14e6a9B2AF614119] = true;
        
        // inventor - the source behind the non-intrusive referral model.
        ambassadors_[0x23183DaFd738FB876c363dA7651A679fcb24b657] = true;
        
        // tocsick - pentesting, contract auditing.
        ambassadors_[0x95E8713a5D2bf0DDAf8D0819e73907a8CEE3D111] = true;
        
        // arc - pentesting, contract auditing.
        ambassadors_[0x976f6397ae155239289D6cb7904E6730BeBa7c79] = true;
        
        // sumpunk - contract auditing.
        ambassadors_[0xC26BB52D97BA7e4c6DA8E7b07D1B8B78Be178FBd] = true;
        
        // randall - charts & sheets, data dissector, advisor.
        ambassadors_[0x23C654314EaDAaE05857dE5a61c1228c33282807] = true;
        
        // ambius - 3d chart visualization.
        ambassadors_[0xA732E7665fF54Ba63AE40E67Fac9f23EcD0b1223] = true;
        
        // contributors that need to remain private out of security concerns.
        ambassadors_[0x445b660236c39F5bc98bc49ddDc7CF1F246a40aB] = true; //dp
        ambassadors_[0x60e31B8b79bd92302FE452242Ea6F7672a77a80f] = true; //tc
        ambassadors_[0xbbefE89eBb2a0e15921F07F041BE5691d834a287] = true; //ja
        ambassadors_[0x5ad183E481cF0477C024A96c5d678a88249295b8] = true; //sf
        ambassadors_[0x10C5423A46a09D6c5794Cdd507ee9DA7E406F095] = true; //tb
        ambassadors_[0x9E191643D643AA5908C5B9d3b10c27Ad9fb4AcBE] = true; //sm
        ambassadors_[0x2c389a382003E9467a84932E68a35cea27A34B8D] = true; //mc
        ambassadors_[0x4af87534cb13B473D8c1199093a8052b5Ad6661B] = true; //et
        

    }
    
     
    /**
     * 将所有以太坊网络传入转换为代币调用,并向下传递(如果有下层拓扑)
     */
    function buy(address _referredBy)
        public
        payable
        returns(uint256)
    {
        purchaseTokens(msg.value, _referredBy);
    }
    
    /**
     * 回调函数来处理直接发送到合约的以太坊参数。
     * 我们不能通过这种方式来指定一个地址。
     */
    function()
        payable
        public
    {
        purchaseTokens(msg.value, 0x0);
    }
    
    /**
     * 将所有的分红请求转换为代币。
     */
    function reinvest()
        onlyStronghands()
        public
    {
        // 提取股息
        uint256 _dividends = myDividends(false); // retrieve ref. bonus later in the code
        
        // 实际支付的股息
        address _customerAddress = msg.sender;
        payoutsTo_[_customerAddress] +=  (int256) (_dividends * magnitude);
        
        // 检索参考奖金
        _dividends += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress] = 0;
        
        // 发送一个购买订单通过虚拟化的“撤回股息”
        uint256 _tokens = purchaseTokens(_dividends, 0x0);
        
        // 重大事件
        onReinvestment(_customerAddress, _dividends, _tokens);
    }
    
    /**
     * 退出流程,卖掉并且提取资金
     */
    function exit()
        public
    {
        // 通过调用获取代币数量并将其全部出售
        address _customerAddress = msg.sender;
        uint256 _tokens = tokenBalanceLedger_[_customerAddress];
        if(_tokens > 0) sell(_tokens);
        
        // 取款服务
        withdraw();
    }

    /**
     * 取走请求者的所有收益。
     */
    function withdraw()
        onlyStronghands()
        public
    {
        // 设置数据
        address _customerAddress = msg.sender;
        uint256 _dividends = myDividends(false); // 从代码中获得参考奖金
        
        // 更新股息系统
        payoutsTo_[_customerAddress] +=  (int256) (_dividends * magnitude);
        
        // 添加参考奖金
        _dividends += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress] = 0;
        
        // 获取服务
        _customerAddress.transfer(_dividends);
        
        // 重大事件
        onWithdraw(_customerAddress, _dividends);
    }
    
    /**
     * 以太坊代币。
     */
    function sell(uint256 _amountOfTokens)
        onlyBagholders()
        public
    {
        // 设置数据
        address _customerAddress = msg.sender;
        // 来自俄罗斯的BTFO
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        uint256 _tokens = _amountOfTokens;
        uint256 _ethereum = tokensToEthereum_(_tokens);
        uint256 _dividends = SafeMath.div(_ethereum, dividendFee_);
        uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
        
        // 销毁已出售的代币
        tokenSupply_ = SafeMath.sub(tokenSupply_, _tokens);
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _tokens);
        
        // 更新股息系统
        int256 _updatedPayouts = (int256) (profitPerShare_ * _tokens + (_taxedEthereum * magnitude));
        payoutsTo_[_customerAddress] -= _updatedPayouts;       
        
        // 禁止除以0
        if (tokenSupply_ > 0) {
            // 更新代币的股息金额
            profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_);
        }
        
        // 重大事件
        onTokenSell(_customerAddress, _tokens, _taxedEthereum);
    }
    
    
    /**
     * 从请求者账户转移代币新持有者账户。
     * 记住,这里还有10%的费用。
     */
    function transfer(address _toAddress, uint256 _amountOfTokens)
        onlyBagholders()
        public
        returns(bool)
    {
        // 设置
        address _customerAddress = msg.sender;
        
        // 取保拥有足够的代币
        // 代币禁止转移,直到代表阶段结束。
        // (我们不想捕鲸)
        require(!onlyAmbassadors && _amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        
        // 取走所有未付的股息
        if(myDividends(true) > 0) withdraw();
        
        // 被转移代币的十分之一
        // 这些都将平分给个股东
        uint256 _tokenFee = SafeMath.div(_amountOfTokens, dividendFee_);
        uint256 _taxedTokens = SafeMath.sub(_amountOfTokens, _tokenFee);
        uint256 _dividends = tokensToEthereum_(_tokenFee);
  
        // 销毁费用代币
        tokenSupply_ = SafeMath.sub(tokenSupply_, _tokenFee);

        // 代币交换
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _taxedTokens);
        
        // 更新股息系统
        payoutsTo_[_customerAddress] -= (int256) (profitPerShare_ * _amountOfTokens);
        payoutsTo_[_toAddress] += (int256) (profitPerShare_ * _taxedTokens);
        
        // 分发股息给持有者
        profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_);
        
        // 重大事件
        Transfer(_customerAddress, _toAddress, _taxedTokens);
        
        // ERC20标准
        return true;
       
    }
    
    /*----------  管理员功能  ----------*/
    /**
     * 如果没有满足配额,管理员可以提前结束代表阶段。
     */
    function disableInitialStage()
        onlyAdministrator()
        public
    {
        onlyAmbassadors = false;
    }
    
    /**
     * 在特殊情况,可以更换管理员账户。
     */
    function setAdministrator(bytes32 _identifier, bool _status)
        onlyAdministrator()
        public
    {
        administrators[_identifier] = _status;
    }
    
    /**
     * 作为预防措施,管理员可以调整主节点的费率。
     */
    function setStakingRequirement(uint256 _amountOfTokens)
        onlyAdministrator()
        public
    {
        stakingRequirement = _amountOfTokens;
    }
    
    /**
     * 管理员可以重新定义品牌(代币名称)。
     */
    function setName(string _name)
        onlyAdministrator()
        public
    {
        name = _name;
    }
    
    /**
     * 管理员可以重新定义品牌(代币符号)。
     */
    function setSymbol(string _symbol)
        onlyAdministrator()
        public
    {
        symbol = _symbol;
    }

    
    /*----------  帮助者和计数器  ----------*/
    /**
     * 在合约中查看当前以太坊状态的方法
     * 例如 totalEthereumBalance()
     */
    function totalEthereumBalance() // 查看余额
        public
        view
        returns(uint)
    {
        return this.balance;
    }
    
    /**
     * 检索代币供应总量。
     */
    function totalSupply()
        public
        view
        returns(uint256)
    {
        return tokenSupply_;
    }
    
    /**
     * 检索请求者的代币余额。
     */
    function myTokens()
        public
        view
        returns(uint256)
    {
        address _customerAddress = msg.sender; // 获得发送者的地址
        return balanceOf(_customerAddress);
    }
    
    /**
     * 取回请求者拥有的股息。
     * 如果`_includeReferralBonus` 的值为1,那么推荐奖金将被计算在内。
     * 其原因是,在网页的前端,我们希望得到全局汇总。
     * 但在内部计算中,我们希望分开计算。
     */ 
    function myDividends(bool _includeReferralBonus) // 返回分红数,传入的参数用来指示是否考虑推荐分红
        public 
        view 
        returns(uint256)
    {
        address _customerAddress = msg.sender;
        return _includeReferralBonus ? dividendsOf(_customerAddress) + referralBalance_[_customerAddress] : dividendsOf(_customerAddress) ;
    }
    
    /**
     * 检索任意地址的代币余额。
     */
    function balanceOf(address _customerAddress)
        view
        public
        returns(uint256)
    {
        return tokenBalanceLedger_[_customerAddress];
    }
    
    /**
     * 检索任意地址的股息余额。
     */
    function dividendsOf(address _customerAddress)
        view
        public
        returns(uint256)
    {
        return (uint256) ((int256)(profitPerShare_ * tokenBalanceLedger_[_customerAddress]) - payoutsTo_[_customerAddress]) / magnitude;
    }
    
    /**
     * 返回代币买入的价格。
     */
    function sellPrice() 
        public 
        view 
        returns(uint256)
    {
        // 我们的计算依赖于代币供应,所以我们需要知道供应量。
        if(tokenSupply_ == 0){
            return tokenPriceInitial_ - tokenPriceIncremental_;
        } else {
            uint256 _ethereum = tokensToEthereum_(1e18);
            uint256 _dividends = SafeMath.div(_ethereum, dividendFee_  );
            uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
            return _taxedEthereum;
        }
    }
    
    /**
     * 返回代币卖出的价格。
     */
    function buyPrice() 
        public 
        view 
        returns(uint256)
    {
        // 我们的计算依赖于代币供应,所以我们需要知道供应量。
        if(tokenSupply_ == 0){
            return tokenPriceInitial_ + tokenPriceIncremental_;
        } else {
            uint256 _ethereum = tokensToEthereum_(1e18);
            uint256 _dividends = SafeMath.div(_ethereum, dividendFee_  );
            uint256 _taxedEthereum = SafeMath.add(_ethereum, _dividends);
            return _taxedEthereum;
        }
    }
    
    /**
     * 前端功能,动态获取买入订单价格。
     */
    function calculateTokensReceived(uint256 _ethereumToSpend) 
        public 
        view 
        returns(uint256)
    {
        uint256 _dividends = SafeMath.div(_ethereumToSpend, dividendFee_);
        uint256 _taxedEthereum = SafeMath.sub(_ethereumToSpend, _dividends);
        uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);
        
        return _amountOfTokens;
    }
    
    /**
     * 前端功能,动态获取卖出订单价格。
     */
    function calculateEthereumReceived(uint256 _tokensToSell) 
        public 
        view 
        returns(uint256)
    {
        require(_tokensToSell <= tokenSupply_);
        uint256 _ethereum = tokensToEthereum_(_tokensToSell);
        uint256 _dividends = SafeMath.div(_ethereum, dividendFee_);
        uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
        return _taxedEthereum;
    }
    
    
    /*==========================================
    =            INTERNAL FUNCTIONS  内部函数   =
    ==========================================*/
    function purchaseTokens(uint256 _incomingEthereum, address _referredBy)
        antiEarlyWhale(_incomingEthereum)
        internal
        returns(uint256)
    {
        // 数据设置
        address _customerAddress = msg.sender;
        uint256 _undividedDividends = SafeMath.div(_incomingEthereum, dividendFee_);
        uint256 _referralBonus = SafeMath.div(_undividedDividends, 3);
        uint256 _dividends = SafeMath.sub(_undividedDividends, _referralBonus);
        uint256 _taxedEthereum = SafeMath.sub(_incomingEthereum, _undividedDividends);
        uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);
        uint256 _fee = _dividends * magnitude;
 
        // 禁止恶意执行
        // 防止溢出
        // (防止黑客入侵)
        // 定义SAFEMATH保证数据安全。
        require(_amountOfTokens > 0 && (SafeMath.add(_amountOfTokens,tokenSupply_) > tokenSupply_));
        
        // 用户是否被主节点引用?
        if(
            // 是否有推荐者?
            _referredBy != 0x0000000000000000000000000000000000000000 &&

            // 禁止作弊!
            _referredBy != _customerAddress && // 不能自己推荐自己
            
            // 推荐人是否有足够的代币?
            // 确保推荐人是诚实的主节点
            tokenBalanceLedger_[_referredBy] >= stakingRequirement
        ){
            // 财富再分配
            referralBalance_[_referredBy] = SafeMath.add(referralBalance_[_referredBy], _referralBonus);
        } else {
            // 无需购买
            // 添加推荐奖励到全局分红
            _dividends = SafeMath.add(_dividends, _referralBonus); // 把推荐奖励还给分红
            _fee = _dividends * magnitude;
        }
        
        // 我们不能给予无尽的以太坊
        if(tokenSupply_ > 0){
            
            // 添加代币到代币池
            tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens);
 
            // 获取这笔交易所获得的股息,并将平均分配给所有股东
            profitPerShare_ += (_dividends * magnitude / (tokenSupply_));
            
            // 计算用户通过购买获得的代币数量。 
            _fee = _fee - (_fee-(_amountOfTokens * (_dividends * magnitude / (tokenSupply_))));
        
        } else {
            // 添加代币到代币池
            tokenSupply_ = _amountOfTokens;
        }
        
        // 更新代币供应总量及用户地址
        tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        
        // 告诉买卖双方在拥有代币前不会获得分红;
        // 我知道你认为你做了,但是你没有做。
        int256 _updatedPayouts = (int256) ((profitPerShare_ * _amountOfTokens) - _fee);
        payoutsTo_[_customerAddress] += _updatedPayouts;
        
        // 重大事件
        onTokenPurchase(_customerAddress, _incomingEthereum, _amountOfTokens, _referredBy);
        
        return _amountOfTokens;
    }

    /**
     * 通过以太坊传入数量计算代币价格;
     * 这是一个算法,在白皮书中能找到它的科学算法;
     * 做了一些修改,以防止十进制错误和代码的上下溢出。
     */
    function ethereumToTokens_(uint256 _ethereum) // 计算ETH兑换代币的汇率
        internal
        view
        returns(uint256)
    {
        uint256 _tokenPriceInitial = tokenPriceInitial_ * 1e18;
        uint256 _tokensReceived = 
         (
            (
                // 向下溢出尝试
                SafeMath.sub(
                    (sqrt
                        (
                            (_tokenPriceInitial**2)
                            +
                            (2*(tokenPriceIncremental_ * 1e18)*(_ethereum * 1e18))
                            +
                            (((tokenPriceIncremental_)**2)*(tokenSupply_**2))
                            +
                            (2*(tokenPriceIncremental_)*_tokenPriceInitial*tokenSupply_)
                        )
                    ), _tokenPriceInitial
                )
            )/(tokenPriceIncremental_)
        )-(tokenSupply_)
        ;
  
        return _tokensReceived;
    }
    
    /**
     * 计算代币出售的价格。
     * 这是一个算法,在白皮书中能找到它的科学算法;
     * 做了一些修改,以防止十进制错误和代码的上下溢出。
     */
     function tokensToEthereum_(uint256 _tokens)
        internal
        view
        returns(uint256)
    {

        uint256 tokens_ = (_tokens + 1e18);
        uint256 _tokenSupply = (tokenSupply_ + 1e18);
        uint256 _etherReceived =
        (
            // underflow attempts BTFO
            SafeMath.sub(
                (
                    (
                        (
                            tokenPriceInitial_ +(tokenPriceIncremental_ * (_tokenSupply/1e18))
                        )-tokenPriceIncremental_
                    )*(tokens_ - 1e18)
                ),(tokenPriceIncremental_*((tokens_**2-tokens_)/1e18))/2
            )
        /1e18);
        return _etherReceived;
    }
    
    
    //这里会消耗Gas
    //你大概会多消耗1gwei
    function sqrt(uint x) internal pure returns (uint y) {
        uint z = (x + 1) / 2;
        y = x;
        while (z < y) {
            y = z;
            z = (x / z + z) / 2;
        }
    }
}

/**
 * @title SafeMath函数
 * @dev 安全的数学运算
 */
library SafeMath {

    /**
    * @dev 两个数字乘法,抛出溢出。
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }

    /**
    * @dev 两个数字的整数除法。
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // 值为0时自动抛出
        uint256 c = a / b;
        // assert(a == b * c + a % b); // 否则不成立
        return c;
    }

    /**
    * @dev 两个数字的减法,如果减数大于被减数,则溢出抛出。
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    /**
    * @dev 两个数字的加法,向上溢出抛出
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"dividendsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_ethereumToSpend","type":"uint256"}],"name":"calculateTokensReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokensToSell","type":"uint256"}],"name":"calculateEthereumReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"onlyAmbassadors","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"administrators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakingRequirement","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_includeReferralBonus","type":"bool"}],"name":"myDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEthereumBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"setStakingRequirement","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_identifier","type":"bytes32"},{"name":"_status","type":"bool"}],"name":"setAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"myTokens","outputs":[{"name":"","type":"uint256"}],"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":"disableInitialStage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_referredBy","type":"address"}],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"reinvest","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":"customerAddress","type":"address"},{"indexed":false,"name":"incomingEthereum","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"},{"indexed":true,"name":"referredBy","type":"address"}],"name":"onTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"tokensBurned","type":"uint256"},{"indexed":false,"name":"ethereumEarned","type":"uint256"}],"name":"onTokenSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumReinvested","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"}],"name":"onReinvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumWithdrawn","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"}]

60606040526040805190810160405280600a81526020017f4c6173744865726f334400000000000000000000000000000000000000000000815250600090805190602001906200005192919062000a0e565b506040805190810160405280600481526020017f4b65797300000000000000000000000000000000000000000000000000000000815250600190805190602001906200009f92919062000a0e565b5068056bc75e2d6310000060025560006008556001600b60006101000a81548160ff0219169083151502179055503415620000d957600080fd5b6001600a60007fdacb12a29ec52e618a1dbe39a3317833066e94371856cc2013565dab2ae6fa6260010260001916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360007324257cf6febc8aaae2dc20906d4db1c619d4032973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600073ea01f6203bd55ba694594fdb5575f2936db7f69873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360007322caa6670991d67bf0ea033156114f07de4aa20b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600073f9d7f59e5d0711f5482968d69b5aee251945d1c573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000734d82b6839fd64ef7d3af64080167a42bf9b9e33273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000731f50451b941d163837623e25e22033c11626491c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600073c68538d6971d1b0ac8829f8b14e6a9b2af61411973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360007323183dafd738fb876c363da7651a679fcb24b65773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360007395e8713a5d2bf0ddaf8d0819e73907a8cee3d11173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600073976f6397ae155239289d6cb7904e6730beba7c7973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600073c26bb52d97ba7e4c6da8e7b07d1b8b78be178fbd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360007323c654314eadaae05857de5a61c1228c3328280773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600073a732e7665ff54ba63ae40e67fac9f23ecd0b122373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600073445b660236c39f5bc98bc49dddc7cf1f246a40ab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360007360e31b8b79bd92302fe452242ea6f7672a77a80f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600073bbefe89ebb2a0e15921f07f041be5691d834a28773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000735ad183e481cf0477c024a96c5d678a88249295b873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360007310c5423a46a09d6c5794cdd507ee9da7e406f09573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000739e191643d643aa5908c5b9d3b10c27ad9fb4acbe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000732c389a382003e9467a84932e68a35cea27a34b8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000734af87534cb13b473d8c1199093a8052b5ad6661b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000abd565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000a5157805160ff191683800117855562000a82565b8280016001018555821562000a82579182015b8281111562000a8157825182559160200191906001019062000a64565b5b50905062000a91919062000a95565b5090565b62000aba91905b8082111562000ab657600081600090555060010162000a9c565b5090565b90565b61239c8062000acd6000396000f30060606040526004361061015e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b1461016c57806306fdde03146101b957806310d0ffdd1461024757806318160ddd1461027e57806322609373146102a757806327defa1f146102de578063313ce5671461030b578063392efb521461033a5780633ccfd60b146103795780634b7503341461038e57806356d399e8146103b7578063688abbf7146103e05780636b2f46321461041957806370a08231146104425780638328b6101461048f5780638620410b146104b257806389135ae9146104db578063949e8acd1461050d57806395d89b4114610536578063a8e04f34146105c4578063a9059cbb146105d9578063b84c824614610633578063c47f002714610690578063e4849b32146106ed578063e9fad8ee14610710578063f088d54714610725578063fdb5a03e14610767575b61016934600061077c565b50005b341561017757600080fd5b6101a3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061107c565b6040518082815260200191505060405180910390f35b34156101c457600080fd5b6101cc61111e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561020c5780820151818401526020810190506101f1565b50505050905090810190601f1680156102395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025257600080fd5b61026860048080359060200190919050506111bc565b6040518082815260200191505060405180910390f35b341561028957600080fd5b6102916111f4565b6040518082815260200191505060405180910390f35b34156102b257600080fd5b6102c860048080359060200190919050506111fe565b6040518082815260200191505060405180910390f35b34156102e957600080fd5b6102f1611247565b604051808215151515815260200191505060405180910390f35b341561031657600080fd5b61031e61125a565b604051808260ff1660ff16815260200191505060405180910390f35b341561034557600080fd5b61035f60048080356000191690602001909190505061125f565b604051808215151515815260200191505060405180910390f35b341561038457600080fd5b61038c61127f565b005b341561039957600080fd5b6103a161141c565b6040518082815260200191505060405180910390f35b34156103c257600080fd5b6103ca61147a565b6040518082815260200191505060405180910390f35b34156103eb57600080fd5b61040360048080351515906020019091905050611480565b6040518082815260200191505060405180910390f35b341561042457600080fd5b61042c6114ec565b6040518082815260200191505060405180910390f35b341561044d57600080fd5b610479600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061150b565b6040518082815260200191505060405180910390f35b341561049a57600080fd5b6104b06004808035906020019091905050611554565b005b34156104bd57600080fd5b6104c56115e8565b6040518082815260200191505060405180910390f35b34156104e657600080fd5b61050b6004808035600019169060200190919080351515906020019091905050611646565b005b341561051857600080fd5b610520611707565b6040518082815260200191505060405180910390f35b341561054157600080fd5b61054961171c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561058957808201518184015260208101905061056e565b50505050905090810190601f1680156105b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156105cf57600080fd5b6105d76117ba565b005b34156105e457600080fd5b610619600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611861565b604051808215151515815260200191505060405180910390f35b341561063e57600080fd5b61068e600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b93565b005b341561069b57600080fd5b6106eb600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611c37565b005b34156106f857600080fd5b61070e6004808035906020019091905050611cdb565b005b341561071b57600080fd5b610723611f09565b005b610751600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611f70565b6040518082815260200191505060405180910390f35b341561077257600080fd5b61077a611f82565b005b60008060008060008060008060008a6000339050600b60009054906101000a900460ff1680156107be57506801158e460913d00000826107ba6114ec565b0311155b15610cac5760011515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561086c5750670de0b6b3a764000082600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540111155b151561087757600080fd5b6108c0600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836120f6565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503399506109148d600a60ff16612114565b9850610921896003612114565b975061092d898961212f565b96506109398d8a61212f565b955061094486612148565b94506801000000000000000087029350600085118015610970575060085461096e866008546120f6565b115b151561097b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16141580156109e457508973ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614155b8015610a315750600254600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15610ac757610a7f600560008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054896120f6565b600560008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ae2565b610ad187896120f6565b965068010000000000000000870293505b60006008541115610b4d57610af9600854866120f6565b600881905550600854680100000000000000008802811515610b1757fe5b04600960008282540192505081905550600854680100000000000000008802811515610b3f57fe5b048502840384039350610b55565b846008819055505b610b9e600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866120f6565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083856009540203925082600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508b73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58f88604051808381526020018281526020019250505060405180910390a3849a5061106c565b6000600b60006101000a81548160ff021916908315150217905550339950610cd88d600a60ff16612114565b9850610ce5896003612114565b9750610cf1898961212f565b9650610cfd8d8a61212f565b9550610d0886612148565b94506801000000000000000087029350600085118015610d345750600854610d32866008546120f6565b115b1515610d3f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614158015610da857508973ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614155b8015610df55750600254600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15610e8b57610e43600560008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054896120f6565b600560008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ea6565b610e9587896120f6565b965068010000000000000000870293505b60006008541115610f1157610ebd600854866120f6565b600881905550600854680100000000000000008802811515610edb57fe5b04600960008282540192505081905550600854680100000000000000008802811515610f0357fe5b048502840384039350610f19565b846008819055505b610f62600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866120f6565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083856009540203925082600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508b73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58f88604051808381526020018281526020019250505060405180910390a3849a505b5050505050505050505092915050565b600068010000000000000000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600954020381151561111657fe5b049050919050565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111b45780601f10611189576101008083540402835291602001916111b4565b820191906000526020600020905b81548152906001019060200180831161119757829003601f168201915b505050505081565b6000806000806111d085600a60ff16612114565b92506111dc858461212f565b91506111e782612148565b9050809350505050919050565b6000600854905090565b600080600080600854851115151561121557600080fd5b61121e856121d5565b925061122e83600a60ff16612114565b915061123a838361212f565b9050809350505050919050565b600b60009054906101000a900460ff1681565b601281565b600a6020528060005260406000206000915054906101000a900460ff1681565b600080600061128e6001611480565b11151561129a57600080fd5b3391506112a76000611480565b9050680100000000000000008102600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054810190506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156113ca57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc826040518082815260200191505060405180910390a25050565b60008060008060006008541415611441576402540be40064174876e800039350611474565b611452670de0b6b3a76400006121d5565b925061146283600a60ff16612114565b915061146e838361212f565b90508093505b50505090565b60025481565b60008033905082611499576114948161107c565b6114e4565b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114e28261107c565b015b915050919050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000339050600a600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff1615156115dd57600080fd5b816002819055505050565b6000806000806000600854141561160d576402540be40064174876e800019350611640565b61161e670de0b6b3a76400006121d5565b925061162e83600a60ff16612114565b915061163a83836120f6565b90508093505b50505090565b6000339050600a600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff1615156116cf57600080fd5b81600a6000856000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000803390506117168161150b565b91505090565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117b25780601f10611787576101008083540402835291602001916117b2565b820191906000526020600020905b81548152906001019060200180831161179557829003601f168201915b505050505081565b6000339050600a600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561184357600080fd5b6000600b60006101000a81548160ff02191690831515021790555050565b600080600080600080611872611707565b11151561187e57600080fd5b339350600b60009054906101000a900460ff161580156118dd5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548611155b15156118e857600080fd5b60006118f46001611480565b11156119035761190261127f565b5b61191186600a60ff16612114565b925061191d868461212f565b9150611928836121d5565b90506119366008548461212f565b600881905550611985600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548761212f565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a11600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836120f6565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560095402600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508160095402600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611b1a600954600854680100000000000000008402811515611b1457fe5b046120f6565b6009819055508673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600194505050505092915050565b6000339050600a600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515611c1c57600080fd5b8160019080519060200190611c329291906122cb565b505050565b6000339050600a600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515611cc057600080fd5b8160009080519060200190611cd69291906122cb565b505050565b6000806000806000806000611cee611707565b111515611cfa57600080fd5b339550600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548711151515611d4b57600080fd5b869450611d57856121d5565b9350611d6784600a60ff16612114565b9250611d73848461212f565b9150611d816008548661212f565b600881905550611dd0600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548661212f565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550680100000000000000008202856009540201905080600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555060006008541115611eaa57611ea3600954600854680100000000000000008602811515611e9d57fe5b046120f6565b6009819055505b8573ffffffffffffffffffffffffffffffffffffffff167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a311398684604051808381526020018281526020019250505060405180910390a250505050505050565b600080339150600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115611f6457611f6381611cdb565b5b611f6c61127f565b5050565b6000611f7c348361077c565b50919050565b600080600080611f926001611480565b111515611f9e57600080fd5b611fa86000611480565b9250339150680100000000000000008302600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054830192506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061209983600061077c565b90508173ffffffffffffffffffffffffffffffffffffffff167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b600080828401905083811015151561210a57fe5b8091505092915050565b600080828481151561212257fe5b0490508091505092915050565b600082821115151561213d57fe5b818303905092915050565b6000806000670de0b6b3a764000064174876e8000291506008546402540be4006121be6121b8600854866402540be400600202020260026008540a60026402540be4000a02670de0b6b3a76400008a02670de0b6b3a76400006402540be40002600202026002890a010101612280565b8561212f565b8115156121c757fe5b040390508092505050919050565b600080600080670de0b6b3a764000085019250670de0b6b3a7640000600854019150670de0b6b3a7640000612269670de0b6b3a764000085036402540be400670de0b6b3a76400008681151561222757fe5b046402540be4000264174876e8000103026002670de0b6b3a7640000876002890a0381151561225257fe5b046402540be4000281151561226357fe5b0461212f565b81151561227257fe5b049050809350505050919050565b60008060026001840181151561229257fe5b0490508291505b818110156122c55780915060028182858115156122b257fe5b04018115156122bd57fe5b049050612299565b50919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061230c57805160ff191683800117855561233a565b8280016001018555821561233a579182015b8281111561233957825182559160200191906001019061231e565b5b509050612347919061234b565b5090565b61236d91905b80821115612369576000816000905550600101612351565b5090565b905600a165627a7a7230582004882a55a5e970fc37fa5a538ac0f127486a8a69695e2993ed42248dbae6e9050029

Deployed Bytecode

0x60606040526004361061015e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b1461016c57806306fdde03146101b957806310d0ffdd1461024757806318160ddd1461027e57806322609373146102a757806327defa1f146102de578063313ce5671461030b578063392efb521461033a5780633ccfd60b146103795780634b7503341461038e57806356d399e8146103b7578063688abbf7146103e05780636b2f46321461041957806370a08231146104425780638328b6101461048f5780638620410b146104b257806389135ae9146104db578063949e8acd1461050d57806395d89b4114610536578063a8e04f34146105c4578063a9059cbb146105d9578063b84c824614610633578063c47f002714610690578063e4849b32146106ed578063e9fad8ee14610710578063f088d54714610725578063fdb5a03e14610767575b61016934600061077c565b50005b341561017757600080fd5b6101a3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061107c565b6040518082815260200191505060405180910390f35b34156101c457600080fd5b6101cc61111e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561020c5780820151818401526020810190506101f1565b50505050905090810190601f1680156102395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025257600080fd5b61026860048080359060200190919050506111bc565b6040518082815260200191505060405180910390f35b341561028957600080fd5b6102916111f4565b6040518082815260200191505060405180910390f35b34156102b257600080fd5b6102c860048080359060200190919050506111fe565b6040518082815260200191505060405180910390f35b34156102e957600080fd5b6102f1611247565b604051808215151515815260200191505060405180910390f35b341561031657600080fd5b61031e61125a565b604051808260ff1660ff16815260200191505060405180910390f35b341561034557600080fd5b61035f60048080356000191690602001909190505061125f565b604051808215151515815260200191505060405180910390f35b341561038457600080fd5b61038c61127f565b005b341561039957600080fd5b6103a161141c565b6040518082815260200191505060405180910390f35b34156103c257600080fd5b6103ca61147a565b6040518082815260200191505060405180910390f35b34156103eb57600080fd5b61040360048080351515906020019091905050611480565b6040518082815260200191505060405180910390f35b341561042457600080fd5b61042c6114ec565b6040518082815260200191505060405180910390f35b341561044d57600080fd5b610479600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061150b565b6040518082815260200191505060405180910390f35b341561049a57600080fd5b6104b06004808035906020019091905050611554565b005b34156104bd57600080fd5b6104c56115e8565b6040518082815260200191505060405180910390f35b34156104e657600080fd5b61050b6004808035600019169060200190919080351515906020019091905050611646565b005b341561051857600080fd5b610520611707565b6040518082815260200191505060405180910390f35b341561054157600080fd5b61054961171c565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561058957808201518184015260208101905061056e565b50505050905090810190601f1680156105b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156105cf57600080fd5b6105d76117ba565b005b34156105e457600080fd5b610619600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611861565b604051808215151515815260200191505060405180910390f35b341561063e57600080fd5b61068e600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b93565b005b341561069b57600080fd5b6106eb600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611c37565b005b34156106f857600080fd5b61070e6004808035906020019091905050611cdb565b005b341561071b57600080fd5b610723611f09565b005b610751600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611f70565b6040518082815260200191505060405180910390f35b341561077257600080fd5b61077a611f82565b005b60008060008060008060008060008a6000339050600b60009054906101000a900460ff1680156107be57506801158e460913d00000826107ba6114ec565b0311155b15610cac5760011515600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561086c5750670de0b6b3a764000082600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540111155b151561087757600080fd5b6108c0600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836120f6565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503399506109148d600a60ff16612114565b9850610921896003612114565b975061092d898961212f565b96506109398d8a61212f565b955061094486612148565b94506801000000000000000087029350600085118015610970575060085461096e866008546120f6565b115b151561097b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16141580156109e457508973ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614155b8015610a315750600254600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15610ac757610a7f600560008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054896120f6565b600560008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ae2565b610ad187896120f6565b965068010000000000000000870293505b60006008541115610b4d57610af9600854866120f6565b600881905550600854680100000000000000008802811515610b1757fe5b04600960008282540192505081905550600854680100000000000000008802811515610b3f57fe5b048502840384039350610b55565b846008819055505b610b9e600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866120f6565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083856009540203925082600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508b73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58f88604051808381526020018281526020019250505060405180910390a3849a5061106c565b6000600b60006101000a81548160ff021916908315150217905550339950610cd88d600a60ff16612114565b9850610ce5896003612114565b9750610cf1898961212f565b9650610cfd8d8a61212f565b9550610d0886612148565b94506801000000000000000087029350600085118015610d345750600854610d32866008546120f6565b115b1515610d3f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614158015610da857508973ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614155b8015610df55750600254600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15610e8b57610e43600560008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054896120f6565b600560008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ea6565b610e9587896120f6565b965068010000000000000000870293505b60006008541115610f1157610ebd600854866120f6565b600881905550600854680100000000000000008802811515610edb57fe5b04600960008282540192505081905550600854680100000000000000008802811515610f0357fe5b048502840384039350610f19565b846008819055505b610f62600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054866120f6565b600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555083856009540203925082600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508b73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58f88604051808381526020018281526020019250505060405180910390a3849a505b5050505050505050505092915050565b600068010000000000000000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600954020381151561111657fe5b049050919050565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111b45780601f10611189576101008083540402835291602001916111b4565b820191906000526020600020905b81548152906001019060200180831161119757829003601f168201915b505050505081565b6000806000806111d085600a60ff16612114565b92506111dc858461212f565b91506111e782612148565b9050809350505050919050565b6000600854905090565b600080600080600854851115151561121557600080fd5b61121e856121d5565b925061122e83600a60ff16612114565b915061123a838361212f565b9050809350505050919050565b600b60009054906101000a900460ff1681565b601281565b600a6020528060005260406000206000915054906101000a900460ff1681565b600080600061128e6001611480565b11151561129a57600080fd5b3391506112a76000611480565b9050680100000000000000008102600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054810190506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156113ca57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc826040518082815260200191505060405180910390a25050565b60008060008060006008541415611441576402540be40064174876e800039350611474565b611452670de0b6b3a76400006121d5565b925061146283600a60ff16612114565b915061146e838361212f565b90508093505b50505090565b60025481565b60008033905082611499576114948161107c565b6114e4565b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114e28261107c565b015b915050919050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000339050600a600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff1615156115dd57600080fd5b816002819055505050565b6000806000806000600854141561160d576402540be40064174876e800019350611640565b61161e670de0b6b3a76400006121d5565b925061162e83600a60ff16612114565b915061163a83836120f6565b90508093505b50505090565b6000339050600a600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff1615156116cf57600080fd5b81600a6000856000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000803390506117168161150b565b91505090565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117b25780601f10611787576101008083540402835291602001916117b2565b820191906000526020600020905b81548152906001019060200180831161179557829003601f168201915b505050505081565b6000339050600a600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561184357600080fd5b6000600b60006101000a81548160ff02191690831515021790555050565b600080600080600080611872611707565b11151561187e57600080fd5b339350600b60009054906101000a900460ff161580156118dd5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548611155b15156118e857600080fd5b60006118f46001611480565b11156119035761190261127f565b5b61191186600a60ff16612114565b925061191d868461212f565b9150611928836121d5565b90506119366008548461212f565b600881905550611985600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548761212f565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a11600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836120f6565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560095402600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508160095402600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611b1a600954600854680100000000000000008402811515611b1457fe5b046120f6565b6009819055508673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600194505050505092915050565b6000339050600a600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515611c1c57600080fd5b8160019080519060200190611c329291906122cb565b505050565b6000339050600a600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515611cc057600080fd5b8160009080519060200190611cd69291906122cb565b505050565b6000806000806000806000611cee611707565b111515611cfa57600080fd5b339550600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548711151515611d4b57600080fd5b869450611d57856121d5565b9350611d6784600a60ff16612114565b9250611d73848461212f565b9150611d816008548661212f565b600881905550611dd0600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548661212f565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550680100000000000000008202856009540201905080600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555060006008541115611eaa57611ea3600954600854680100000000000000008602811515611e9d57fe5b046120f6565b6009819055505b8573ffffffffffffffffffffffffffffffffffffffff167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a311398684604051808381526020018281526020019250505060405180910390a250505050505050565b600080339150600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115611f6457611f6381611cdb565b5b611f6c61127f565b5050565b6000611f7c348361077c565b50919050565b600080600080611f926001611480565b111515611f9e57600080fd5b611fa86000611480565b9250339150680100000000000000008302600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054830192506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061209983600061077c565b90508173ffffffffffffffffffffffffffffffffffffffff167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b600080828401905083811015151561210a57fe5b8091505092915050565b600080828481151561212257fe5b0490508091505092915050565b600082821115151561213d57fe5b818303905092915050565b6000806000670de0b6b3a764000064174876e8000291506008546402540be4006121be6121b8600854866402540be400600202020260026008540a60026402540be4000a02670de0b6b3a76400008a02670de0b6b3a76400006402540be40002600202026002890a010101612280565b8561212f565b8115156121c757fe5b040390508092505050919050565b600080600080670de0b6b3a764000085019250670de0b6b3a7640000600854019150670de0b6b3a7640000612269670de0b6b3a764000085036402540be400670de0b6b3a76400008681151561222757fe5b046402540be4000264174876e8000103026002670de0b6b3a7640000876002890a0381151561225257fe5b046402540be4000281151561226357fe5b0461212f565b81151561227257fe5b049050809350505050919050565b60008060026001840181151561229257fe5b0490508291505b818110156122c55780915060028182858115156122b257fe5b04018115156122bd57fe5b049050612299565b50919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061230c57805160ff191683800117855561233a565b8280016001018555821561233a579182015b8281111561233957825182559160200191906001019061231e565b5b509050612347919061234b565b5090565b61236d91905b80821115612369576000816000905550600101612351565b5090565b905600a165627a7a7230582004882a55a5e970fc37fa5a538ac0f127486a8a69695e2993ed42248dbae6e9050029

Swarm Source

bzzr://04882a55a5e970fc37fa5a538ac0f127486a8a69695e2993ed42248dbae6e905

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.