본문으로 건너뛰기
이 페이지는 영문에서 기계 번역되었으므로 오역이나 어색한 표현이 있을 수 있습니다. 따라서 정확한 정보는 영어 원문을 참조하시기 바랍니다. 또한 잦은 업데이트로 인해 일부 콘텐츠는 영문이 그대로 남아있을 수 있습니다. 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 추가 리소스

기술 명세:

개발자 리소스:

커뮤니티 및 지원:

교육 콘텐츠:

페이지를 개선해 주세요