contract BurnableToken is BasicToken {

    event Burn(address indexed burner, uint256 value);


//@dev 销毁特定数量的令牌。
//@param _value要销毁的令牌数量。

    function burn(uint256 _value) public {
        _burn(msg.sender, _value);
    }

    function _burn(address _who, uint256 _value) internal {
        require(_value <= balances[_who]);  
    //不需要value <= totalSupply，因为这意味着
    //发件人的余额大于totalSupply，这应该是断言失败

        balances[_who] = balances[_who].sub(_value);
        totalSupply_ = totalSupply_.sub(_value);
        emit Burn(_who, _value);
        emit Transfer(_who, address(0), _value);
    }
}
function burn(uint256 _value) public {
    _burn(msg.sender, _value);
}

//@dev 销毁特定数量的令牌。
//@param _value要销毁的令牌数量。