ERC20PermitNoRevertMock.sol 988 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity ^0.8.0;
  3. import "../../token/ERC20/ERC20.sol";
  4. import "../../token/ERC20/extensions/draft-ERC20Permit.sol";
  5. contract ERC20PermitNoRevertMock is ERC20, ERC20Permit {
  6. constructor() ERC20("ERC20PermitNoRevertMock", "ERC20PermitNoRevertMock") ERC20Permit("ERC20PermitNoRevertMock") {}
  7. function permitThatMayRevert(
  8. address owner,
  9. address spender,
  10. uint256 value,
  11. uint256 deadline,
  12. uint8 v,
  13. bytes32 r,
  14. bytes32 s
  15. ) public virtual {
  16. super.permit(owner, spender, value, deadline, v, r, s);
  17. }
  18. function permit(
  19. address owner,
  20. address spender,
  21. uint256 value,
  22. uint256 deadline,
  23. uint8 v,
  24. bytes32 r,
  25. bytes32 s
  26. ) public virtual override {
  27. try this.permitThatMayRevert(owner, spender, value, deadline, v, r, s) {
  28. // do nothing
  29. } catch {
  30. // do nothing
  31. }
  32. }
  33. }