1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- const { EIP712Signer } = require('@ticket721/e712')
- const Permit = [
- { name: 'owner', type: 'address' },
- { name: 'spender', type: 'address' },
- { name: 'value', type: 'uint256' },
- { name: 'nonce', type: 'uint256' },
- { name: 'deadline', type: 'uint256' },
- ]
- class PermitSigner extends EIP712Signer {
- constructor(_domain, _permitArgs) {
- super(_domain, ['Permit', Permit])
- this.permitArgs = _permitArgs
- }
- // Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)
- setPermitInfo(_permitArgs) {
- this.permitArgs = _permitArgs
- }
- getPayload() {
- return this.generatePayload(this.permitArgs, 'Permit')
- }
- async getSignature(privateKey) {
- const payload = this.getPayload()
- const { hex, v, r, s } = await this.sign(privateKey, payload)
- return {
- hex,
- v,
- r: '0x' + r,
- s: '0x' + s,
- }
- }
- getSignerAddress(permitArgs, signature) {
- const original_payload = this.generatePayload(permitArgs, 'Permit')
- return this.verify(original_payload, signature)
- }
- }
- module.exports = { PermitSigner }
|