2019 년 7 월 15 일 에 일어난 첫 번째 차익 거래 공격 이후, 테라 팀 에서는 시장 조작 비용 을 증가 시키기 위해 오라클 가격 에 15 분 MA (Media móvil, 이동 평균) 을 도입 했습니다. 첫 번째 차익 거래 에 대한 보고서 는 여기 에서 확인 하실 수 있습니다.
하지만, 7 월 22 일, terra1q9m7dahs2nrs4v4l83843k9hagxwl0ytqqc8fy 주소 를 사용 하는 같은 공격자 가 다시 한번 차익 거래 공격 을 진행 했습니다.
이번 보고서 는 7.22 일 공격 에 대해 아래와 같은 주제 로 정리 합니다.
MsgSwap 분석 을 통한 공격자 의 부당 수익 계산 / 공격 과정 분석 15 분 MA 가 두 번째 공격 을 방어 하지 못한 이유 두 번째 공격 의 개선안 인 30 분 precio medio MA 와 그 한계 오라클 의 견고성 (Robustez) 과 반응성 (Respuesta ) 간의 Compensación 진행중인 연구 들
공격자 는 12 개의 MsgSwap (이하 Tx) 을 실행 했습니다. 이중 2:48, 5:15, 6:10 에 실행 된 Tx 들을 배제 하고, 각각 의 comprar / vender 쌍 으로 묶어 3 개의 그룹 으로 나누어서 공격자 가 얻은 차익 에 대해서 분석해 보도록 하겠습니다.
첫번째 그룹 에서, 공격자 는 34000 루나 를 55,694,548 KRT 로 스왑 하고, 이후 54,800,000 KRT 를 34320 루나 로 스왑 합니다.
89 스왑 을 통해서 공격자 가 얻은 수익 은 +894,548 KRT 와 +320 루나 입니다.
두번째 그룹 에서, 공격자 는 첫 두 트랜잭션 을 통해 98,000 루나 를 161,117,223 KRT 로 스왑 하고, 이후 160,414,000 KRT 를 100,943 루나 로 스왑 합니다.
해당 스왑 을 통해서 공격자 가 얻은 수익 은 +703,223 KRT 와 +2943 루나 입니다.
마지막 그룹 에서 공격자 는 먼저 3 개의 트랜잭션 을 통해서 90,000 루나 를 147,335,159.3 KRT 로 스왑 하고, 이후 147,335,240 KRT 를 94,823 루나 로 스왑 합니다.
해당 스왑 을 통해서 공격자 가 얻은 수익 은 -80 KRT 와 +4842 루나 입니다.
각 공격 의 손익 을 정리해 볼 때, 이번 공격 의 각 Comprar / Vender 그룹 별 수익 이 저번 공격 에 비해서 증가 했다는 것을 알 수 있습니다.
이는 변경된 MA 의 문제 라기 보다는, 이전 공격 보다 Swap 횟수 는 줄 었지만, 더 큰 스프레드 를 만드는 것을 통해 각 Swap 의 이율 을 증가 시켰기 에 가능 했다고 이야기 할 수 있습니다.
공격 프로세스 자체 는 7.15 일과 큰 차이 는 없습니다.
공격자 는 먼저 호가 창 에 큰 스프레드 를 만들고, 조작 된 스프레드 의 양 끝 가격 에 시장 가격 을 유지 시키는 것을 통해서 MA 를 사용한 오라클 을 조작 했습니다.
시장가 매수 매도 로 스프레드 조작 조작 된 스프레드 의 Mejor pregunta 에 MA 가 조작 될 때 까지 시장가 를 유지: 이는 1 분봉 종가 가 일정 기간 동안 유지 된 것을 통해서 알 수 있음 조작 된 Precio de Oracle 로 루나 를 테라 로 스왑 조작 조작 된 스프레드 의 Mejor oferta 에 MA 가 조작 될 때 까지 시장가 를 유지: 이는 1 분봉 종가 가 일정 기간 동안 유지 된 것을 통해서 알 수 있음 조작 된 Precio de Oracle 로 테라 를 루나 로 스왑 반복
7.15 일 공격 을 받기 전까지, 저희 는 최신 시장 가격 을 오라클 가격 으로 사용 했습니다. 7.15 일 공격 이후, 저희 는 공격자 의 시장 조작 비용 을 증가 시키기 위해 오라클 가격 에 15 분 MA 를 적용 했습니다.
위 그래프 는 2 차 공격 당시 의 코인 원 루나 마켓 과 오라클 가격 을 비교 한 그래프 입니다. 파란색 선 은 코인 원 루나 마켓 의 1 분봉 종가 를 의미 하며, 주황색 선 은 해당 시점 의 오라클 가격 을 의미 합니다.
우리 는 위 그래프 를 통해서 공격자 가 오라클 가격 을 조작 하는데 첫번째 공격 에 비해서 상대적 으로 더 오랜 시간 을 들였다 는 것을 알 수 있습니다. 즉 MA 를 사용 하는 것이 실제로 공격 비용 을 증가 시켰 습니다.
하지만 그럼에도 불구 하고 차익 거래가 가능 했던 이유 는, 저희 예상 보다 코인 원 루나 마켓 의 시장 조작 비용 이 더 낮았 기 때문 입니다. 전 는 시장 조작 을 위해 이전 보다 더 긴 시간 동안 시장 을 통제 해야 했지만, 이는 실질적 으로 공격자 가 공격 을 하지 않을 정도 의 페널티 는 아니 었 습니다.
저희 는 22/7 공격 에 대한 개선안 으로 오라클 가격 에 30 분 Precio medio MA 를 도입 했습니다.
보통 Precio medio 란 호가 창의 Mejor oferta 가격 과 Mejor pedido 가격 의 평균값 을 뜻 합니다. Precio medio 를 통해 조작 된 스프레드 로 인한 시장 조작 을 완화 시킬 수 있습니다. 하지만 이를 실제로 오라클 에 적용 하기 위해서는 매번 호가 창 데이터 들의 스냅 샷 에서 Mejor oferta 와 Mejor pedido 가격 의 평균 을 구해야 하며 이 역시 조작 이 불가능 하지 않다는 점 을 고려해 저희 는 이와 유사 하게 1 분봉 캔들 데이터 의 를 평균 내는 것으로 Precio medio 를 대체 하였습니다.
또한 30 분 MA 로 변경 하여, 기존 15 분 MA 보다 오라클 가격 조작 에 더 많은 시간 이 소요 되게 했습니다.
아래 그래프 는, 7.22 일 공격 당시 의 코인 원 시장 데이터 에 30 분 Precio medio MA 를 적용한 결과 를 보여 줍니다. 오라클 가격 의 변동 이 15 분 MA 에 비해서 확연히 줄어든 것을 확인 하실 수 있습니다.
30 분 MA de precio medio 가 적용 되었다는 것을 가정 했을 때, 공격자 는 첫 번째 그룹 에서는 손해 를 보게 되며 2,3 번째 그룹 에서만 1% 미만 의 수익 을 얻게 됩니다. 이는 약 2.6% ~ 5.4% 수익 을 본 15 분 MA 에 비해 확연히 개선 된 수준 입니다. 심지어 해당 수익 은 공격자 의 리스크 와 시장 조작 비용 을 제외한 것으로, 공격자 의 순수익 은 더 낮을 것으로 예상 됩니다.
안타깝게도, 30 분 MA de precio medio 에는 몇 가지 한계 가 존재 합니다.
공격자 가 시장 을 장악 시 Precio medio 도 조작 가능 하다는 점이 첫 번째 입니다. Precio medio 가 최신 가격 을 사용 하는 것 보다 시장 조작 비용 을 증가 시키는 것은 사실 이지만, 공격자 가 시장 을 장악 하고 있는 상황 에서는 Precio medio 도 최신 가격 과 마찬가지로 조작 이 가능 합니다.
두 번째 는 30 분 MA 는 시장 가격 보다 느리게 움직인다 는 부분 입니다. 만일 시장 가격 이 급격 하게 변동 한다면, MA 가격와 시장 가격 의 차이 를 통해서 또 다른 차익 거래 기회 가 열릴 가능성 이 존재 합니다. 오라클 투표 구조상 오라클 가격 과 시장 가격 사이 에는 항상 딜레이 가 존재 하기 때문에, 해당 차익 거래 는 더 쉽게 이루어질 수 있습니다.
란 이란 시장 조작 에 저항성 을 가질 수록 상대적 으로 시장 가격 과 오라클 가격 간의 편차 가 증가 하는 성질 을 의미 합니다. 반응성 이란 오라클 가격 이 시장 에 더 잘 반응 하여 시장 가격 과 오라클 가격 간의 편차 가 감소 할수록 상대적 으로 시장 조작 에 취약 해지는 성질 을 의미 합니다. 이는 아래 테이블 에서 확인 하실 수 있습니다.
해당 표 는 세가지 종류 의 오라클 (1. 최신 가격, 2. 15 분 MA, 3. 30 분 Precio medio MA) 를 6 월 1 일 부터 7 월 22 일 코인 원 마켓 데이터 에 시뮬레이션 했을 때, 실제 시장 가격 과 오라클 가격 간의 편차 를 수집 하여 정리 한 것 입니다.
최신 가격 의 경우, 전체 1 분봉 의 90% 가 0.4% 이하 의 편차 를 가지고 있으며, 99% 가 1.7% 의 편차 를 가지고 있고, 99.9% 가 5.0% 이하 의 편차 를 가지고 있습니다.
반면, 30 분 Precio medio MA 의 경우, 전체 1 분봉 의 90% 가 0.8% 이하 의 편차 를 가지고 있으며, 99% 가 2.6% 이하 의 편차 를 가지고 있고, 99.9% 가 5.5% 이하 의 편차 를 가지고 있습니다 .
우리 는 이를 통해서, 견고성 이 높을 수록, 시장 가격 과 오라클 가격 의 편차 가 실제로 증가 하는 경향 이 있다는 것을 알 수 있습니다. 이는 견고성 이 낮을 수록, 즉 반응성 이 높을 수록, 상대적 으로 시장 가격 과 오라클 가격 편차 를 사용한 온 체인 마켓 (테라 블록 체인) 과 오프 체인 마켓 (코인 원) 간 차익 거래 에 안전 하다는 것을 의미 합니다.
그럼에도 불구 하고 저희 가 30 분 Precio medio 를 개선안 으로 선택한 것은, 현재 오프 체인 루나 마켓 의 유동성 이 낮기 때문 입니다. 낮은 유동성 을 가진 시장 은 시장 조작 에 취약 합니다. 반면, 시장 가격 과 오라클 가격 간 편차 를 이용한 차익 거래 는 낮은 유동성 을 가진 시장 에서 일어나기 어렵 습니다. 따라서 저희 는 현재 루나 마켓 의 특성 을 고려 하여 견고성 에 중점 을 둔 30 분 Precio medio MA 를 채택 하게 되었습니다.
만일 루나 마켓 의 유동성 이 증가 한다면, 자연스럽게 시장 조작 비용 은 증가 하고, 이에 따라 시장 가격 과 오라클 가격 간의 편차 를 이용한 차익 거래 는 더 쉽게 일어날 수 있습니다. 따라서 루나 마켓 의 유동성 이 증가 하는 경우 에는, 좀 더 반응성 이 높은 오라클 을 사용 하는 것이 효과적 이라고 판단 됩니다.
저희 는 오라클 개선 을 위해, 서킷 브레이커 를 도입 할 계획 입니다. 서킷 브레이커 란, 주식 시장 에서 급격한 가격 변동 이 감지 될 때, 잠시 거래 를 중단 시키는 제도 입니다.
저희 는 오라클 에 서킷 브레이커 를 도입 하여, 오라클 가격 과 시장 가격 이 특정 기간 내에 급격 하게 변동 할 때 잠시 스왑 을 중단 시키는 것을 통해 차익 거래 를 상당 부분 방어 할 수 있을 것이라고 생각 하고 있습니다. 변경된 30 분 MA de precio medio 는 시장 조작 비용 을 증가 시켜서 시장 조작 에는 상대적 으로 견고 하지만, 시장 가격 이 급변 할 시 에는 오히려 최신 가격 을 오라클 로 사용 하는 것 보다 차익 거래 에 취약 하다는 단점 이 있습니다. 따라서 시장 가격 급변 에 대해 서킷 브레이커 를 사용 하는 것을 통해 가격 급변 에 따른 차익 거래 를 방어 할 수 있습니다.
또한 앞서 언급 한 오라클 의 견고성 과 반응성 사이 의 최적 의 트레이드 오프 를 찾기 위한 연구 를 진행 하고 있습니다.
추가적으로 이번 오라클 공격 에 대한 더 자세한 리포트 를 원하시는 분 은 여기 에서 저희 가 이번에 작성한 Papel completo 를 확인 하실 수 있습니다.
감사 합니다.