이 페이지는 영문에서 기계 번역되었으므로 오역이나 어색한 표현이 있을 수 있습니다. 따라서 정확한 정보는 영어 원문을 참조하시기 바랍니다. 또한 잦은 업데이트로 인해 일부 콘텐츠는 영문이 그대로 남아있을 수 있습니다. Crowdin에서 이 페이지의 번역을 개선하는 데 동참하여 도움을 주세요. (Crowdin translation page, Contributing guide)
2. 가스 추상화 작동 원리
이 섹션에서는 트랜잭션 번들링, 원자성, 주요 구성 요소의 역할을 포함하여 가스 추상화가 Kaia 네트워크 내에서 어떻게 작동하는지 상세히 살펴보겠습니다.
2.1 아키텍처 개요
GA는 스마트 컨트랙트와 트랜잭션 번들링을 활용하여 원활한 사용자 경험을 보장하는 탈중앙화 아키텍처를 기반으로 구축되었습니다.
주요 구성 요소
- KIP-247 (Gasless Transaction): 네트워크 내에서 가스 추상화에 해당하는 특정 트랜잭션 형식(
GaslessApproveTx
,GaslessSwapTx
)을 정의합니다. - KIP-245 (Transaction Bundle): 필요한 트랜잭션 시퀀스(대출, 승인, 스왑)가 원자적으로 실행되도록 보장합니다. 즉, 모두 성공하거나 모두 함께 실패합니다.
- GaslessSwapRouter (GSR): 토큰-KAIA 스왑을 수행하고 동일 블록 내에서 초기 가스 대출에 대해 블록 프로포저에게 상환하는 핵심 스마트 컨트랙트입니다.
주요 참여자
다음 다이어그램은 GA 프로세스에서 주요 참여자와 그들의 상호작용을 보여줍니다.
- 월렛: 가스리스 트랜잭션을 시작하는 사용자의 월렛 또는 dApp 인터페이스
- 사용자 계정: 가스리스 트랜잭션을 시작하는 월렛 또는 dApp 사용자
- 블록 프로포저: 블록을 제안하는 노드로, 가스비를 위해 일시적으로 KAIA를 대출합니다
- GaslessSwapRouter (GSR): 스왑 및 상환 로직을 처리하는 스마트 컨트랙트
- DEX 라우터: 실제 토큰 스왑을 수행하는 기본 탈중앙화 거래소
2.2 트랜잭션 번들 구성 요소
GA는 트랜잭션 번들링을 통해 작동하며, 블록체인 클라이언트가 오직 LendTx + (옵션) ApproveTx + SwapTx만을 원자적 번들로 그룹화합니다. 이 세 개는 모두 성공하거나 모두 실패합니다. 번들 직후에 전송되는 AppTx는 번들 _외부_에 있으며 독립적으로 되돌릴 수 있습니다.
LendTx (대출 트랜잭션)
- 서명자: 블록 프로포저
- 목적: 가스비를 위해 사용자에게 일시적으로 KAIA 대출
- 생성: 블록 구성 중 동적으로 생성
- 금액: ApproveTx + SwapTx에 대한 가스를 커버하도록 계산
ApproveTx (승인 트랜잭션) - 옵션
- 서명자: 사용자
- 목적: GaslessSwapRouter에 대한 ERC-20 토큰 지출 승인
- 필요한 경우: 사용자가 이전에 토큰을 승인하지 않은 경우
- 형식: KIP-247 명세를 따라야 함
SwapTx (스왑 트랜잭션)
- 서명자: 사용자
- 목적: 사용자 토큰을 KAIA로 스왑하고 프로포저에게 상환
- 컨트랙트: GaslessSwapRouter.sol 호출
- 검증:
amountReceived >= minAmountOut >= amountRepay
보장
2.3 원자성 및 실패 처리
KIP-245 번들 속성:
- 전부 아니면 전무 실행: 어떤 트랜잭션이든 실패하면 전체 번들이 되돌려짐
- 타임아웃 면제: 번들은 블록당 250ms 실행 제한에서 면제됨
- 상태 롤백: 실패한 번들은 완전한 상태 되돌리기를 트리거함
일반적인 실패 시나리오:
- 토큰 잔액 부족 → 번들 되돌림, 가스 손실 없음
- 가격 슬리피지 초과 → SwapTx 실패, 번들 되 돌림
- 토큰 승인 누락 → 검증 실패, 트랜잭션이 풀에 남아있음
2.4 네트워크 레벨 처리
트랜잭션 풀 검증
가스리스 트랜잭션은 트랜잭션 풀에서 일반적인 잔액 확인을 우회합니다. 검증 로직은 가스리스 트랜잭션을 감지하고 가스비에 대한 계정 잔액 확인을 건너뜁니다.
승급 및 번들링 로직
- GaslessApproveTx는 해당하는 GaslessSwapTx 없이는 승급될 수 없음
- GaslessSwapTx는 토큰이 이미 승인된 경우 독립적으로 승급 가능
- 두 트랜잭션이 모두 존재할 때 동시에 승급됨
블록 프로포저 인젝션 및 실행
블록 프로포저는 가스리스 트랜잭션을 감지하면 자동으로 LendTx를 인젝션합니다. LendTx는 블록 생성 중 즉석에서 생성되어 사용자의 가스리스 트랜잭션 앞에 배치됩니다.
2.5 잔액 변화를 포함한 예시 워크플로우
사용자가 1.00 BORA
와 0 KAIA
를 가지고 있는 시나리오를 살펴보겠습니다.
단계 | 동작 | 프로포저 잔액 | 사용자 잔액 | 비고 |
---|---|---|---|---|
1. 초기 | - | 10.00 KAIA | 0.00 KAIA, 1.00 BORA | 사용자가 tx 비용을 지불하려고 함 |
2. LendTx | 프로포저가 0.02 KAIA 대출 | 9.97 KAIA | 0.02 KAIA, 1.00 BORA | 프로포저가 자신의 가스 지불 |
3. ApproveTx | 사용자가 GSR에 BORA 승인 | 9.97 KAIA | 0.01 KAIA, 1.00 BORA | 대출에서 가스(0.01 KAIA) 지불 |
4. SwapTx | 사용자가 0.06 BORA를 0.04 KAIA로 스왑 | 10.00 KAIA | 0.01 KAIA, 0.94 BORA | 프로포저에게 0.03 KAIA 상환 |
5. AppTx | 사용자가 메인 tx 실행 | 10.00 KAIA | 0.00 KAIA, 0.94 BORA | 스왑에서 얻은 KAIA로 가스 지불 |