---
title: "Paymaster란? (ERC-4337)"
description: "ERC-4337에서 Paymaster 스마트 컨트랙트의 기능 알아보기"
---

# Paymaster란? (ERC-4337)

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

페이마스터 스마트 컨트랙트는 Ethereum Improvement Proposal\(EIP\) 4337에서 도입되었으며, 번들러 및 엔트리 포인트 스마트 컨트랙트와 같은 다른 계정 추상화 인프라와 통합되어 사용자 오퍼레이션 실행에 필요한 가스비를 대신 지불한 것에 대한 보상을 제공합니다.

<CalloutBlock>
  [Embedded Accounts와 고성능 Gas Manager API\(ERC-4337 페이마스터\)를 포함한 수직 통합형 계정 추상화 인프라를 사용해 Ethereum 및 주요 L2에서 어떤 Web3 앱에도 임베디드 지갑을 추가하세요
  ](https://www.alchemy.com/smart-wallets)
</CalloutBlock>

## Alchemy University의 페이마스터 설명 영상

<ExternalVideo
  url="https://www.youtube.com/watch?v=2LGpEobxIBA"
  provider="youtube"
  providerUid="2LGpEobxIBA"
/>

## 페이마스터는 언제 사용해야 할까요?

페이마스터를 사용하는 주된 이유는 두 가지입니다: 다른 계정의 트랜잭션에 대한 가스비를 후원하기 위해서, 또는 블록체인 네트워크의 네이티브 통화 대신 ERC-20 토큰으로 가스비를 지불하기 위해서입니다. 이 ERC-20 페이마스터는 애플리케이션 자체 토큰일 수도 있고, USDC와 같은 스테이블코인일 수도 있습니다.

### 1. 트랜잭션 후원을 위한 페이마스터

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

페이마스터로 트랜잭션을 후원하기 위해, Web3 개발자는 어떤 [사용자 오퍼레이션](https://www.alchemy.com/overviews/user-operations)이 후원될 수 있는지 규칙을 정의하여 정책을 만듭니다. 이때 사용하는 페이마스터 컨트랙트는 엔트리 포인트 컨트랙트에 일정량의 암호화폐를 예치해 두며, 후원된 트랜잭션의 가스비는 여기서 차감됩니다. 이후 개발자는 해당 정책을 활성화합니다.

#### 페이마스터 후원 정책을 정의하는 규칙에는 무엇이 있나요?

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

- **최대 지출액** - 정책이 지출할 수 있는 최대 금액\(USD 기준\)
- **발신자별 최대 지출액** - 정책이 지출할 수 있는 최대 금액\(USD 기준\)
- **사용자 오퍼레이션별 최대 지출액** - 각 사용자 오퍼레이션이 지출할 수 있는 최대 금액\(USD 기준\)
- **최대 트랜잭션 수** - 정책이 후원할 수 있는 전체 트랜잭션 수의 최댓값
- **발신자별 최대 트랜잭션 수** - 발신자 개인별 최대 트랜잭션 수
- **발신자 허용 목록** - 페이마스터에 접근할 수 있는 계정을 정의하는 규칙
- **발신자 차단 목록** - 페이마스터에 접근할 수 없는 계정을 정의하는 규칙
- **정책 시작 시간** - 정책이 시작되는 시점
- **정책 종료 시간** - 정책이 종료되는 시점
- **정책 만료** - 정책이 지출할 수 있는 최대 금액\(USD 기준\)

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

[페이마스터 액세스 키](https://www.alchemy.com/docs/how-to-create-access-keys)를 사용하면 개발자는 유연한 가스 후원 정책을 프로그래밍 방식으로 생성, 활성화, 관리할 수 있습니다. 정책을 수동으로 관리하려면 [Gas Manager 대시보드](https://dashboard.alchemy.com/gasManager)에서 생성할 수 있습니다.

#### 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의 후원형 페이마스터 컨트랙트는 어떤 네트워크에 배포되어 있나요?

Alchemy는 Ethereum, Arbitrum, Optimism, Polygon에 후원형 페이마스터 컨트랙트를 배포했습니다. 다음은 메인넷 배포 주소와 Etherscan 링크입니다:

- **Ethereum** - [0x4Fd9098af9ddcB41DA48A1d78F91F1398965addc](https://etherscan.io/address/0x4Fd9098af9ddcB41DA48A1d78F91F1398965addc)
- **Polygon** - [0x4Fd9098af9ddcB41DA48A1d78F91F1398965addc](https://polygonscan.com/address/0x4Fd9098af9ddcB41DA48A1d78F91F1398965addc)
- **Arbitrum** - [0x4Fd9098af9ddcB41DA48A1d78F91F1398965addc](https://arbiscan.io/address/0x4Fd9098af9ddcB41DA48A1d78F91F1398965addc)
- **Optimism** - [0x4Fd9098af9ddcB41DA48A1d78F91F1398965addc](https://optimistic.etherscan.io/address/0x4Fd9098af9ddcB41DA48A1d78F91F1398965addc)

### Alchemy의 후원형 페이마스터 컨트랙트는 어떤 테스트넷에 배포되어 있나요?

Alchemy는 Sepolia, Goerli, Mumbai, Arbitrum-Goerli, Optimism-Goerli에 후원형 페이마스터 컨트랙트를 배포했습니다. 다음은 테스트넷 배포 주소와 블록 탐색기상의 컨트랙트 주소입니다:

- **[ETH Sepolia](https://www.alchemy.com/overviews/sepolia-testnet)** - [0xC03Aac639Bb21233e0139381970328dB8bcEeB67](https://sepolia.etherscan.io/address/0xC03Aac639Bb21233e0139381970328dB8bcEeB67)
- **ETH Goerli** - [0xC03Aac639Bb21233e0139381970328dB8bcEeB67](https://goerli.etherscan.io/address/0xC03Aac639Bb21233e0139381970328dB8bcEeB67)        
- **Polygon Mumbai**  - [0xC03Aac639Bb21233e0139381970328dB8bcEeB67](https://mumbai.polygonscan.com/address/0xC03Aac639Bb21233e0139381970328dB8bcEeB67)       
- **Arbitrum Goerli** - [0xC03Aac639Bb21233e0139381970328dB8bcEeB67](https://goerli.arbiscan.io/address/0xC03Aac639Bb21233e0139381970328dB8bcEeB67)
- **Optimism Goerli** - [0xC03Aac639Bb21233e0139381970328dB8bcEeB67](https://goerli-optimism.etherscan.io/address/0xC03Aac639Bb21233e0139381970328dB8bcEeB67)

### 2. ERC-20 토큰으로 가스비를 지불하기 위한 페이마스터

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

## IPaymaster 인터페이스를 기반으로 한 페이마스터 유형에는 무엇이 있나요?

페이마스터는 트랜잭션 후원, 사용자가 ERC-20 토큰으로 가스비를 지불할 수 있도록 하는 것 등 여러 목적을 수행하며, 이 두 가지 기능을 수행하는 페이마스터는 IPaymaster 인터페이스를 기준으로 **검증 페이마스터\(verifying paymaster\)**와 **토큰\(예치\) 페이마스터\(token \(deposit\) paymaster\)**로 구분됩니다.

### 1. 검증 페이마스터

검증 페이마스터 유형은 오프체인 서비스가 트랜잭션 수수료 후원 여부를 결정할 때 사용됩니다. 예를 들어 사용자가 법정화폐와 신용카드로 결제하고자 하는 경우, 사용자 오퍼레이션의 발신자는 먼저 외부 서명자에게 결제를 전송하고, 이 단계가 성공하면 페이마스터가 해당 오퍼레이션을 검증하고 트랜잭션 수수료를 커버할 것임을 확인합니다.

### 2. ERC-20 페이마스터

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

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

## 페이마스터는 어떻게 작동하나요?

[페이마스터는](https://www.alchemy.com/overviews/what-is-account-abstraction-paymasters) 엔트리 포인트 컨트랙트와 상호작용하여 후원된 사용자 오퍼레이션 수수료를 충당하고, 발신자를 대신해 사용자 오퍼레이션을 실행하는 번들러에게 비용을 상환합니다.

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

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

**다음은 페이마스터의 작동 방식을 보여주는 다이어그램입니다:**

<ImageBlock
  src="https://media.alchemy.com/1703861866-how-paymasters-work.jpeg"
  alt="paymaster를 통해 user ops를 검증하고 bundler에 환불하는 entry point contract 다이어그램"
  width={960}
  height={540}
  caption="entry point contract가 paymaster contract를 통해 user ops를 검증하고, paymaster의 자금으로 bundler에 환불하는 방식을 보여주는 다이어그램"
/>

### IPaymaster 인터페이스에는 어떤 함수들이 포함되어 있나요?

IPaymaster 인터페이스는 각 페이마스터 컨트랙트가 제안 사양을 준수하기 위해 따라야 하는 청사진입니다. 이 인터페이스는 **validatePaymasterOp\(\)**와 **postOp\(\)** 두 함수를 도입합니다.

#### 1. validatePaymasterUserOp\(\)

**validatePaymasterUserOp\(\)**는 멤풀 노드, [번들러](https://www.alchemy.com/dapps/best/account-abstraction-erc-4337-bundlers), 엔트리 포인트 컨트랙트가 페이마스터 컨트랙트가 해당 트랜잭션의 수수료 후원에 동의하는지 확인하는 데 사용하는 함수입니다. **validatePaymasterUserOp\(\)**는 사용자 오퍼레이션의 **paymasterAndData** 필드에 명시됩니다.

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

#### 2. postOp\(\)

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

**postOp\(\)** 함수는 **validatePaymasterUserOp\(\)**에서 생성된 ‘context’가 null이 아닌 경우에만 호출할 수 있습니다.

### 번들러는 악의적인 페이마스터의 DoS 공격을 어떻게 방지하나요?

ERC-4337 사양은 ERC-4337 번들러가 악의적인 페이마스터로부터의 사용자 오퍼레이션 실행을 피할 수 있도록 페이마스터 [평판 점수 및 스로틀링 시스템](https://eips.ethereum.org/EIPS/eip-4337#reputation-scoring-and-throttlingbanning-for-global-entities)을 설명합니다.

페이마스터의 스토리지는 해당 페이마스터를 사용하는 번들 내 모든 오퍼레이션에 걸쳐 공유되기 때문에, 한 **validatePaymasterOp**의 동작이 서비스 거부 공격\(Denial-of-Service, DoS\)의 형태로 동일한 페이마스터를 사용하는 번들 내 다른 여러 사용자 오퍼레이션의 검증을 실패시킬 수 있습니다.

악의적인 페이마스터가 자신의 여러 인스턴스를 생성하는 것\(즉, 시빌 공격\)을 방지하기 위해, 페이마스터는 ETH를 스테이킹해야 합니다. 페이마스터 스테이크는 절대 슬래싱되지 않으며 언제든 인출할 수 있습니다. 스테이크는 잠재적 공격자가 상당한 자본을 묶어두도록 요구함으로써 악의적인 행위를 억제하기 위해 존재합니다.

## 페이마스터를 사용하면 개발자에게 어떤 이점이 있나요?

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

### 1. 신규 사용자 유치

페이마스터를 활용하는 개발자가 얻는 한 가지 이점은 신규 사용자가 Web3에 더 쉽게 참여할 수 있도록 만드는 것입니다. 외부 소유 계정\(EOA\) 지갑을 생성하고, 블록체인의 네이티브 토큰으로 자금을 충전한 후, NFT를 민팅하는 현재 프로세스는 사용자가 중도에 포기할 여지가 많은 복잡한 과정입니다.

페이마스터는 NFT 민팅, 사용자명 클레임, 지갑을 통한 이벤트 등록과 같은 온체인 트랜잭션을 완료하기 위해 네이티브 통화로 지갑에 자금을 충전해야 하는 부담을 줄여줍니다.

### 2. 사용자 경험 개선

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

### 3. 사용자 행동 유도

성장을 추구하는 Web3 스타트업은 파워 유저의 플랫폼 수수료를 대신 지불하고, 사용자가 신제품을 테스트하도록 유도하며, 마케팅 프로모션 참여에 대한 동의를 얻는 데 페이마스터를 활용할 수 있습니다.

[스마트 컨트랙트 지갑의 장점](https://www.alchemy.com/overviews/smart-contract-wallet-benefits)과 마찬가지로, 페이마스터는 다양한 방식으로 Web3 개발자에게 이점을 제공할 수 있습니다. 오늘날 가장 혁신적인 Web3 기업들은 제품과 Web3 UX를 개선하기 위해 페이마스터를 구현하는 새로운 방법을 찾고 있습니다.

## 페이마스터 API 사용을 시작하는 방법

Alchemy의 페이마스터는 Ethereum, Polygon, Optimism, Arbitrum 메인넷에서 사용할 수 있습니다. ERC-4337 호환 페이마스터로 트랜잭션 후원과 유연한 가스 정책 구축을 시작하려면, 저희의 [Gas Manager API](https://www.alchemy.com/docs/reference/how-to-sponsor-gas-on-evm)와 페이마스터 정책 생성을 위한 퀵스타트 가이드를 확인해 보세요.

## 자주 묻는 질문

### ERC-4337에서 페이마스터란 무엇인가요?

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

### 개발자는 언제 페이마스터를 사용해야 하나요?

페이마스터는 사용자 온보딩 개선을 위한 가스비 후원, USDC와 같은 ERC-20 토큰이나 [스테이블코인](https://www.alchemy.com/dapps/top/stablecoins)으로 결제, Web3 플랫폼에서 특정 사용자 행동 유도에 적합합니다.

### 페이마스터의 두 가지 주요 유형은 무엇인가요?

두 가지 유형은 오프체인 서비스를 사용해 트랜잭션 후원 여부를 결정하는 검증 페이마스터와, 실제 ETH 비용은 페이마스터가 부담하면서 사용자가 ERC-20 토큰으로 가스비를 지불할 수 있게 하는 ERC-20 페이마스터입니다.

### 페이마스터는 EntryPoint 컨트랙트와 어떻게 상호작용하나요?

EntryPoint는 검증 과정에서 validatePaymasterUserOp\(\)를 호출하여 후원 여부를 확인한 후, 실행 이후에 postOp\(\)를 호출하여 회계 처리와 페이마스터의 예치된 ETH 예비금에서의 토큰 전송을 처리합니다.

### 페이마스터가 구현해야 하는 함수는 무엇인가요?

페이마스터는 후원 계약을 검증하기 위한 validatePaymasterUserOp\(\)와, 사용자로부터 ERC-20 토큰을 받아 ETH 비용을 충당하는 등의 실행 후 로직을 처리하는 postOp\(\)를 구현해야 합니다.

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

Alchemy는 EntryPoint 컨트랙트에 네이티브 통화를 미리 예치해 두고, 매월 고객에게 커버된 총 가스비에 Growth Tier 고객의 경우 8%의 수수료를 더한 청구서를 발송하며, Enterprise 고객에게는 맞춤형 요금이 적용됩니다.

### 개발자는 가스 후원을 위해 어떤 정책을 설정할 수 있나요?

개발자는 전체 및 발신자별 최대 지출 한도, 트랜잭션 수 제한, 발신자 허용 목록 및 차단 목록, 정책 시작·종료 시간을 설정하여 페이마스터 사용을 제어할 수 있습니다.
