eip712.js 768 B

123456789101112131415161718192021222324252627282930
  1. const ethSigUtil = require('eth-sig-util');
  2. const EIP712Domain = [
  3. { name: 'name', type: 'string' },
  4. { name: 'version', type: 'string' },
  5. { name: 'chainId', type: 'uint256' },
  6. { name: 'verifyingContract', type: 'address' },
  7. ];
  8. const Permit = [
  9. { name: 'owner', type: 'address' },
  10. { name: 'spender', type: 'address' },
  11. { name: 'value', type: 'uint256' },
  12. { name: 'nonce', type: 'uint256' },
  13. { name: 'deadline', type: 'uint256' },
  14. ];
  15. async function domainSeparator (name, version, chainId, verifyingContract) {
  16. return '0x' + ethSigUtil.TypedDataUtils.hashStruct(
  17. 'EIP712Domain',
  18. { name, version, chainId, verifyingContract },
  19. { EIP712Domain },
  20. ).toString('hex');
  21. }
  22. module.exports = {
  23. EIP712Domain,
  24. Permit,
  25. domainSeparator,
  26. };