ERC20Burnable.sol 990 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. pragma solidity ^0.4.24;
  2. import "./ERC20.sol";
  3. /**
  4. * @title Burnable Token
  5. * @dev Token that can be irreversibly burned (destroyed).
  6. */
  7. contract ERC20Burnable is ERC20 {
  8. event TokensBurned(address indexed burner, uint256 value);
  9. /**
  10. * @dev Burns a specific amount of tokens.
  11. * @param value The amount of token to be burned.
  12. */
  13. function burn(uint256 value) public {
  14. _burn(msg.sender, value);
  15. }
  16. /**
  17. * @dev Burns a specific amount of tokens from the target address and decrements allowance
  18. * @param from address The address which you want to send tokens from
  19. * @param value uint256 The amount of token to be burned
  20. */
  21. function burnFrom(address from, uint256 value) public {
  22. _burnFrom(from, value);
  23. }
  24. /**
  25. * @dev Overrides ERC20._burn in order for burn and burnFrom to emit
  26. * an additional Burn event.
  27. */
  28. function _burn(address who, uint256 value) internal {
  29. super._burn(who, value);
  30. emit TokensBurned(who, value);
  31. }
  32. }