궁금한 주제를 찾아보세요

비트코인, 스테이블코인, 온체인 데이터처럼 주제로 검색하세요.

다시 읽을 이야기

저장한 글은 이 브라우저에만 보관됩니다.

해설기술·생태계

Permit2의 권한 구조, 서명 만료와 토큰 승인 분리

Permit2에 주는 ERC-20 승인과 애플리케이션별 서명 권한을 두 층으로 나눠 읽고 AllowanceTransfer·SignatureTransfer의 만료와 nonce를 설명합니다.

서명 문서·모래시계·잠금문과 자산함을 나눈 Permit2 승인 구조 그림
주제의 이해를 돕기 위해 imagegen으로 제작한 AI 생성 개념 일러스트
먼저 읽는 핵심

기초 승인층은 토큰 계약이 Permit2에 준 allowance이고 응용층은 Permit2가 앱 spender에 부여한 서명 권한이다.
AllowanceTransfer는 기간·수량이 있는 재사용 권한, SignatureTransfer는 서명 기반 일회성 이동에 맞춰 설계됐다.
서명 expiration·sigDeadline·nonce와 토큰의 Permit2 allowance를 서로 다른 상태로 점검한다.

Permit2를 쓰려면 사용자가 먼저 각 ERC-20 토큰에서 Permit2 계약을 spender로 승인합니다. 그 위에서 Permit2 서명은 특정 애플리케이션 spender, 수량, 만료, nonce를 정해 권한을 부여하거나 일회성 전송을 허용합니다. 앱 연결을 끊거나 Permit2 서명 만료가 지나도 아래층의 ERC-20→Permit2 승인은 남을 수 있으므로 두 권한을 별도로 조회·취소해야 합니다.

Permit2 앞에는 기존 ERC-20 승인이 먼저 있다

Permit2는 여러 애플리케이션이 공통 승인 계약을 통해 토큰 이동 권한을 관리하게 하는 시스템입니다. 사용자는 토큰 계약의 approve에서 Permit2 계약 주소를 spender로 지정해야 합니다. 이 기초 allowance가 없으면 Permit2 서명만으로 토큰 계약에서 자산을 가져올 수 없습니다.

그 다음 사용자는 Permit2 typed data에 서명해 실제 디앱의 spender와 범위를 정합니다. 한 번의 토큰 승인을 바탕으로 앱마다 별도 서명 권한을 만들 수 있지만 Permit2 계약이 큰 기초 allowance를 보유하는 구조입니다. 공식 Permit2 주소와 체인 배포를 반드시 확인합니다.

Permit2의 두 승인층
층 저장 위치 주요 확인값
토큰→Permit2 각 ERC-20 allowance token·owner·Permit2·amount
Permit2→앱 Permit2 allowance 또는 서명 spender·amount·expiration·nonce
SignatureTransfer Permit2 nonce bitmap permitted amount·deadline·witness
지갑 연결 지갑 세션 도메인·요청 권한

AllowanceTransfer는 수량과 만료를 저장한다

Uniswap 문서는 AllowanceTransfer를 기간이 정해진 토큰 allowance를 관리하는 인터페이스로 설명합니다. 서명에는 token, amount, expiration, nonce와 spender가 들어가며 Permit2 계약이 이 상태를 저장합니다. 앱은 허용 수량과 기간 안에서 transferFrom을 호출할 수 있습니다.

expiration이 지나면 Permit2의 앱별 권한은 사용할 수 없지만 토큰 계약이 Permit2에 준 기초 승인이 자동 취소되는 것은 아닙니다. amount를 줄이거나 앱 권한을 취소하는 동작과 토큰 approve를 0으로 만드는 동작을 구분합니다. 화면에는 두 층을 함께 표시해야 합니다.

서명 만료와 토큰 승인의 종료는 서로 다른 상태 변화다.

JOBCOIN 해설

SignatureTransfer는 전송 단위 서명을 쓴다

SignatureTransfer는 지속 allowance를 저장하는 대신 사용자의 서명으로 특정 전송을 허용합니다. permitted 토큰과 최대 수량, nonce, deadline을 검증하고 서명을 소비해 재사용을 막습니다. 앱이 실제 요청 수량을 제출하므로 서명 허용량과 실행 수량의 관계를 확인해야 합니다.

permitWitnessTransferFrom은 애플리케이션별 추가 데이터를 witness로 서명에 결합할 수 있습니다. 주문 조건이나 수취 정보가 서명에 묶일 수 있지만 사용자가 지갑 화면에서 구조를 해석하지 못하면 위험을 읽기 어렵습니다. type string과 witness 내용, spender, 수취 경로를 공식 인터페이스와 대조합니다.

  • 토큰이 승인한 Permit2 계약 주소를 확인한다.
  • 앱 spender와 token·amount·expiration을 읽는다.
  • sigDeadline과 allowance expiration을 구분한다.
  • nonce 또는 unordered nonce가 재사용되지 않았는지 확인한다.

nonce 방식은 권한 유형에 따라 다르다

AllowanceTransfer는 저장된 allowance 항목의 nonce를 사용해 오래된 서명이 새 상태를 덮어쓰지 못하게 합니다. SignatureTransfer는 unordered nonce bitmap을 사용해 특정 nonce를 소비하면서 다른 독립 주문을 순서와 무관하게 처리할 수 있습니다. 숫자 하나가 작다고 최신 서명이라는 단순 순서 가정은 맞지 않을 수 있습니다.

batch 서명은 여러 토큰이나 권한을 한 번에 포함할 수 있습니다. 한 항목만 보고 승인하면 다른 배열 항목이 함께 유효해질 수 있습니다. 서명 디코더에서 모든 token·amount·spender를 펼쳐 보고, 사용하지 않는 nonce는 invalidate 함수로 무효화 가능한지 확인합니다.

취소는 어느 층을 닫을지 결정해야 한다

특정 디앱만 더 이상 쓰지 않는다면 Permit2 안의 해당 spender allowance를 취소하거나 만료시키는 방법이 적합할 수 있습니다. Permit2를 전혀 쓰지 않으려면 각 토큰 계약에서 Permit2에 준 allowance도 0으로 바꿔야 합니다. 후자는 토큰마다 온체인 거래와 수수료가 필요합니다.

지갑 연결 해제는 어느 승인층도 자동 변경하지 않습니다. 승인 관리 도구가 일반 ERC-20 allowance만 보여 주면 Permit2 내부 앱 권한을 놓칠 수 있고, Permit2 앱 권한만 보여 주면 기초 승인이 남습니다. 체인별로 두 조회 결과를 함께 기록합니다.

서명 화면과 공식 배포 주소를 우선 확인한다

Permit2를 흉내 낸 악성 계약에 무제한 approve를 하면 표준 기능과 무관하게 위험합니다. 앱 링크에서 제시한 주소만 믿지 말고 Uniswap 공식 저장소와 배포 정보를 통해 verifyingContract를 대조합니다. chain ID와 토큰 계약 주소도 확인합니다.

서명 뒤에는 Permit2 allowance와 nonce 상태, 실제 Token Transfer를 확인합니다. 기대한 swap이나 deposit이 실패했더라도 권한 설정만 성공했을 수 있습니다. 애플리케이션을 다시 사용할 계획이 없다면 실패 원인을 해결하기 전에 남은 권한부터 평가합니다.

자주 묻는 질문

Permit2 서명이 만료되면 토큰 approve도 사라지나요?

아닙니다. 앱별 Permit2 권한과 토큰 계약이 Permit2에 준 기초 allowance는 별도이므로 각각 확인해야 합니다.

SignatureTransfer는 무제한 승인이 아닌가요?

전송 단위 서명으로 설계됐지만 permitted amount, deadline, spender와 기초 ERC-20 승인의 범위를 정확히 읽어야 합니다.

디앱 연결을 끊으면 Permit2 권한이 취소되나요?

연결 세션만 종료됩니다. Permit2 내부 권한과 토큰→Permit2 allowance는 온체인 상태로 남을 수 있습니다.

직접 확인한 자료

자료 확인 2026.09.27
  1. Permit2 Overviewdocs.uniswap.org
  2. Uniswap Permit2github.com
AI 활용 안내

이 글은 AI로 초안을 구성한 뒤 공개 원문과 기술 문서를 대조해 작성했습니다. 대표 이미지는 AI 생성 개념 일러스트이며 실제 사건 사진이나 가격 차트가 아닙니다.

이해를 위한 정보 콘텐츠

이 글은 특정 자산의 매수·매도 또는 수익을 권유하지 않습니다. 자료의 발표 시점과 이후 변경 사항을 함께 확인해 주세요.

편집 원칙과 정정 안내 →