메타마스크에서 네트워크를 추가할 때 자주 chainlist를 사용한다. 아발란체 네트워크를 검색해서 추가하려고 하면 아래 여러 RPC 서버가 나온다. 여기서 중요한 것은 Height
와 Latency
다. 아비트라지 기회가 보일 때 바로 스왑을 진행해야 하는데 내가 연결한 네트워크가 현재 블록높이가 안 맞고 느리다면? 당연히 다른 봇들이 먼저 스왑을 진행할 것이고 내가 보낸 트잭은 revert가 날 것이다. 보통 스왑을 진행하기 전에 수익이 나는지 한 번 더 컨펌하고 진행하지만 revert가 나서 스왑이 진행되지 않는다면 아무 소용이 없다.
위 사진은 브라우니에서 제공하는 avax-main 네트워크(좌)와 moralis에서 제공하는 네트워크(우)에 연결 후 블록높이를 비교한 사진이다. 왼쪽을 자세히 보면 69번 높이의 블록이 없다.(???) 믿기지 않겠지만 public 네트워크는 블록을 건너뛰는 경우가 있다. 그리고 시간이 지나면 지날수록 조금씩 느려져서 내가 모니터링 하고 있는 가격이 실제 가격보다 조금 이후의 가격인 경우가 있고, 아비트라지를 포착하고 바로 트랜잭션을 보낸다고 해도 내가 보낸 트랜잭션은 이미 이전 블록에게 요청을 보내는 것이기 때문에 블록이 다 차서 리젝나는 경우가 있다. 반면 경쟁자의 봇이 오른쪽처럼 최신 블록높이와 연결되어 있고 컨펌도 바로바로 난다면 모든 아비트라지 기회를 독식할 것이다.
이건 절대 Moralis 홍보가 아니다. 단지 퍼블릭 rpc보다 빠르다는 말이 있어서 이용하려는 것 뿐이다.
(.venv) devil@hades:~$ brownie networks add Avalanche moralis-avax-main host=https://speedy-nodes-nyc.moralis.io/[your_special_api_key_here]/avalanche/mainnet explorer=https://api.snowtrace.io/api chainid=43114 name=Mainnet
+수정
현재 Moralis는 더 이상 Speedy node를 지원하지 않는다고 한다. 대신 chainstack을 사용해보자.
chainstack에 나온 예시에 따라 다음과 같이 아발란체 메인넷을 추가해봤다.
brownie networks add Avalanche chainstack-mainnet name="avalanche-mainnet" host=<여기다 http 엔드포인트 복붙> chainid=43114