EIP-2612: ERC-20이 가스 없는 승인을 가능하게 하는 방법

주요 결과
• EIP-2612는 사용자가 오프체인에서 서명하여 가스 없는 승인을 가능하게 합니다.
• 2025년에는 L2 솔루션과 함께 가스 비용을 후원하는 프로토콜이 활성화될 것입니다.
• EIP-2612는 서명 기반 작업으로의 트렌드를 반영하며, 안전성과 사용자 경험을 개선합니다.
• 사용자는 승인에 대한 가스를 지불하지 않지만, 다른 서비스가 이를 후원할 수 있습니다.
가스비는 디파이(DeFi)에서 가장 큰 불편함의 원인입니다. ERC-20 토큰을 스왑, 대출 또는 스테이킹하기 전에, dApp이 사용자의 토큰을 이동하도록 허용하기 위해 종종 "승인(approve)" 트랜잭션을 제출하고 가스를 지불해야 합니다. EIP-2612는 이를 변경합니다. 이 제안은 "permit"이라는 서명 기반 승인 흐름을 도입하여, 온체인에서 승인 부담을 오프체인으로 옮기고 스마트 계약 또는 릴레이어가 온체인 가스를 후원할 수 있도록 합니다. 결과적으로 사용자 경험이 향상되고, 트랜잭션 수가 줄어들며, 올바르게 구현될 경우 더 안전한 승인이 가능해집니다.
이 글은 EIP-2612가 어떻게 작동하는지, 2025년에 왜 중요한지, 그리고 사용자와 개발자가 무엇에 주의해야 하는지를 설명합니다.
EIP-2612는 정확히 무엇인가?
EIP-2612는 ERC-20 토큰 표준에 permit
이라는 새로운 함수를 추가하여 확장합니다. 온체인에서 approve(spender, amount)
를 호출하는 대신, 사용자는 승인 매개변수와 마감일을 포함하는 구조화된 메시지에 오프체인에서 서명합니다. 그런 다음 스마트 계약은 해당 서명을 사용하여 온체인에서 permit
함수를 제출하여 사용자가 가스를 지불하지 않고도 허용량을 설정합니다.
- ERC-20 기본: 승인 및 전송은 ERC-20 사양에 정의된 표준을 따릅니다.
- EIP-2612 사양: 서명 형식, 논스(nonce),
permit
함수는 EIP-2612 제안에 공식화되어 있습니다. - 구조화된 데이터: 서명은 EIP-712에 따라 구조화된 데이터를 사용하며, 이를 통해 사용자는 무엇에 서명하는지 사람이 읽을 수 있고 도메인에 바인딩될 수 있습니다.
요약하자면, EIP-2612는 사용자가 오프체인에서 서명만 하면 되므로 "가스 없는 승인"을 가능하게 합니다. dApp, 릴레이어 또는 계약이 온체인에서 permit
을 릴레이하는 데 드는 가스를 지불합니다.
2025년에 중요한 이유
- 클릭 수 감소, 트랜잭션 수 감소: 하나의 서명으로 승인을 설정하고 단일 온체인 호출에서 즉시 액션(스왑, 입금, 스테이킹)을 실행할 수 있습니다.
- L2 우선 UX: L2 솔루션이 활성화되면서 많은 프로토콜이 사용자를 온보딩하기 위해 가스를 후원합니다. EIP-2612 승인은 이러한 패턴에 잘 들어맞습니다. 가스 비용 역학을 이해하려면 이더리움의 가스 및 계정 모델 개요를 참조하세요.
- 계정 추상화 및 페이마스터: ERC-4337 기반 지갑 흐름은 서비스가 가스를 후원하거나 토큰으로 수수료를 받는 것을 더 쉽게 만듭니다. EIP-2612는 이러한 사용자 경험 개선을 보완합니다. 서명을 통해 승인하고, 트랜잭션은 후원될 수 있습니다.
- 미래 지향적인 프로토콜 변경: EIP-3074 및 EIP-7702와 같은 지갑 네이티브 인증에 대한 논의는 서명 기반 작업으로의 더 넓은 트렌드를 강조합니다. 이러한 기술이 발전하더라도 EIP-2612는 오늘날 승인을 위한 실용적이고 널리 배포된 도구로 남아 있습니다.
가스 없는 승인은 어떻게 작동하는가 (단계별)
- dApp에서 액션(예: 토큰 스왑)을 시작합니다.
- dApp은 소유자, 지출자, 값, 논스, 마감일, 토큰의 도메인 구분자(이름, 버전, chainId, 계약 주소) 필드를 포함하는 EIP-712 구조화된 메시지를 준비합니다.
- 지갑으로 메시지에 서명하여 정확한 매개변수를 승인합니다.
- dApp 또는 릴레이어는
permit(owner, spender, value, deadline, v, r, s)
를 온체인에 제출하고, 같은 트랜잭션에서 허용량을 사용하는 dApp 액션을 호출합니다. - 토큰 계약은 서명을 확인하고, 논스와 마감일을 확인한 후, 허용량을 설정합니다.
핵심 아이디어: 승인에 대한 가스를 지불하지 않습니다. 서명만 합니다.
네이티브 Permit vs. Permit2
모든 토큰이 EIP-2612를 구현하는 것은 아닙니다. 파편화된 인터페이스를 해결하고 안전성을 개선하기 위해 Uniswap은 토큰 전반에 걸쳐 서명 승인 및 허용량 관리를 표준화하는 일반화된 승인 시스템인 Permit2를 도입했습니다.
- Permit2 개요 및 참조 구현: Uniswap Permit2
토큰이 네이티브 permit
을 지원하는 경우 dApp에서 직접 사용할 수 있습니다. 지원하지 않는 경우 Permit2는 일관된 인터페이스를 제공하는 동시에 Permit2 계약으로 허용량을 제한하며, 종종 제어 및 취소 UX를 개선합니다.
주의해야 할 보안 고려 사항
가스 없음이 위험 없음은 아닙니다. 서명은 강력하므로 트랜잭션처럼 취급해야 합니다.
- 지출자 확인: 항상 어떤 계약이 허용량을 받게 될지 확인하세요. EIP-712 구조화된 데이터는 지출자 주소를 명확하게 표시해야 합니다. EIP-712에서 구조화된 데이터가 작동하는 방식을 알아보세요.
- 금액 제한 및 합리적인 마감일 설정: 프로토콜을 깊이 신뢰하지 않는 한 무제한 승인은 피하세요. 마감일은 공격 창을 줄입니다.
- chainId 및 도메인 확인: 서명은 도메인 구분자를 통해 의도된 네트워크 및 토큰 계약에서만 유효합니다. 크로스체인 재실행 시도 또는 피싱에 주의하세요.
- 논스 관리: EIP-2612는 재실행 방지를 위해 논스를 사용합니다. 평판이 좋고 감사되었으며 OpenZeppelin의 ERC20Permit과 같이 잘 테스트된 라이브러리를 사용하는 토큰 구현에 의존하세요.
- 허용량 취소: 지갑 인터페이스 또는 토큰 계약을 통해 사용하지 않는 승인을 정기적으로 검토하고 취소하세요.
- 메타 트랜잭션 신뢰: 릴레이어가
permit
을 제출하는 경우 dApp의 백엔드를 신뢰하는지 확인하세요. 메타 트랜잭션 패턴은 EIP-2771 (Trusted Forwarder)를 참조하세요.
훌륭한 구현은 문제를 완화하는 데 도움이 되지만, 사용자 경계는 필수적입니다. 일반적인 모범 사례는 OpenZeppelin의 설명서를 견고한 시작점으로 사용할 수 있습니다: OpenZeppelin Contracts.
개발자 참고 사항: Permit 구현 및 사용
- 검증된 구현 사용: OpenZeppelin의
ERC20Permit
및draft-EIP712
는 실수를 줄이고 사양과 일치하도록 합니다. 참조: ERC20Permit. - 실행 번들링: 원클릭 UX를 위해
permit
서명을 수락하고 동일한 트랜잭션에서 액션을 수행하도록 dApp을 설계합니다. - 두 흐름 모두 지원: 가능한 경우 네이티브
permit
을 선호하고, 토큰이 이를 지원하지 않으면 Permit2로 대체합니다. 참조: Uniswap Permit2. - 마감일 및 논스 견고하게 처리: 만료된 서명은 거부하고 온체인 제출 전에 예상 논스를 확인합니다.
- 후원 고려: EIP-2612를 ERC-4337 페이마스터와 결합하여 진정으로 원활하고 후원되는 흐름을 만듭니다. 참조: ERC-4337.
자주 묻는 질문
-
이것이 "무료"인가요? 사용자는 승인에 대한 가스를 지불하지 않으며, 다른 사람이 지불합니다. dApp은 여전히 스마트 계약 로직을 통해 수수료를 부과할 수 있습니다.
-
토큰이 EIP-2612를 지원하지 않으면 어떻게 되나요? Permit2를 사용하거나, 명확한 UX 프롬프팅을 포함한 표준
approve
흐름으로 대체합니다. -
Permit은 체인 간에 작동하나요? 아니요. 서명은 EIP-712를 통해 도메인(토큰 계약 + chainId)으로 범위가 지정됩니다. 특정 네트워크에 대해 서명해야 합니다.
-
하드웨어 지갑과 호환되나요? EIP-712 구조화된 데이터를 지원하는 모든 지갑은 permit 메시지를 렌더링할 수 있습니다. 좋은 지갑은 지출자, 금액, 마감일을 명확하게 표시합니다.
최종 생각
EIP-2612는 디파이를 즉각적으로 느끼게 해주는 작지만 중요한 개선 사항 중 하나입니다. 승인을 서명으로 전환함으로써 일반적인 UX 장애물을 제거하고 L2 및 계정 추상화의 최신 흐름과 자연스럽게 결합됩니다.
permit 기반 워크플로에 의존하는 경우, EIP-712 메시지를 투명하게 렌더링하고 키를 오프라인으로 유지하는 지갑을 선택하세요. OneKey 하드웨어 지갑은 명확한 온디바이스 EIP-712 미리 보기(지출자, 금액, 마감일, 체인), 오픈 소스 펌웨어, 광범위한 EVM/L2 지원에 중점을 두어, 서명 안전성을 타협하지 않고도 가스 없는 승인의 편리함을 원할 때 유용합니다.