> ## 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.

# 아키텍처 개요

> 트랜잭션이 StableNet을 통해 이동하는 방식 — RPC 제출부터 온체인 최종 확정까지.

> StableNet은 go-ethereum 핵심(EVM, StateDB, TxPool)을 유지하고, 그 위에 Anzeon WBFT 합의와 다섯 개의 거버넌스 시스템 컨트랙트를 추가했습니다.

## 트랜잭션 흐름

`eth_sendRawTransaction`을 호출하면, 트랜잭션은 최종 확정되기까지 네 단계를 거칩니다:

```text theme={null}
1. RPC 제출 → txpool 유효성 검사
2. 채굴 후보 선정
3. EVM 실행 → 상태 변경
4. 블록 봉인 → Anzeon WBFT 합의 → 최종 확정
```

### 1. 제출 및 풀 유효성 검사

트랜잭션 풀(`txpool`)은 수락 전에 모든 수신 트랜잭션을 검증합니다:

* 수수료 필드가 올바른 형식 (`maxFeePerGas` ≥ `maxPriorityFeePerGas`)
* 논스가 발신자의 현재 온체인 논스와 일치 (또는 대기 중)
* 타입 `0x16`의 경우, 발신자와 수수료 지불자 서명이 모두 존재
* 가스 팁이 GovValidator 적용 최솟값을 충족

통과한 트랜잭션은 **pending** 풀에 들어갑니다. 논스 공백이나 수수료 문제가 있는 트랜잭션은 **queued** 풀에서 대기합니다.

### 2. 블록 구성

마이너 워커가 다음 블록에 포함될 pending 트랜잭션을 선택합니다. 선택 기준:

* 블록 헤더의 `baseFee`
* `GovValidator`의 거버넌스 가스 팁

트랜잭션은 실효 가스 가격 기준으로 높은 것부터 정렬됩니다.

### 3. EVM 실행 및 상태 전환

각 트랜잭션은 `StateDB` 스냅샷에 적용됩니다:

* 발신자 잔액에서 `gasLimit × gasPrice` 차감
* EVM이 트랜잭션 실행
* 스토리지 및 잔액 변경이 저널에 기록
* 성공 시: 상태 변경 커밋; 미사용 가스 납부자에게 환불
* revert 시: 실행 전 스냅샷으로 롤백; 가스는 여전히 소비됨

### 4. 블록 최종 확정

StableNet은 Anzeon WBFT 합의를 사용합니다. 블록은 PREPARE → COMMIT → FINALIZATION 단계를 거칩니다. 블록이 밸리데이터 쿼럼에 의해 커밋되면 **최종 확정** — 정상 운영 중에는 재편성이 발생하지 않습니다.

## 상태 모델

StableNet의 모든 계정은 다섯 개의 필드를 가집니다:

| 필드            | 설명                                         |
| ------------- | ------------------------------------------ |
| `nonce`       | 트랜잭션 수                                     |
| `balance`     | wei 단위 WKRC 잔액 (`WKRC.balanceOf()`와 동일한 값) |
| `codeHash`    | 컨트랙트 바이트코드 해시 (EOA는 0)                     |
| `storageRoot` | 계정 스토리지 트라이의 루트                            |
| `extra`       | StableNet 정책 플래그 (블랙리스트, 인증됨)              |

상태는 Merkle Patricia Trie로 저장됩니다. 각 블록 헤더의 상태 루트는 해당 시점의 전체 체인 상태를 커밋합니다.

## 개발자 이점

* **1초 확정**: 여러 확인을 기다릴 필요가 없습니다. 블록 1개 = 최종 확정.
* **수수료 지불자는 보이지 않음**: 타입 `0x16` 트랜잭션에서 `tx.origin`은 항상 발신자입니다. 컨트랙트는 수수료 위임이 사용됐는지 감지할 수 없습니다.
* **WKRC 가스 = WKRC 잔액**: 가스 납부에 사용되는 동일한 토큰 잔액이 ERC-20 잔액입니다. WKRC를 가스용과 전송용으로 분리할 필요가 없습니다.
* **논스 관리**: pending 트랜잭션이 이후 논스를 차단합니다. 트랜잭션이 멈추면 같은 주소의 이후 트랜잭션도 대기합니다.

## 개발자 이점

* 단일 블록 최종성으로 대부분의 사용 사례에서 확인 폴링이 필요 없음
* 표준 이더리움 툴링 (ethers.js, viem, Hardhat, Foundry)이 수정 없이 동작
* `balanceOf()`와 가스 잔액이 항상 동기화 — 별도의 토큰 브릿징 불필요

## 관련 문서

* [StableNet이란?](/ko/v0.3/learn/what-is-stablenet) — 고수준 개요
* [가스 및 수수료](/ko/v0.3/learn/gas-and-fees) — 수수료 계산 상세
* [트랜잭션 타입](/ko/v0.3/reference/transaction-types) — 타입 0x02와 0x16
