approve vs permit

molly·2023년 4월 22일
0

스마트컨트랙트

목록 보기
4/4
post-thumbnail

댑에서 ERC20토큰 권한을 요청하는 두 가지 방법

approve함수로 권한 요청

  1. 댑에서 ERC20토큰의 approve함수 호출

  2. 유저가 트랜잭션을 승인함으로써 함수 실행

  3. 댑에서 권한을 가져감

  4. 댑에 따라서 최종 스왑 컨트랙트가 실행되기 전에 approve에 대한 시그니쳐를 요청할 수도 있고 안할 수도 있음(유니스왑 요청, 클레이스왑 요청안함)

permit의 사인으로 권한 요청

  1. 댑과 ERC20토큰 둘 다 permit을 지원한다면 "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"의 사인을 요청

  2. 사용자는 해당 내용에 사인을 하고 시그니쳐는 댑이 보관

  3. 댑에서는 시그니쳐를 가지고 최종 스왑 컨트랙트가 실행되기 전에 permit함수를 요청하고 사용자의 시그니처를 파라미터로 넘겨 해당 시그니처가 함수 호출자임을 확인하면 approve함수를 실행하고 스왑컨트랙트를 실행하게 됨

    3-1. 오픈재플린의 permit컨트랙에서 permit 함수 안에 시그니처에 대한 검증과정이 끝나면 approve함수를 실행하게 되어있음

관련 문서

https://eips.ethereum.org/EIPS/eip-2612

profile
BlockChain R&D

0개의 댓글