contract BurnableToken is BasicToken {

  event Burn(address indexed burner, uint256 value);

  /**
   * @dev 销毁指定数量的token.
   * @param _value 被销毁的token数量.
   */
  function burn(uint256 _value) public {
    _burn(msg.sender, _value);
  }

  function _burn(address _who, uint256 _value) internal {
    require(_value <= balances[_who]);
    balances[_who] = balances[_who].sub(_value);
    totalSupply_ = totalSupply_.sub(_value);
    emit Burn(_who, _value);
    emit Transfer(_who, address(0), _value);
  }
}
/**
 * @title 可销毁 Token
 * @dev Token被地销毁
 */
function burn(uint256 _value) public {
  _burn(msg.sender, _value);
}

/**
 * @dev 销毁指定数量的token.
 * @param _value 被销毁的token数量.
 */