궁금한 주제를 찾아보세요

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

다시 읽을 이야기

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

해설블록체인 기술

permit 서명은 무엇을 승인할까: EIP-2612 권한 읽기

EIP-2612 permit 서명의 owner·spender·value·nonce·deadline·domain을 읽고, 가스 없는 서명이 온체인 allowance로 바뀌는 과정을 설명합니다.

난이도 중급주제 카테고리와 개념 밀도 기준
서명한 문서가 잠금장치와 여러 권한으로 이어지는 EIP-2612 permit 개념도
주제의 이해를 돕기 위한 개념 일러스트
먼저 읽는 핵심

permit은 토큰을 즉시 보내는 서명이 아니라 spender의 ERC-20 allowance를 설정하는 서명이다.
nonce는 재사용을 막고 deadline은 제출 가능 시간을 제한하며 domain은 토큰 계약과 체인을 구분한다.
서명 후 사용하지 않아도 만료 전 제출될 수 있으므로 spender·value·deadline을 승인 화면에서 직접 확인한다.

EIP-2612 permit은 토큰 보유자가 EIP-712 서명으로 사용 권한을 받을 주소(spender)와 승인 한도(allowance)를 정해 주는 ERC-20 확장입니다. 서명에는 소유자, 받는 주소, 수량, 논스(nonce), 마감 시각(deadline)과 함께 토큰 계약·체인을 구분하는 도메인 정보가 묶입니다. 서명 자체에는 가스가 들지 않지만, 누구든 유효한 서명을 permit 함수에 제출하면 온체인 한도가 생깁니다. 송금이 아니라는 이유로 가볍게 서명하면 안 됩니다.

permit은 approve를 서명으로 표현합니다

일반 ERC-20 approve는 토큰 보유자가 직접 온체인 거래를 보내 상대 주소의 한도를 바꿉니다. EIP-2612는 permit(owner, spender, value, deadline, v, r, s)를 더해, 보유자가 만든 서명을 제3자가 제출할 수 있게 합니다. 제출하는 쪽이 가스를 내므로 소유자가 네이티브 코인이 없어도 승인과 뒤따르는 작업을 한 흐름으로 묶을 수 있습니다.

permit 실행이 성공하면 allowance[owner][spender]가 서명한 수량으로 설정되고 Approval 이벤트가 나옵니다. 토큰이 곧바로 옮겨지는 것은 아니지만, 상대 주소는 그 뒤 transferFrom을 쓸 수 있습니다. 사용자 눈에는 서명 요청 하나로 보여도 경제적 효과는 approve 거래와 같은 토큰 이동 권한입니다.

EIP-2612 permit 필드 읽기
필드 의미 확인 질문
owner 토큰 소유자 내 주소인가
spender 이동 권한을 받을 주소 공식 계약인가
value 기본 단위로 적은 승인 수량 의도한 한도인가
nonce·deadline 재사용 방지·시간 제한 현재 값과 만료 시각이 적절한가
domain 토큰·체인 구분 계약과 체인 ID가 맞는가
그림으로 보기키 보관과 거래 서명
보호된 개인키로 거래에 서명하고 노드가 서명을 검증하는 개념도
그림과 함께 짚어볼 본문 내용

그림은 이 주제의 공통 개념을 단순화한 설명입니다. 아래 항목에서 이 글의 구체적인 조건과 예외를 함께 읽어보세요.

  1. permit은 approve를 서명으로 표현합니다

    일반 ERC-20 approve는 토큰 보유자가 직접 온체인 거래를 보내 상대 주소의 한도를 바꿉니다.

  2. 논스는 같은 서명의 재사용을 막습니다

    표준은 소유자별 nonces 값을 서명 데이터에 넣고, permit이 성공하면 1 늘어나게 합니다.

  3. 마감 시각은 제출 창을 제한할 뿐 자동 취소가 아닙니다

    permit은 현재 블록 타임스탬프가 마감 시각보다 늦으면 실패해야 합니다.

설명을 위한 개념도 · 실제 가격·거래 내역·통계가 아닙니다.

논스는 같은 서명의 재사용을 막습니다

표준은 소유자별 nonces 값을 서명 데이터에 넣고, permit이 성공하면 1 늘어나게 합니다. 이미 쓴 논스의 서명은 다시 제출할 수 없으므로 같은 승인을 되풀이해 실행하는 재생 공격을 막습니다. 서명 화면이 논스를 숨기더라도 토큰 계약의 현재 nonces(owner) 값과 요청 값을 비교해 볼 수 있습니다.

논스는 취소 수단과 같지 않습니다. 아직 제출되지 않은 서명을 무효로 만들려면 같은 논스를 써 버리는 다른 permit이나, 토큰 구현이 따로 제공하는 방법이 필요할 수 있습니다. 표준에는 일반적인 서명 취소 함수가 없으니 서명하기 전에 마감 시각을 짧게 잡는 것이 중요합니다.

가스를 쓰지 않은 서명도 제출되는 순간 온체인 권한이 됩니다.

JOBCOIN 해설

마감 시각은 제출 창을 제한할 뿐 자동 취소가 아닙니다

permit은 현재 블록 타임스탬프가 마감 시각보다 늦으면 실패해야 합니다. 마감을 짧게 잡으면 서명이 피싱 기록이나 중계자에게 오래 남아 실행될 여지가 줄어듭니다. 사실상 무기한인 큰 값을 넣으면 쓰지 않은 서명이 오랫동안 유효할 수 있습니다.

마감 전에 permit이 제출돼 한도가 생기면, 그 뒤 마감 시각이 지나도 이미 생긴 한도가 저절로 0이 되지는 않습니다. 만료는 서명을 제출할 수 있는 시간에만 적용됩니다. 생긴 승인을 없애려면 토큰 계약에서 approve 0을 따로 보내거나 새 permit으로 한도를 바꿔야 합니다.

  • 토큰 계약과 체인 ID가 공식 배포와 맞는지 확인합니다.
  • 받는 주소를 이름이 아니라 전체 주소로 대조합니다.
  • 수량을 소수 자릿수로 환산해 실제 승인량을 계산합니다.
  • 마감 시각이 지나도 기존 한도는 남는다는 점을 기억합니다.

EIP-712 도메인이 다른 계약과 체인을 구분합니다

EIP-2612 서명 해시는 DOMAIN_SEPARATOR와 Permit 구조체 해시를 결합합니다. 도메인에는 name, version, chainId, verifyingContract 등이 들어갈 수 있어, 다른 토큰이나 체인에서 같은 필드의 서명을 재생하는 일을 줄여 줍니다. 토큰이 프록시 구조이거나 체인이 포크된 경우에는 구현이 도메인을 어떻게 계산하는지 확인합니다.

지갑이 구조화 데이터를 사람이 읽을 수 있게 보여 주면 필드를 하나씩 검토합니다. 내용을 모른 채 서명하는 방식처럼 해시만 보이면 받는 주소와 수량을 따로 확인하기 어렵습니다. 공식 탈중앙 앱에서 다시 시작하고, 하드웨어 지갑이 구조화 데이터를 해석해 보여 주는지 확인합니다.

permit과 뒤따르는 호출은 한 거래에 묶일 수 있습니다

탈중앙 앱은 사용자의 permit 서명을 받은 뒤 라우터 거래 안에서 permit을 먼저 제출하고 곧바로 transferFrom이나 deposit을 실행할 수 있습니다. 사용자로서는 승인과 예치라는 두 번의 온체인 거래를 한 번으로 줄이는 셈입니다. 다만 뒤따르는 호출이 실패했을 때 permit도 같은 거래 안에서 함께 되돌려지는지, 따로 제출됐는지에 따라 남는 한도가 달라집니다.

중계자가 permit만 먼저 제출하고 뒤 작업은 실행하지 않을 수도 있습니다. 프로토콜은 permit과 목적 작업을 한 덩어리로 처리하고 최소 수령 조건을 걸어야 합니다. 사용자는 거래가 실패한 뒤 한도와 논스를 다시 조회해 권한이 남았는지 확인합니다.

permit이라는 이름이 모두 EIP-2612는 아닙니다

DAI 방식 permit처럼 수량 대신 allowed라는 참거짓 값을 쓰는 먼저 나온 구현이 있고, NFT용 permit이나 Permit2도 필드와 논스 체계가 다릅니다. 화면에 permit이라고 적혀 있다고 해서 EIP-2612 형식이라고 가정하지 않습니다. 실제 검증 계약 주소와 타입 해시, 함수 선택자를 확인합니다.

OpenZeppelin의 ERC20Permit 구현은 EIP-712와 논스 유틸리티를 결합하지만, 토큰마다 이름·버전·프록시 배포 방식은 다를 수 있습니다. 검증된 소스와 공식 인터페이스를 확인하고 테스트넷에서 서명 디코딩을 연습해 봅니다. 서명한 뒤에는 Approval 이벤트와 한도 값을 기록합니다.

자주 묻는 질문

permit 서명만 하면 토큰이 바로 빠져나가나요?

서명 자체는 한도를 승인하는 권한입니다. 유효한 서명이 온체인에 제출되고 상대 주소가 transferFrom을 호출해야 토큰이 옮겨집니다.

마감 시각이 지나면 이미 만들어진 승인도 사라지나요?

아닙니다. 마감 시각은 permit 서명을 제출할 수 있는 시간입니다. 이미 설정된 한도는 따로 취소하기 전까지 남을 수 있습니다.

permit에 가스비가 전혀 없나요?

소유자는 서명만 하면 되지만, 누군가는 permit을 온체인에 제출하면서 가스를 냅니다. 보통 탈중앙 앱이나 중계자가 뒤따르는 호출과 함께 제출합니다.

더 깊이 읽기

본문에서 다룬 개념과 확인 절차를 다음 글에서 이어서 살펴보세요.

참고한 원문 자료

자료 확인 기준일 2026.09.27
  1. ERC-2612: Permit Extension for EIP-20 Signed Approvalseips.ethereum.org
  2. ERC20Permit.solgithub.com
작성 방식과 확인 범위
출처 수집
원문 링크 2개 제공
작성·확인
공식 기관 자료를 근거로 AI 도구를 활용해 작성했고, 운영자가 발행 전에 읽어 확인합니다.
전문가 검토
세무·법률 전문가 검토는 거치지 않았습니다.

투자·세무 판단은 전문가와 상의하세요. 제도와 거래소 안내는 바뀔 수 있으니 원문의 적용 대상과 최신 안내를 함께 확인해 주세요.

이해를 위한 정보 콘텐츠

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

편집 원칙 보기 →이 기사 정정 제보 →