> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stablenet.network/llms.txt
> Use this file to discover all available pages before exploring further.

# 트랜잭션 처리

## 목적 및 범위

이 문서는 go-stablenet의 트랜잭션 실행에 대한 포괄적인 개요를 제공하며, RPC 제출부터 검증, EVM 실행, 최종화까지의 전체 파이프라인을 다룹니다. 주요 컴포넌트(StateProcessor, StateTransition, EVM)와 상호 작용을 소개하며, 특정 측면의 상세 내용은 하위 페이지에 위임합니다.

**상세 주제(하위 페이지 참조):**

* Transaction Lifecycle - RPC 제출부터 블록 포함까지의 전체 흐름
* State Transitions and Gas - StateTransition 프로세스, 사전 검사, 가스 구매, 고유 가스, 환불
* EVM Execution - EVM 인스턴스화, 바이트코드 해석, 상태 수정
* Gas Fee Policy - StableNet의 거버넌스 기반 가스 팁 적용
* Fee Delegation - 제3자 가스 지불 메커니즘

**관련 페이지:**

* 트랜잭션 풀 관리 및 검증: [Transaction Pool](/ko/core-architecture/3.4-transaction-pool)
* 트랜잭션 구조 및 직렬화: [Transaction Types and Encoding](/ko/core-architecture/3.5-transaction-types-and-encoding)
* 블록 생성 중 트랜잭션 선택: [Block Production and Mining](/ko/consensus-and-block-production/4.2-block-production-and-mining)
* StateDB 아키텍처 및 저널링: [State Management](/ko/core-architecture/3.3-state-management)

## 트랜잭션 처리 개요

go-stablenet의 트랜잭션 처리는 메시지를 상태 변경 및 영수증으로 변환하는 다단계 파이프라인을 따릅니다. 프로세스는 블록 수준 처리를 위한 StateProcessor와 개별 트랜잭션 실행을 위한 StateTransition에 의해 조정됩니다.

### 고수준 처리 흐름

**다이어그램: 코드 엔티티가 있는 트랜잭션 실행 파이프라인**

## 핵심 컴포넌트

### StateProcessor

StateProcessor는 블록 수준 트랜잭션 처리를 처리합니다. 블록의 모든 트랜잭션을 반복하고 순차적으로 적용하며 최종화를 위해 합의 엔진과 조정합니다.

| Component | Type                  | Purpose                                       |
| --------- | --------------------- | --------------------------------------------- |
| `config`  | `*params.ChainConfig` | Chain configuration for fork rules            |
| `bc`      | `*BlockChain`         | Access to canonical chain state               |
| `engine`  | `consensus.Engine`    | Consensus engine for rewards and finalization |

**주요 메서드:** `Process(block, statedb, cfg) -> (receipts, logs, gasUsed, error)`

메서드는 다음을 수행합니다:

* 헤더 정보가 있는 EVM 블록 컨텍스트 생성
* 트랜잭션 반복, 각각을 Message로 변환
* 각 트랜잭션에 대해 `applyTransaction()` 호출
* 합의별 로직을 위해 `engine.Finalize()` 호출

### StateTransition

StateTransition 구조체는 현재 상태에 대해 단일 트랜잭션을 실행하는 로직을 캡슐화합니다. 가스 계정, 사전 검사, EVM 호출, 오류 처리를 관리합니다.

## 트랜잭션 검증 및 사전 검사

실행 전에 트랜잭션은 `StateTransition.preCheck()` 메서드에서 광범위한 검증을 거칩니다. 이는 상태 변경이 발생하기 전에 합의 규칙이 충족되도록 보장합니다.

### 주요 검증 검사

| Check              | Method                              | Purpose                      | Errors                                 |
| ------------------ | ----------------------------------- | ---------------------------- | -------------------------------------- |
| Nonce              | `state.GetNonce(msg.From)`          | Ensures transaction ordering | `ErrNonceTooLow`, `ErrNonceTooHigh`    |
| Sender Account     | `state.GetCode(msg.From)`           | Verifies sender is EOA       | `ErrSenderNoEOA`                       |
| Gas Pricing        | `GasFeeCap >= GasTipCap >= BaseFee` | Validates EIP-1559           | `ErrFeeCapTooLow`, `ErrTipAboveFeeCap` |
| Authorization List | Validate EIP-7702                   | Checks signatures            | `ErrAuthorizationInvalidSignature`     |
| Gas Purchase       | `buyGas()`                          | Reserves gas upfront         | `ErrInsufficientFunds`                 |

## 가스 관리

StableNet의 가스 관리는 선불 구매, 고유 가스 공제, 실행 후 환불의 세 단계로 구성됩니다.

### 가스 구매

`StateTransition.buyGas()`는 선택적 수수료 위임이 있는 선불 가스 지불을 처리합니다.

### 고유 가스

`IntrinsicGas()`는 실행 전 기본 가스 비용을 계산합니다.

### 가스 환불

`StateTransition.refundGas()`는 사용하지 않은 가스를 환불합니다.

## EVM 실행

검증과 가스 구매 후 `StateTransition.TransitionDb()`는 EVM을 호출해 트랜잭션을 실행합니다.

### EVM 구조

| Field         | Type              | Purpose              |
| ------------- | ----------------- | -------------------- |
| `Context`     | `vm.BlockContext` | Block metadata       |
| `TxContext`   | `vm.TxContext`    | Transaction metadata |
| `StateDB`     | `vm.StateDB`      | State interface      |
| `interpreter` | `*EVMInterpreter` | Bytecode interpreter |

## StableNet 특화 기능

### 블랙리스트 적용

Anzeon 활성화 시 블랙리스트 주소는 실행 전·중 차단됩니다.

### 가스 팁 거버넌스

승인되지 않은 계정에는 거버넌스 기반 최소 가스 팁이 적용됩니다.

### 수수료 위임

제3자 계정이 가스를 지불할 수 있으며 환불도 해당 계정으로 처리됩니다.

## 오류 처리

오류는 사전 실행 합의 오류와 실행 중 EVM 오류로 구분됩니다.

## 성능 고려사항

* 스택 및 메모리 풀 사용
* StateDB 스냅샷 기반 롤백
* 가스 계산 최적화

## 요약

StableNet의 트랜잭션 처리는 검증 → 가스 구매 → EVM 실행 → 상태 반영 → 환불 → 영수증 생성의 흐름을 따르며, 거버넌스 기반 가스 정책, 수수료 위임, EIP-7702 등 확장 기능을 포함합니다.
