정기 결제 설정하기
풀(pull) 기반 구독을 사용하면 구독자가 매번 결제를 직접 시작하지 않아도 서비스 제공자가 정해진 일정에 따라 결제를 수금할 수 있습니다.
이 패턴은 EIP-7702 계정 추상화로 가능합니다. 구독자의 EOA는 실행 권한을 구독 위임(delegate) 컨트랙트에 위임하며, 제공자는 각 청구 주기마다 이 컨트랙트를 호출합니다.
구독자는 단 두 번만 행동합니다: 구독할 때 한 번, 취소할 때 한 번.
작동 방식
구독자는 청구 조건을 집행하는 컨트랙트에 자신의 EOA를 위임합니다. EIP-7702를 통해 구독자의 계정은 일시적으로 컨트랙트 로직을 갖게 되어, 서비스 제공자가 구독자가 매번 서명하지 않아도 각 청구 주기마다 결제를 수금할 수 있습니다.
구독 생애주기
- 위임: 구독자가 EIP-7702를 통해 자신의 EOA를 구독 위임 컨트랙트에 위임합니다.
- 구독: 구독자가 청구 조건(제공자 주소, 주기당 금액, 청구 주기)을 등록합니다.
- 수금: 서비스 제공자가 각 청구 주기마다 수금을 트리거합니다. 위임 컨트랙트는 USDT0 전송을 실행하기 전에 호출자, 주기, 금액을 검증합니다.
- 취소: 구독자가 구독을 철회하거나 위임을 해제하여 향후 수금을 중단합니다.
중요 고려사항
- 지속적인 위임: EIP-7702 위임은 구독자가 명시적으로 변경하거나 해제할 때까지 유지됩니다. 매 청구 주기마다 재위임이 필요하지 않습니다.
- EOA당 단일 위임: EIP-7702는 EOA당 하나의 활성 위임만 지원합니다. 구독자가 나중에 다른 컨트랙트에 위임하면 구독 위임 로직이 대체되어 수금이 실패합니다. 단일 위임으로 여러 기능(구독, 일괄 결제, 지출 한도)을 지원하는 모듈식 위임 컨트랙트를 사용하세요.
- 감사된 위임 컨트랙트 사용: 위임 컨트랙트는 구독자의 EOA에 대한 완전한 실행 권한을 갖습니다. 감사를 받은 컨트랙트에만 위임하세요.
차별점
전통적인 구독은 카드 데이터를 저장하고, 실패한 청구를 재시도하며, 복잡한 청구 상태를 관리합니다. EIP-7702 구독에서는 청구 조건이 구독자 자신의 EOA에 있는 위임 로직에 의해 집행됩니다. 제공자는 주기당 합의된 금액만 수금할 수 있으며, 구독자는 위임을 철회하여 언제든지 취소할 수 있습니다.
| 항목 | 전통 방식(카드 등록) | Stable |
|---|---|---|
| 설정 | 결제 처리업체에 카드 등록 | 단일 EIP-7702 위임 트랜잭션 |
| 청구 | 처리업체가 저장된 카드에 청구 | 제공자가 위임 컨트랙트 호출 |
| 저장된 결제 데이터 | 처리업체가 카드번호, CVV 보유 | 오프체인에 결제 자격 증명 저장 없음 |
| 취소 | 제공자 또는 카드 발급사에 연락 | 구독자가 온체인에서 위임 철회 |
| 과다 청구 위험 | 제공자 측 청구 통제에 의존 | 청구 조건이 컨트랙트로 집행됨 |

