본문으로 건너뛰기
0%

Paymaster란? (ERC-4337)

2024년 2월 5일에 게시됨6분 읽기

Account abstraction에서 paymaster는 스마트 컨트랙트로, 탈중앙화 애플리케이션이 사용자를 대신해 오퍼레이션을 후원(즉 블록체인의 네이티브 통화로 가스비를 지불)하거나, 블록체인의 네이티브 통화 대신 ERC-20 토큰(예: USDC)으로 가스비 결제를 수락하는 등 유연한 가스 정책을 가능하게 한다.

paymaster 스마트 컨트랙트는 Ethereum Improvement Proposal(EIP) 4337에서 도입되었으며, 번들러 및 엔트리 포인트 스마트 컨트랙트 등 다른 Account Abstraction 인프라와 연동되어 사용자 오퍼레이션 실행에 필요한 가스비를 선지급한 것에 대해 이들에게 보상한다.

Ethereum 및 주요 L2에서 모든 web3 앱에 임베디드 지갑을 추가하세요 Embedded Accounts와 고성능 Gas Manager API(ERC-4337 paymaster)를 포함한 수직 통합 account abstraction 인프라를 사용합니다.

Alchemy University의 Paymaster 설명 영상

Paymaster는 언제 사용해야 하는가?

paymaster를 사용하는 주된 이유는 두 가지다. 다른 계정의 트랜잭션에 대한 가스비를 후원하거나, 블록체인 네트워크의 네이티브 통화 대신 ERC-20 토큰으로 가스비를 지불하는 것이다. 이 ERC-20 paymaster는 애플리케이션의 토큰이거나 USDC 같은 스테이블코인일 수 있다.

1. 트랜잭션 후원을 위한 Paymaster

web3 애플리케이션 및 지갑 개발자가 후원용 paymaster를 사용하는 이유로는 신규 사용자가 web3에 더 쉽게 참여하도록 하는 것, 플랫폼 특화 사용자 행동을 유도하는 것, 가스비 없이 NFT를 민팅하는 것, 가스비 지출 없이 지갑을 배포하는 것 등 다양한 사용 사례가 있다.

paymaster로 트랜잭션을 후원하기 위해, web3 개발자는 어떤 사용자 오퍼레이션을 후원할 수 있는지 규칙을 정의하여 정책을 만든다. 사용하는 paymaster 컨트랙트는 일정량의 암호화폐를 엔트리 포인트 컨트랙트에 예치해두며, 이 예치금에서 보조된 트랜잭션의 가스비가 차감된다. 이후 개발자는 이 정책을 활성화한다.

Paymaster 후원 정책을 정의하는 규칙에는 어떤 것이 있는가?

후원된 트랜잭션에 대한 접근을 관리하기 위해, 개발자는 애플리케이션별 및 발신자별(예: 후원된 사용자 오퍼레이션을 요청하는 사용자) 지출액과 사용자 오퍼레이션 수를 관리하는 규칙, 후원된 사용자 오퍼레이션에 대한 접근을 허용 또는 거부하는 규칙, 정책의 시작·종료·만료 시점을 제어하는 규칙을 정의할 수 있다.

  • 최대 지출액 - 정책이 지출할 수 있는 최대 금액(USD)
  • 발신자별 최대 지출액 - 정책이 지출할 수 있는 최대 금액(USD)
  • 사용자 오퍼레이션별 최대 지출액 - 각 사용자 오퍼레이션이 지출할 수 있는 최대 금액(USD)
  • 최대 트랜잭션 수 - 정책이 후원할 수 있는 전역 최대 트랜잭션 수
  • 발신자별 최대 트랜잭션 수 - 발신자별 개별 최대 트랜잭션 수
  • 발신자 허용 목록 - paymaster에 접근할 수 있는 계정을 정의하는 규칙
  • 발신자 차단 목록 - paymaster에 접근할 수 없는 계정을 정의하는 규칙
  • 정책 시작 시간 - 정책이 시작되는 시간
  • 정책 종료 시간 - 정책이 끝나는 시간
  • 정책 만료 - 정책이 지출할 수 있는 최대 금액(USD)

참고: 이는 Alchemy의 Gas Manager Coverage API로 설정할 수 있는 가스 정책 규칙이다. 다른 ERC-4337 호환 paymaster는 더 많거나 적은 규칙을 지원할 수 있다.

paymaster access key를 사용하면, 개발자는 프로그래밍 방식으로 유연한 가스 후원 정책을 생성, 활성화, 관리할 수 있다. 정책을 수동으로 관리하려면 Gas Manager 대시보드에서 생성할 수 있다.

Alchemy의 Gas Manager Coverage API는 사용자 오퍼레이션 후원을 위한 예치금을 어떻게 관리하는가?

Alchemy의 Gas Manager Coverage API 컨트랙트는 지원되는 각 블록체인의 전역 엔트리 포인트 컨트랙트에 이미 네이티브 통화를 예치해 두었다. 개발자가 Gas Manager를 통해 가스 정책을 만들면, 우리는 가스비 충당에 사용된 네이티브 통화의 양을 추적한다.

매월 말, Alchemy 상에서 빌드하는 팀은 자신의 정책이 충당한 총 가스비 금액에 해당 충당 가스비 총액의 8%를 더한 청구서를 받는다. 이 요금은 Alchemy 계정에 등록된 결제 수단을 통해 지불된다.

Alchemy의 Gas Manager Coverage API와 관련된 수수료는 무엇인가?

후원된 트랜잭션의 가스비를 충당하는 수수료는 Enterprise 고객에게는 맞춤형으로 책정되고, Growth Tier 고객에게는 8%이며, 무료 사용자는 테스트넷에서만 후원된 트랜잭션을 이용할 수 있으므로 무료다.

Alchemy의 후원용 paymaster 컨트랙트는 어떤 네트워크에 배포되어 있는가?

Alchemy는 Ethereum, Arbitrum, Optimism, Polygon에 후원용 paymaster 컨트랙트를 배포했다. 메인넷 배포 주소와 Etherscan 링크는 다음과 같다:

Alchemy의 후원용 paymaster 컨트랙트는 어떤 테스트넷에 배포되어 있는가?

Alchemy는 Sepolia에 후원용 paymaster 컨트랙트를 배포했다. 테스트넷 배포 주소는 다음과 같다:

2. ERC-20 토큰으로 가스비를 지불하기 위한 Paymaster

dapp 및 지갑 개발자가 ERC-20 paymaster를 사용하는 이유로는 애플리케이션의 ERC-20 토큰에 효용을 더하는 것, 블록체인 네트워크 생태계 내에서 다양한 디지털 자산을 보유한 사용자에게 더 큰 유연성을 제공하는 것, ETH, MATIC, OP, ARB 같은 네이티브 통화와 달리 가치가 변하지 않는 스테이블코인으로 지불하는 것 등 애플리케이션별로 다양한 사용 사례가 있다.

IPaymaster 인터페이스를 기준으로 paymaster의 유형에는 어떤 것이 있는가?

paymaster는 트랜잭션 후원이나 사용자가 ERC-20 토큰으로 가스비를 지불하도록 하는 등 여러 목적에 사용되며, 이 두 기능을 수행하는 paymaster는 IPaymaster 인터페이스를 기준으로 각각 verifying paymaster와 token(deposit) paymaster로 구분된다.

1. Verifying paymaster

verifying paymaster 유형은 오프체인 서비스가 트랜잭션 수수료 후원 여부를 결정할 때 사용된다. 예를 들어 사용자가 법정화폐와 신용카드로 지불하려는 경우, 사용자 오퍼레이션의 발신자는 먼저 외부 서명자에게 결제를 보내고, 이 단계가 성공하면 paymaster가 오퍼레이션을 검증하고 트랜잭션 수수료를 충당할 것임을 확인한다.

2. ERC-20 paymaster

deposit paymaster 유형은 가스비를 ERC-20 토큰으로 지불해야 할 때 사용된다. 개발자는 ERC-20 토큰과 후원된 사용자 오퍼레이션 대상이 되는 스마트 컨트랙트 지갑의 주소를 지정한다. 예를 들어 web3 dapp이 자체 ERC-20 토큰을 사용해 처음 1000명 사용자의 트랜잭션 비용을 지불하고자 하는 경우가 있다.

deposit paymaster는 ERC-20 토큰으로 수수료 후원을 가능하게 하지만, 트랜잭션의 실제 비용은 ETH로 지불되며 엔트리 포인트 컨트랙트에 예치된 paymaster의 예치금에서 차감된다. postOp() 함수에는 오라클로부터 받은 가격 정보를 기준으로, 수수료 충당에 필요한 ETH에 상응하는 ERC-20 토큰을 발신자로부터 가져오는 로직이 포함되어 있다.

Paymaster는 어떻게 작동하는가?

paymaster는 엔트리 포인트 컨트랙트와 상호작용하여 후원된 사용자 오퍼레이션 수수료를 충당하고, 발신자를 대신해 사용자 오퍼레이션을 실행한 번들러에게 보상함으로써 작동한다.

각 사용자 오퍼레이션에 대해:

  1. 발신자의 지갑에서 validateOp를 호출한다
  2. 사용자 오퍼레이션에 paymaster 주소가 있으면 validatePaymasterOp를 호출한다
  3. validatePaymasterOp 호출에 실패한 사용자 오퍼레이션은 폐기한다
  4. 각 사용자 오퍼레이션에 대해 발신자의 지갑에서 executeOp를 호출한다
  5. 발신자를 대신해 사용자 오퍼레이션을 실행하는 데 사용된 가스량을 추적한다
  6. 발신자를 대신해 사용자 오퍼레이션을 실행한 번들러에게 사용된 가스에 대한 대가로 ETH를 전송한다
  7. 사용자 오퍼레이션에 paymaster 필드가 있으면, paymaster는 자신의 컨트랙트에 예치된 ETH를 사용해 번들러에게 지불한다
  8. 사용자 오퍼레이션에 paymaster 필드가 없으면, ETH는 발신자의 지갑이 상환한다

다음은 paymaster 작동 방식을 보여주는 다이어그램이다:

entry point 컨트랙트가 paymaster를 통해 user op를 검증하고 bundler에 환급하는 과정을 보여주는 다이어그램
entry point 컨트랙트가 paymaster 컨트랙트를 통해 user op를 검증하고, paymaster의 자금으로 bundler에 환급하는 과정을 보여주는 다이어그램

IPaymaster 인터페이스에는 어떤 함수가 포함되어 있는가?

IPaymaster 인터페이스는 각 paymaster 컨트랙트가 제안서의 사양을 준수하기 위해 따라야 하는 설계도다. 여기에는 **validatePaymasterOp()**와 postOp() 두 함수가 도입된다.

1. validatePaymasterUserOp()

**validatePaymasterUserOp()**는 멤풀 노드, 번들러, 엔트리 포인트 컨트랙트가 paymaster 컨트랙트가 트랜잭션 수수료 후원에 동의했는지 확인하는 데 사용하는 함수다. **validatePaymasterUserOp()**는 사용자 오퍼레이션의 paymasterAndData 필드에 명시되어 있다.

validatePaymasterUserOp() 함수는 검증할 사용자 오퍼레이션의 바이트 표현을 ID 및 최대 비용과 함께 받는다. 이 함수는 'context'라는 bytes32 변수를 반환하며, 이는 이후 postOp() 함수로 전달된다.

2. postOp()

postOp() 함수는 사용자 오퍼레이션이 성공적으로 검증된 경우 수행할 작업을 정의한다. 예를 들어 사용자 오퍼레이션의 발신자가 ERC-20 토큰으로 지불하고자 하는 경우, 엔트리 포인트는 오퍼레이션이 끝난 뒤 **postOp()**를 호출해 사용된 가스량을 전달한다.

postOp() 함수는 **validatePaymasterUserOp()**가 생성한 'context'가 null이 아닐 때만 호출 가능하다.

번들러는 악의적인 paymaster의 DoS 공격을 어떻게 방지하는가?

ERC-4337 사양에는 ERC-4337 번들러가 악의적인 paymaster의 사용자 오퍼레이션 실행을 피할 수 있도록 하는 paymaster 평판 점수 및 스로틀링 시스템이 설명되어 있다.

paymaster의 스토리지는 해당 paymaster를 사용하는 번들 내 모든 오퍼레이션 간에 공유되므로, 하나의 validatePaymasterOp 동작으로 인해 서비스 거부 공격(DoS)의 일환으로 같은 paymaster를 사용하는 번들 내 다른 다수의 사용자 오퍼레이션에 대한 검증이 실패할 수 있다.

악의적인 paymaster가 자신의 복수 인스턴스를 생성하는 것(즉 Sybil 공격)을 방지하기 위해, paymaster는 ETH를 스테이킹해야 한다. paymaster의 스테이킹된 자금은 삭감되지 않으며 언제든 인출할 수 있다. 이 스테이킹은 잠재적 공격자가 상당한 규모의 자본을 묶어두도록 요구함으로써 악의적인 행위를 억제하기 위해 존재한다.

Paymaster를 사용할 때 개발자가 얻는 이점은 무엇인가?

paymaster의 이점으로는 가스 정책의 유연성 증대, 신규 사용자를 위한 web3 온보딩 경험 단순화, 트랜잭션에 대한 프로그래머빌리티 향상 등이 있다.

1. 신규 사용자 유치

paymaster를 활용하는 개발자가 얻는 이점 중 하나는 신규 사용자가 web3에 더 쉽게 참여할 수 있도록 하는 것이다. 현재 Externally Owned Account(EOA) 지갑을 생성하고, 블록체인의 네이티브 토큰으로 자금을 충전하고, NFT를 민팅하는 과정은 복잡하며 사용자가 중도 포기할 여지가 많다.

paymaster는 NFT 민팅, 사용자명 청구, 지갑을 이용한 이벤트 가입 등 온체인 트랜잭션을 완료하기 위해 네이티브 통화로 지갑에 자금을 충전하는 과정의 마찰을 줄이는 데 도움이 된다.

2. 사용자 경험 개선

web3 제품을 만드는 개발자는 플랫폼의 네이티브 통화로 가스비를 지불할 수 있는 기능을 추가함으로써 paymaster를 통해 애플리케이션의 사용자 경험을 개선할 수 있다.

3. 사용자 행동 유도

회사 성장을 도모하는 Web3 스타트업은 파워 유저의 플랫폼 수수료를 대신 부담하고, 사용자가 신규 제품을 테스트하도록 유도하고, 마케팅 프로모션 참여에 대한 동의를 얻는 등의 방식으로 paymaster의 혜택을 누릴 수 있다.

스마트 컨트랙트 지갑의 장점과 마찬가지로, paymaster는 다양한 방식으로 web3 개발자에게 도움이 될 수 있다. 오늘날 가장 혁신적인 web3 기업들은 제품과 web3 UX를 개선하기 위해 paymaster를 구현하는 새로운 방법을 찾고 있다.

Paymaster API 사용을 시작하는 방법

Alchemy의 paymaster는 Ethereum, Polygon, Optimism, Arbitrum 메인넷에서 사용 가능하다. ERC-4337 호환 paymaster로 트랜잭션 후원과 유연한 가스 정책 구축을 시작하려면, Gas Manager API와 paymaster 정책 생성을 위한 빠른 시작 가이드를 확인하라.

자주 묻는 질문

ERC-4337에서 paymaster란 무엇인가?

paymaster는 EIP-4337에서 도입된 스마트 컨트랙트로, 유연한 가스 정책을 가능하게 하며 애플리케이션이 사용자의 가스비를 후원하거나 블록체인의 네이티브 통화 대신 ERC-20 토큰으로 지불을 받을 수 있도록 한다.

개발자는 언제 paymaster를 사용해야 하는가?

paymaster는 사용자 온보딩을 개선하기 위해 가스비를 후원하고, ERC-20 토큰이나 USDC 같은 스테이블코인으로 지불을 허용하고, web3 플랫폼에서 특정 사용자 행동을 유도하는 데 적합하다.

paymaster의 두 가지 주요 유형은 무엇인가?

두 가지 유형은 오프체인 서비스를 사용해 트랜잭션 후원 여부를 결정하는 verifying paymaster와, paymaster가 실제 ETH 비용을 충당하는 동안 사용자가 ERC-20 토큰으로 가스비를 지불할 수 있게 하는 ERC-20 paymaster다.

paymaster는 EntryPoint 컨트랙트와 어떻게 상호작용하는가?

EntryPoint는 검증 과정에서 validatePaymasterUserOp()를 호출해 후원 여부를 확인하고, 실행 후 postOp()를 호출해 회계 처리와 paymaster의 예치된 ETH 예치금에서 토큰 전송을 처리한다.

paymaster가 구현해야 하는 함수는 무엇인가?

paymaster는 후원 계약을 검증하기 위한 validatePaymasterUserOp()와, 사용자로부터 ERC-20 토큰을 가져와 ETH 비용을 충당하는 등 실행 후 로직을 처리하기 위한 postOp()를 구현해야 한다.

Alchemy의 Gas Manager는 후원된 트랜잭션의 청구를 어떻게 처리하는가?

Alchemy는 EntryPoint 컨트랙트에 네이티브 통화를 사전 예치해두고, 고객에게 매월 충당된 총 가스비에 Growth Tier 고객의 경우 8% 수수료를 더해 청구하며, Enterprise 고객에게는 맞춤형 가격을 적용한다.

개발자는 가스 후원에 대해 어떤 정책을 설정할 수 있는가?

개발자는 paymaster 사용을 제어하기 위해 전역 및 발신자별 최대 지출 한도, 트랜잭션 수 제한, 발신자 허용 목록 및 차단 목록, 정책 시작/종료 시간을 설정할 수 있다.

Background gradient

블록체인 매직을 만드세요

Alchemy는 가장 강력한 Web3 개발자 제품 및 도구를 리소스, 커뮤니티, 그리고 전설적인 지원과 결합합니다.