Technology

봇 트랜잭션 분석 리포트

이전 글을 통해 알려드린 것처럼 클레이튼에 대량의 트랜잭션이 발생해서 처리시간이 길어지는 등 유저들이 불편을 겪고 있습니다. 클레이튼 팀에서는 트랜잭션 양이 급증한 이유를 조사하고 문제를 해결하기 위해 노력하고 있습니다. 이 글에서 우리가 발견한 내용을 이용자 여러분께 공유드리려고 합니다.

대량 트랜잭션은 일정 기간동안 지속하여 발생하다가 사라지는 양상을 보이며 그 시간은 짧게는 수 분에서 길게는 수 시간동안 지속됩니다. 아래는 1월 11일 오후 1시부터 대량의 트랜잭션이 약 2시간 30분 정도 발생했을 때의 네트워크 상황입니다. 이 기간에 Klaytn의 메인넷 Cypress는 1초에 1블록을 정상적으로 생성하며 150분동안 970만개의 트랜잭션을 처리했습니다.

대량 트랜잭션의 상당수는 차익거래 봇에 의해 생성된 것으로 추정됩니다. 차익거래 봇이란 암호화폐 거래 등을 목적으로 자동으로 다수의 트랜잭션을 생성하는 프로그램을 가리킵니다. 특히 1월 11일의 버스트 기간동안에 발생한 트랜잭션의 87%는 6개의 컨트랙트 주소에서 발생한 것이었고 6개 모두 차익거래 봇이 이용하는 컨트랙트로 확인되었습니다.

트랜잭션들의 토큰 전송 내역을 살펴본 결과 우리는 평균적인 차익거래 봇이 수수료를 제하고 얻는 순수익이 수수료 대비 9배 정도인 것으로 파악했습니다.

그런데 봇이 발생하는 트랜잭션의 대부분은 상태 변화를 발생시키지 않는 스팸 트랜잭션이었고 일부 트랜잭션에서만 토큰 교환이 일어났습니다. 어떤 컨트랙트는 며칠 간 1,400만(14 million)개의 트랜잭션을 보냈는데 그 중 2,300개(0.016%)만이 차익거래를 실행하는 트랜잭션이었습니다. 따라서 봇이 생성하는 버스트 트랜잭션들은 대부분 스팸 트랜잭션으로 보입니다.

클레이튼 팀은 스팸 트랜잭션의 수를 줄이기 위해서 기술적 조치를 취한 바 있습니다. 1월 초에 클레이튼 팀은 Revert 트랜잭션을 자주 발생시키는 컨트랙트에 대해 QoS를 적용하는 기능을 배포했습니다 (PR#1092). 적용 이후 Revert 되는 트랜잭션의 비율이 급감하였습니다. 그러나 전체적인 트랜잭션 수는 여전히 많았으며 일부 봇들이 트랜잭션이 Revert 되지 않도록 구현을 바꾼 것으로 보입니다.

여전히 존재하는 스팸을 줄이기 위해서 클레이튼 팀은 추가적인 기술적 조치와 함께 트랜잭션 수수료를 올리는 방안도 검토하고 있습니다. 만약 Gas Price가 지금보다 높아지면 봇은 수수료를 더 많이 지불해야 하므로 스팸 트랜잭션을 줄여야 할 것입니다. 아래는 현재 Gas Price에서 9배 수익률을 올리는 차익거래 봇이 수수료 인상시 스팸 트랜잭션을 얼마나 줄일 지를 예상한 그래프입니다. 그래프의 가로축은 Gas Price, 세로축은 예상되는 트랜잭션 수를 나타냅니다.

봇이 수익률을 유지하려면 수수료가 높아짐에 따라 스팸 트랜잭션을 줄여서 수수료를 아껴야 합니다. 빨간 곡선은 현재와 같이 9배 수익률을 유지할 때를 나타냅니다. 파란 곡선은 거래 차익과 수수료 비용이 동일하게 되는 지점, 즉 수익률이 0인 지점을 나타냅니다. 만약 수수료가 지금의 25ston에서 점진적으로 750ston까지 증가한다면 봇은 1, 2, 3번 순서대로 트랜잭션 수를 줄일 것으로 예상합니다. (1) 봇이 현재와 같은 수준으로 스팸 트랜잭션을 보내어 수익률이 점차 0으로 감소합니다. (2) 수수료 지출로 인한 손실을 막기 위해서 스팸 트랜잭션을 줄입니다. (3) 양의 수익률을 만들기 위해 스팸 트랜잭션을 더욱 줄입니다.

그러나, 트랜잭션 수수료 인상은 모든 클레이튼 사용자에게 영향을 끼칠 수 있기에 클레이튼 팀은 노드 운영자 뿐만 아니라 KLAY holder 등 Klaytn 커뮤니티에 속한 다양한 사용자들과의 소통과 많은 준비를 통해 이를 결정하려고 합니다. 클레이튼 팀은 소수가 발생시킨 대량 트랜잭션에 의한 네트워크 혼잡 문제를 중요하게 다루고 있습니다. 클레이튼의 자원이 소수에게 독점되지 않고 다같이 사용될 수 있도록 많은 고민을 하고 있습니다. 앞으로도 더 나은 해결방안을 찾기 위해 노력할 것입니다.