반응형

배경


회사의 노드 홈페이지가 컨트랙트 정보를 불러올 수 없어 트랜잭션이 발생되지 않는 문제가 있었다. 컨트랙트 데이터가 꼬여있나 싶어 부랴부랴 서버를 까봤지만 문제가 없었다. 그러나, 브라우저 콘솔에 polygon-rpc.com 으로의 요청이 자꾸 실패한다는 에러가 발생하는 것이었다.

 

설마 rpc 가 문제겠나 싶어 급한대로 주석처리하고 해결하고, 리팩토링을 진행했다. 그럼에도 불구하고 계속되는 삽질.

 

혹시 몰라 chainlist 홈페이지에 Polygon rpc 를 검색해보았더니 polygon-rpc 서버가 다운이 되었던 것이다!!

문제


Polygon-rpc.com 서버가 다운되어 요청에 대한 응답 x

문제를 파악했으니 일단 내 잘못이 아님에 안심하고, 대체 서버를 찾아보기로 했다. 다행히도 polygon rpc 서버는 여러가지가 있었고 최상단 빠르고 안전해보이는 서버를 선택하게 되었다.

해결


  1. Wagmi Config 에서 transport 값 변경

기존 코드에서 transport 속성은 다음과 같이 되어있었다.

transports : {
    [polygon.id] : http()
}

 

http() 함수는 블록체인의 rpc 노드를 설정해준다. 인자 값으로 url 을 넣어주면 해당 url 로 rpc 서버가 세팅된다.

 

transports : {
    [polygon.id] : http('https://alternative-rpc-url')
}

계획


현재 다른 일들이 많아 바로 적용은 못했지만 발전된 방향을 찾을 수 있었다.

 

멀티 rpc

 

바뀐 rpc 서버도 맛이 갈 수 있기 때문에 멀티 rpc 주소를 구성해야한다.

transport: fallback([ 
    http('https://1.rpc.thirdweb.com/...'), 
    http('https://mainnet.infura.io/v3/...') 
  ]), 

 

viem 라이브러리의 fallback 함수를 사용하면 url 이 작동이 되지 않을 때, 대체 url 로 시도하게된다.

반응형

+ Recent posts