본문으로 건너뛰기
이 페이지는 영문에서 기계 번역되었으므로 오역이나 어색한 표현이 있을 수 있습니다. 따라서 정확한 정보는 영어 원문을 참조하시기 바랍니다. 또한 잦은 업데이트로 인해 일부 콘텐츠는 영문이 그대로 남아있을 수 있습니다. Crowdin에서 이 페이지의 번역을 개선하는 데 동참하여 도움을 주세요. (Crowdin translation page, Contributing guide)

6. 고급 주제 및 FAQ

이 섹션에서는 가스 추상화(GA) 통합을 최적화하고 문제를 해결하기 위한 고급 주제와 FAQ를 다룹니다. GA의 복잡한 측면을 이해하고, 모범 사례를 적용하며, 일반적인 문제를 해결하는 데 도움이 되는 정보를 제공합니다.

6.1 모범 사례​

주제권장사항비고
슬리피지토큰의 변동성이 매우 크지 않다면 getAmountIn()에 **0.5 % (50 bps)**로 시작하세요.SDK는 값을 하드코딩하지 않으며 0.5%는 Kaia 참조 코드에서 보여준 사실상의 기본값입니다.
허용량ERC-20 허용량을 캐시하고 allowance > 0일 때 ApproveTx를 건너뛰어 추가 서명과 가스를 절약하세요.KIP-247은 승인이 이미 존재할 때 2-tx 번들(Lend + Swap)을 허용하므로 허용량 재사용이 완전히 안전합니다.
배치 제출kaia_sendRawTransactions (배열 페이로드)를 사용하여 ApproveTx + SwapTx를 함께 푸시함으로써 풀 경쟁 상태를 방지하세요.단일 tx 호출(eth_sendRawTransaction)도 작동하지만, 두 번째 tx가 먼저 노드에 도달하면 nonce/정적 규칙 검사에서 실패합니다.
보안a) Kaia 문서에서 정식 GaslessSwapRouter(GSR) 주소를 하드코딩하세요.
b) 스왑을 구성하기 전에 지원 여부를 확인하세요. 예: try/catch 내에서 await router.dexAddress(token) 또는 getSupportedTokens()에서 반환된 목록 확인.
피싱 컨트랙트나 지원되지 않는 토큰이 GA 플로우를 하이재킹하는 것을 방지합니다.
KAIA 없이 가스 예상하기state override를 사용하여 eth_estimateGas로 호출에서 송신자에게 임시 잔액을 부여하세요. 예: eth_estimateGas(txObj, 'latest', { [from]: { balance: '0x…' } }).실제로 계정에 KAIA가 전혀 없을 때 "insufficient balance" 오류를 우회합니다.

6.2 문제 해결​

증상가능한 원인권장 해결책
번들이 채굴되지 않음a) token이 화이트리스트에 없음.
b) minAmountOut이 너무 타이트하여 전체 번들이 되돌려짐.
• 먼저 지원 여부 확인: 서명하기 전에 await router.dexAddress(token) (지원되지 않으면 되돌림) 또는 getSupportedTokens().includes(token).
• slippageBps를 늘리거나 amountIn을 실시간으로 견적을 다시 산정하세요.
INSUFFICIENT_OUTPUT_AMOUNT 되돌림견적과 실행 사이에 가격이 변경되어 GSR 검사 amountReceived >= minAmountOut이 실패.현재 풀 보유량으로 getAmountIn()을 다시 실행한 후, 더 높은 minAmountOut 또는 더 넓은 슬리피지로 SwapTx를 재구성하세요.
노드가 tx 거부("insufficient funds")GaslessApproveTx만 전송됨. 잔액 확인이 건너뛰어지고 쌍을 이루는 SwapTx가 없기 때문에 제안자가 LendTx를 인젝션하지 않아 트랜잭션이 가지지 않은 KAIA를 소비함.항상 kaia_sendRawTransactions를 통해 ApproveTx & SwapTx를 같은 배치에서 제출하거나, approveRequired == false인지 확인하여 2-tx 번들을 보낼 수 있도록 하세요.
번들 내 논스 불일치외부 dApp이 GA 번들이 채굴되기 전에 다음 nonce를 소비하는 일반 tx를 전송.서명 직전에 getTransactionCount()를 조회하여 nonce가 이동했다면 두 tx 객체를 모두 재구성하세요.
klay_sendRawTransactions → "undefined tx type"이더리움 타입만 지원하는 kaia_… 엔드포인트를 통해 Kaia 특정 tx 타입(예: 0x30)을 배치 전송하려고 시도.kaia_sendRawTransactions로 GA 번들을 전송한 후, klay_sendRawTransaction으로 0x30 AppTx를 브로드캐스트하세요.

6.3 자주 묻는 질문​

GA는 메인넷에서 사용 가능한가요?​

네, GA는 현재 Kairos 테스트넷과 메인넷 모두에서 라이브 상태입니다.

사용자가 스왑을 위한 토큰이 충분하지 않으면 어떻게 되나요?​

SwapTx가 온체인에서 실패하지만, KIP-245의 원자적 번들링 때문에 전체 번들이 되돌려지고 블록에서 제외됩니다. 사용자는 자금을 잃지 않으며, 온체인 상태는 변경되지 않고 유지됩니다. 실패한 시도에 대해 가스비를 지불하지 않습니다.

가스로 스왑된 토큰과 금액을 어떻게 확인할 수 있나요?​

성공한 모든 swapForGas 호출은 GaslessSwapRouter에서 SwappedForGas 이벤트를 발생시킵니다.
다음과 같이 할 수 있습니다:

  1. KaiaScan에서 라우터 주소(contract-addresses 문서 참조)를 조회하고 Events 탭을 엽니다.
  2. 이벤트 로그에 표시된 token, amountIn, amountOut, amountRepay 필드를 디코딩합니다.

온체인에서 데이터가 필요한 경우, 인덱서나 dApp 백엔드에서 SwappedForGas를 수신 대기하세요.

노드에서 GA를 비활성화할 수 있나요?​

개별 노드는 GA를 비활성화할 수 있지만, 기본적으로 활성화되어 있습니다. 한 노드에서 비활성화되어도 GA를 지원하는 다른 노드에서 결국 트랜잭션이 처리됩니다.

가스 추상화가 블록을 느리게 만드나요?​

아니요. KIP-245는 번들을 블록당 250ms execution-timeout 검사에서 면제하므로, EVM이 번들 처리를 시작하면 전체 번들을 완료할 수 있습니다. GA 트랜잭션은 잘 알려진 ERC20 승인 및 GSR 스왑 작업으로 제한되므로 합리적인 시간 내에 실행됩니다. 따라서 GA 번들은 체인의 블록 시간 예산을 위태롭게 하지 않습니다.

가스리스 트랜잭션이 실행되는 것을 어디서 볼 수 있나요?​

Kairos 테스트넷 익스플로러에서 볼 수 있습니다. 다음 블록들은 전체 번들이 순차적으로 실행되는 것을 보여줍니다:

6.4 추가 리소스​

기술 명세:

개발자 리소스:

커뮤니티 및 지원:

교육 콘텐츠:

페이지를 개선해 주세요