메인 콘텐츠로 건너뛰기

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

트랜잭션 흐름

eth_sendRawTransaction을 호출하면, 트랜잭션은 최종 확정되기까지 네 단계를 거칩니다:
1. RPC 제출 → txpool 유효성 검사
2. 채굴 후보 선정
3. EVM 실행 → 상태 변경
4. 블록 봉인 → Anzeon WBFT 합의 → 최종 확정

1. 제출 및 풀 유효성 검사

트랜잭션 풀(txpool)은 수락 전에 모든 수신 트랜잭션을 검증합니다:
  • 수수료 필드가 올바른 형식 (maxFeePerGasmaxPriorityFeePerGas)
  • 논스가 발신자의 현재 온체인 논스와 일치 (또는 대기 중)
  • 타입 0x16의 경우, 발신자와 수수료 지불자 서명이 모두 존재
  • 가스 팁이 GovValidator 적용 최솟값을 충족
통과한 트랜잭션은 pending 풀에 들어갑니다. 논스 공백이나 수수료 문제가 있는 트랜잭션은 queued 풀에서 대기합니다.

2. 블록 구성

마이너 워커가 다음 블록에 포함될 pending 트랜잭션을 선택합니다. 선택 기준:
  • 블록 헤더의 baseFee
  • GovValidator의 거버넌스 가스 팁
트랜잭션은 실효 가스 가격 기준으로 높은 것부터 정렬됩니다.

3. EVM 실행 및 상태 전환

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

4. 블록 최종 확정

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

상태 모델

StableNet의 모든 계정은 다섯 개의 필드를 가집니다:
필드설명
nonce트랜잭션 수
balancewei 단위 WKRC 잔액 (WKRC.balanceOf()와 동일한 값)
codeHash컨트랙트 바이트코드 해시 (EOA는 0)
storageRoot계정 스토리지 트라이의 루트
extraStableNet 정책 플래그 (블랙리스트, 인증됨)
상태는 Merkle Patricia Trie로 저장됩니다. 각 블록 헤더의 상태 루트는 해당 시점의 전체 체인 상태를 커밋합니다.

개발자 이점

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

개발자 이점

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

관련 문서