ABOUT ME

-

Today
-
Total
-
  • Pancake swap testnet - pancakeRouter 컨트랙트 함수 INSUFFICIENT_LIQUIDITY 에러
    Study/Blockchain 2022. 2. 7. 12:41
    반응형

    DAPP 개발을 하다 보면 정말 한국어 레퍼런스 찾기는 하늘에 별 따기다 😢

    그래서 대부분 영문 레퍼런스를 참고해서 개발을 진행하고 있다. 스택오버플로우, 레딧 짱짱,,

    아무튼 개발하다가 모르는 것은 구글링 하면 대부분 답이 나오기 때문에 아직까지는 큰 문제없이 개발하고 있다. 

    하지만 한국어 레퍼런스도 많이 있었으면 하는 바람이 있어서 내가 겪었던 에러들을 하나씩 기록해보고자 한다.

    물론 내가 기록하는 것들이 정확한 정답이라고 확신할 수는 없지만.. 조금이라도 도움이 되고자 적어보려고 한다.

     

    🔥  에러 : 테스트넷에 유동성 공급을 하고 pancakeRouter의 getAmountsOut 함수를 호출했는데, INSUFFICIENT_LIQUIDITY 에러가 발생했다.

    Pancake Swap 테스트 사이트로 널리 알려진 웹사이트(팬케이크 스왑 공식 테스트 사이트는 아닌 것으로 알고 있음)에서 개발 중인 테스트 토큰과 BNB의 유동성을 공급했다.

    유동성을 공급했으니 유동성 풀과 관련된 메소드가 정상적으로 호출되겠거니 하고, pancakeRouter 컨트랙트의 getAmountsOut 함수를 호출했는데 INSUFFICIENT_LIQUIDITY 라는 에러가 콘솔에 빨갛게 찍혔다...

    나는 분명히 유동성 공급을 했는데 왜 유동성이 부족하다는 에러가 뜨는지 알 수가 없어서 열심히 구글링을 해봤다.

     

    💡  에러 발생 원인 : 테스트 사이트의 컨트랙트 주소와 내가 사용했던 컨트랙트 주소가 달라서 발생한 에러였다.

    구글링을 해보니까 내가 유동성을 공급했던 테스트 사이트의 pancakeRouter 컨트랙트 addresss가 공식적으로 팬케이크 스왑에서 제공하는 address와 달랐기 때문이다. 나는 pancakeRouter 컨트랙트 객체를 생성할 때  '0xD99D1c33F9fC3444f8101754aBC46c52416550D1' 이 주소를 사용해서 함수를 호출했다. 이 주소가 공식 주소인데 내가 유동성 공급을 하기 위해 사용했던 테스트 사이트에서는 '0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3' 이 주소를 사용하고 있던 것이었다. 

    따라서 테스트 사이트와는 전혀 다른 주소를 대상으로 컨트랙트 객체를 생성해서 함수를 호출을 하니까 당연히 에러가 발생할 수 밖에 없었던 것이다.

     

    ♻️  해결 방법 : 공식 테스트넷 라우터 컨트랙트를 사용하는 사이트를 사용해서 테스트를 진행했다.

    공식 테스트넷 라우터 컨트랙트를 사용해서 테스트하기 위해서 방법을 찾다가 깃허브 이슈 하나를 발견 했다. 거기서 나와 비슷한 문제를 겪은 사람들이 토론을 하고 있는 것을 발견했고 하나의 해결책을 찾게 되었다. 

    ibahgwan 이라는 깃헙 유저가 테스트 사이트의 문제점을 해결하고 공식 라우터 컨트랙트를 사용할 수 있도록 테스트 사이트를 만들었다.

    https://pancakeswap.ibhagwan.workers.dev

    위 사이트에서는 공식 테스트넷 라우터 컨트랙트 주소를 사용하고 있고, 여기서 원하는 토큰 쌍의 유동성 공급을 하면 정상적으로 함수를 호출할 수 있었다.

     

    주의할 점은 팬케이크 스왑 공식 테스트 사이트가 아니기 때문에, 보안상으로 이슈가 있을 수도 있다. 물론 깃허브에 소스코드가 다 공개되어 있지만 혹시 모르기 때문에 주로 사용하는 지갑을 연결해서 테스트하지 말고, 테스트 전용 지갑을 따로 생성해서 테스트하길 권장한다.

     

     

    Pancake swap의 메인넷과 테스트넷에서 사용하는 주소들과 Binace Smart Chain의 메인넷과 테스트넷 정보들은 아래와 같다.

    const RPC_URL = isDevelopment
      ? 'https://data-seed-prebsc-1-s1.binance.org:8545'
      : 'https://bsc-dataseed.binance.org';
    const BASE_BSC_SCAN_URL = isDevelopment
      ? 'https://testnet.bscscan.com'
      : 'https://bscscan.com';
    const SNAPSHOT_BASE_URL = isDevelopment
      ? 'https://testnet.snapshot.org'
      : 'https://hub.snapshot.org';
    const CHAIN_ID = isDevelopment ? 97 : 56;
    const CHAIN_NAME = isDevelopment
      ? 'Binance Smart Chain Testnet'
      : 'Binance Smart Chain Mainnet';
    const PANCAKE_ROUTER_ADDRESS = isDevelopment
      ? '0xD99D1c33F9fC3444f8101754aBC46c52416550D1'
      : '0x10ED43C718714eb63d5aA57B78B54704E256024E';
    const PANCAKE_FACTORY_ADDRESS = isDevelopment
      ? '0x6725F303b657a9451d8BA641348b6761A6CC7a17'
      : '0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73';

     

     

     


    ⚠️ 내용 업데이트

    pancake swap에서 22년 3월부터 테스트넷을 공식적으로 지원하고 있다!

    https://pancakeswap.finance/swap?chainId=97

     

     

    레퍼런스 링크

    1. pancake swap Testnet Site : https://pancakeswap.ibhagwan.workers.dev
    2. pancake swap Testnet Site Github: https://github.com/ibhagwan/pancake-swap-interface-v1
    3. pancake swap Docs : https://docs.pancakeswap.finance/
    4. pancake swap Source codes github: https://github.com/pancakeswap/pancake-frontend
    반응형

    댓글