가스리스 결제
사용자는 서명만으로 결제할 수 있습니다 — 가스비가 필요 없습니다.
개요
가스리스 결제는 ERC-2771 메타 트랜잭션 표준을 사용합니다. 사용자는 네이티브 토큰(MATIC, ETH 등) 없이 ERC-20 토큰으로 결제할 수 있습니다.
사용 사례
- 신규 사용자 온보딩 (가스 없이 첫 결제)
- 더 나은 UX (서명만으로 결제)
- 가스비 변동성 제거
일반 결제 vs 가스리스 결제
일반 결제 가스리스 결제
────────── ─────────────────
사용자 사용자
│ │
│ TX 전송 │ 서명만
│ (가스 지불) │ (가스 없음)
▼ ▼
컨트랙트 릴레이어
│
│ TX 전송
│ (가스 지불)
▼
컨트랙트구성 요소
1. EIP-712 서명
사용자 지갑이 생성하는 타입 서명입니다.
- 도메인, 타입, 메시지가 명확히 표시됨
- 사용자가 서명 내용 확인 가능
- 재생 공격 방지 (nonce, deadline)
2. ERC2771 Forwarder
OpenZeppelin의 ERC2771Forwarder 컨트랙트입니다.
- 서명 검증
- 원래 발신자 복원 (
_msgSender()) - PaymentGateway로 호출 전달
3. 릴레이어
서명된 요청을 온체인 트랜잭션으로 변환합니다.
- 서명 형식 검증
- 가스비 지불
- 트랜잭션 전송 및 모니터링
릴레이 상태 흐름
QUEUED ────▶ SUBMITTED ────▶ CONFIRMED
│
▼
FAILED| 상태 | 설명 |
|---|---|
QUEUED | 릴레이 요청 대기 |
SUBMITTED | 트랜잭션 전송됨 |
CONFIRMED | 트랜잭션 확정됨 |
FAILED | 트랜잭션 실패 |
제한 사항
- 토큰은 사전에 PaymentGateway 컨트랙트에 approve 되어 있어야 함
- 해당 체인에 릴레이어 서비스가 구성되어 있어야 함
- 결제 생성 응답에
forwarderAddress가 포함됨 (없으면 해당 체인에서 가스리스 미지원)
지원 체인
| 체인 | 네트워크 ID |
|---|---|
| Polygon Amoy | 80002 |
| BSC Testnet | 97 |
| Sepolia | 11155111 |
다음 단계
- 구현 가이드 - 상세 구현 가이드