Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Klaytn의 Bot 대응기: Dynamic Gas Price

kakao
December 09, 2022

Klaytn의 Bot 대응기: Dynamic Gas Price

#GasPrice #KIP-71 #Klaytn

클레이튼과 같은 Scalable 블록체인은 낮은 가스비와 높은 TPS 로 인해, 많은 봇들이 활동하기 쉬운 구조를 가지고 있습니다.
2022년 상반기 클레이튼 메인넷에 많은 봇 트래픽이 몰리면서 겪었던 어려움과, 클레이튼 팀이 이를 어떻게 접근하고 해결했는지, 해결하며 느낀 점들은 무엇인지 공유하고자 합니다.

발표자 : jack.jin
(잭) 저는 지금까지 보안과 관련된 일들을 해오다가 올해부터 크러스트유니버스에 입사하여 코어개발팀 인터페이스 파트에서 일하고 있습니다.

jared.fi
(제라드) 크러스트유니버스 에코시스템 플래닝팀에서 근무하고 있는 제라드입니다. 블록체인을 좋아해서 크러스트로 이동하기 전 Ground X 에서부터 클레이튼 관련 일들을 지속적으로 재미있게 해왔습니다.

kakao

December 09, 2022
Tweet

More Decks by kakao

Other Decks in Programming

Transcript

  1. Dynamic Gas Price Copyright 2022. Kakao Corp. All rights reserved.

    Redistribution or public display is not permitted without written permission from Kakao. Klaytn의 Bot 대응기 엄기진 Jack.jin 이우진 jared. f 크러스트 유니버스 if(kakao)2022
  2. Jack(엄기진) [22~] Krust Universe, Core Dev Team [21~22] Krafton [17~21]

    The Attached Institute of ETRI [15~16] Suresoft Tech. Jared(이우진) 발표자 소개 [22~] Krust Universe, Ecosystem Planning Team [18~22] Ground X, Klaytn Group
  3. Klaytn Cypress 메인넷 문제의 발단 해결1: Spam Throttler 해결2: 가스비

    인상 & 시간우선 해결3: 동적 가스비 Lesson learned
  4. Klaytn Cypress 메인넷 문제의 발단 해결1: Spam Throttler 해결2: 가스비

    인상 & 시간우선 해결3: 동적 가스비 Lesson learned
  5. Klaytn Cypress ݫੋ֔ ޙઁ੄ ߊױ ೧Ѿ1: Spam Throttler ೧Ѿ2: оझ࠺

    ੋ࢚ & दр਋ࢶ ೧Ѿ3: ز੸ оझ࠺ Lesson learned
  6. 문제의 발단 - 낮은 가스비와 봇을 이용한 차익거래(Arbitrage) 기승 -

    DEX 거래소간 차액 발생 → 차익실현 - 먼저 실행된 트랜잭션 → 큰 차익 - 블럭 내 트랜잭션 경쟁 구조 → 1등을 선점하기 위한 봇 트랜잭션 발생
  7. 문제의 발단 Klaytn의 봇 대응기 시작… - 너무 많은 트랜잭션들로

    인해 유저들이 보낸 거래가 지연 - 급증 트랜잭션을 버티지 못하고 Block explorer, 거래소 등 입출금 지연 - 커뮤니티의 원성, 유저의 불편 급증
  8. Klaytn Cypress 메인넷 문제의 발단 해결1: Spam Throttler 해결2: 가스비

    인상 & 시간우선 해결3: 동적 가스비 Lesson learned
  9. 해결1: Spam Throttler - (공격자) 스팸 트랜잭션을 이용한 TxPool점유 -

    타 이용자의 트랜잭션 유실 ծ਷ оझܳ ࣗݽೞח ؀۝ ౟ے੥࣌ Cypress झಅ ରঘѢې ౟ے੥࣌ ੌ߈ ౟ے੥࣌ ҃੬ ౟ے੥࣌
  10. 해결1: Spam Throttler Tx Tx Tx Spam Throttler Spam Class

    fi er Allowed Candidate Weight Throttled Weight TxPool X Weight Manager Update
  11. Klaytn Cypress 메인넷 문제의 발단 해결1: Spam Throttler 해결2: 가스비

    인상 & 시간우선 해결3: 동적 가스비 Lesson learned
  12. 해결2: 가스비 인상 & 시간우선 블록체인에서는 모든 거래 내역과 루트를

    볼 수 있음 Txid Exchange path Gain Tx fee Gain/ Fee Gain/ Volume 0xb709d323ef2 549ea7fd61def7 1b3a80ba316c5 47.66 KLAY → 79.88 KXRP → 0.018 KETH → 67.02 KUSDT → 47.71 KLAY 0.05 0.019 2.6x 0.10% 0xe80b2c29d3b c3e5c5b3f5f7d7 399266746ec81 207.24 WKLAY → 6.84 CLA → 207.63 KLAY 0.39 0.013 30x 0.19% 0x53be7221316 2ace3727a31d4 06464b8a7fbfd1 1082.9 KLAY → 961.51 PALA → 1390.7 KUSDT → 118.6 KXRP → 1086.62 KLAY 3.70 0.022 166x 0.34% 0x8ac088adb03 dd90efb206c02 6e94baa76b5a7 8750.52 KLAY → 1454.41 WEMIX → 8786.06 KLAY 35.55 0.013 2566x 0.41% 0xd928c4812ba 93d4c07d83eb5 ee32f1365a034 2400.87 KLAY → 0.90117 KETH → 2,426.74 KLAY 25.87 0.010 2709x 1.08% 0x3f90dd45ceb 203ea465590f7 842b3fe5fa5d18 14838.45 KLAY → 14584.31 MIX → 2126.11 KSP → 41990.04 ORC → 15443.46 KLAY 605.01 0.036 16800x 4.08%
  13. 해결2: 가스비 인상 & 시간우선 분석 통해 가스비에 따른 차익거래자의

    기대 수익 모델링 750 ston 적용시, 100% 수익 유지하려면 트랜잭션을 85% 이상 줄여야 함
  14. 해결2: 가스비 인상 & 시간우선 +먼저 온 트랜잭션이 먼저 처리되는

    ‘시간우선’ 방식 적용 -> 유효 트랜잭션을 빠르게 보내면 그 이후 더 많은 트랜잭션 보낼 유인 저하
  15. 해결2: 가스비 인상 & 시간우선 ‘가스비가 갑자기 너무 높아 졌어요!!’

    => Bot 활동 추가 분석 결과 내릴 여력 존재 하지만…
  16. Klaytn Cypress 메인넷 문제의 발단 해결1: Spam Throttler 해결2: 가스비

    인상 & 시간우선 해결3: 동적 가스비 Lesson learned
  17. 해결3: 동적 가스비 AS-IS TO-BE - 250 ston으로 가스비 고정

    - 추가 조정하는데 최소 1주일 소요 - 어떤 가격으로 조정해야 하는 지 매번 분석 필요 - 네트워크 혼잡도에 따라 실시 간 가스비 조정
  18. 해결3: 동적 가스비 Block Gas Used = 60M Gas Used

    = 0M 매 블록 최대 5% 상승 Gas Used = 30M 매 블록 최대 5% 하락 Max = 750 ston 가스비 Min = 25 ston
  19. Klaytn Cypress 메인넷 문제의 발단 해결1: Spam Throttler 해결2: 가스비

    인상 & 시간우선 해결3: 동적 가스비 Lesson learned
  20. Lessons Learned & 추가로 생각해볼 점들 Lessons Learned 1. 어느

    제품이나 그렇듯, Layer 1의 가스비도 적절한 가격을 찾는건 매우 중요하다. 그런데 블록 체인에 있어서 그건 꽤나 어렵다! 2. 여러 가스비 디자인에 따라 다양한 trade - off 들이 항상 존재한다. 따라서 디자인이 만족시키 고자 하는 우리의 가치와 목표를 미리 align하는게 좋다. 3. 등등… 생각해볼 점들 1. 과연 Block gas used 만을 네트워크 혼잡 상황을 판단하는 지표로 사용하는게 최선인가? 2. Min / Max 값도 상황에 따라 자동으로 조절시킬수 있지 않을까? 3. 등등…