수수료 위임은 별도의 계정(
FeePayer)이 트랜잭션 가스 비용을 지불하고, 트랜잭션 발신자(From)는 값 전송만 제공할 수 있도록 하는 구조입니다.이 기능은 애플리케이션 운영자가 사용자 트랜잭션 비용을 보조하는 사용 사례를 가능하게 합니다. 가스 수수료 정책 및 팁 요구사항에 대한 정보는 가스 수수료 정책을 참조하세요.
일반 트랜잭션 처리 흐름은 트랜잭션 라이프사이클을 참조하세요.
목적 및 범위
수수료 위임은 트랜잭션의 재정적 책임을 두 당사자 간에 명확히 분리합니다.- 발신자(
From)
트랜잭션 의도를 서명하고 전송할Value를 제공하며 유효한 nonce를 보유해야 합니다. - 수수료 지불자(
FeePayer)
가스 지불을 승인하기 위해 별도로 서명하며 가스 비용을 충당할 수 있는 충분한 잔액을 보유해야 합니다.
FeeDelegateDynamicFeeTxType = 0x16을 통해 구현되며 Applepie 포크가 활성화되어 있어야 합니다.
트랜잭션 타입 및 구조
트랜잭션 타입 정의
수수료 위임은 트랜잭션 타입0x16(10진수 22)을 사용합니다.
| Constant | Value | Description |
|---|---|---|
FeeDelegateDynamicFeeTxType | 0x16 | Fee delegated EIP-1559 style transaction |
핵심 데이터 구조
Message 구조체는 수수료 위임 필드를 포함합니다.
TxData 인터페이스는 수수료 위임 관련 메서드를 포함합니다.
이중 서명 요구사항
수수료 위임 트랜잭션은 두 개의 독립적인 서명을 필요로 합니다.서명 1: 트랜잭션 발신자
- 트랜잭션 데이터(to, value, data, gas 매개변수, nonce)에 서명합니다.
- 서명 값:
V,R,S - 트랜잭션 실행 의도와 권한을 증명합니다.
서명 2: 수수료 지불자
- 해당 트랜잭션에 대한 가스 지불에 동의함을 서명합니다.
- 서명 값:
FV,FR,FS rawFeePayerSignatureValues()메서드를 통해 조회됩니다.
상태 전환 프로세스
트랜잭션 메시지 변환
수수료 위임 트랜잭션은 상태 전환 진입 시Message로 변환됩니다.
TransactionToMessage는 발신자 서명(V/R/S)으로부터 From 주소를 복구하고, tx.FeePayer()를 통해 FeePayer 필드를 설정합니다.수수료 지불자의 서명은 가스 지불 승인에만 사용되며
From 주소 계산에는 사용되지 않습니다.
가스 구매(buyGas)
buyGas는 수수료 위임 시 분리된 잔액 검증과 차감을 수행합니다.
잔액 검증 규칙
| Scenario | FeePayer Balance Check | Sender Balance Check |
|---|---|---|
| Fee Delegation Active | ≥ gasLimit × gasPrice + blob fees | ≥ value |
| Standard Transaction | N/A | ≥ gasLimit × gasPrice + value + blob fees |
EVM 실행 컨텍스트
수수료 위임은 EVM 실행 의미론을 변경하지 않습니다.- tx.origin: 항상 트랜잭션 발신자(
From) - 최상위 caller: 트랜잭션 발신자
- FeePayer: EVM 컨텍스트에 노출되지 않음
가스 환불 프로세스
트랜잭션 실행 후 미사용 가스는 실제 가스를 지불한 계정으로 환불됩니다.Coinbase에 대한 수수료 지불
검증자는 실제 가스 사용량에 기반한 수수료를 수령합니다.수수료 지불은 상태 전환 후반부에서 수행되며, 수수료 지불자에 대한 블랙리스트 검증도 포함됩니다.
포크 활성화 요구사항
수수료 위임은 Applepie 포크 이후에만 허용됩니다.preCheck 단계에서 즉시 거부됩니다.
RPC를 통한 트랜잭션 구성
TransactionArgs 필드
| Field | Type | Purpose |
|---|---|---|
From | *common.Address | Transaction sender |
FeePayer | *common.Address | Optional fee payer |
V,R,S | *hexutil.Big | Sender signature |
FV,FR,FS | raw tx only | FeePayer signature |
JSON 표현
주요 불변량
- 잔액 격리
FeePayer는 가스만, 발신자는 value만 부담합니다. - Origin 보존
tx.origin은 항상 발신자입니다. - 이중 동의
두 계정 모두 서명해야 트랜잭션이 유효합니다. - 포크 게이트
Applepie 활성화 이후에만 사용 가능합니다. - 환불 일관성
미사용 가스는 실제 지불자에게 반환됩니다.

