피드로 돌아가기
How 1,000 Wei Can Drain Protocol Fees: A Deep Dive into CoW Protocol Rounding Errors
Dev.toDev.to
Security

Integer Division Rounding Error를 통한 Protocol Fee 0원 최적화 취약점 분석

How 1,000 Wei Can Drain Protocol Fees: A Deep Dive into CoW Protocol Rounding Errors

rim dinov2026년 4월 30일2intermediate

Context

CoW Protocol(GPv2Settlement) 내 partiallyFillable 주문의 분할 체결 시 비례 수수료를 계산하는 로직 설계. Solidity의 Floating-point 미지원으로 인한 Integer Division의 내림(Round-down) 특성이 누적 수수료 누수(Fee Leakage)의 근본 원인으로 작용.

Technical Solution

  • 분할 체결 시 (feeAmount * executedAmount) / sellAmount 공식을 통한 비례 수수료 산정 방식 채택
  • 분자 값인 feeAmount * executedAmount가 분모 sellAmount보다 작을 때 결과값이 0으로 수렴하는 특성 이용
  • 악의적 Solver가 주문을 수천 개의 Dust Transaction으로 쪼개어 전송함으로써 개별 거래당 수수료를 0으로 유도하는 Attack Vector 식별
  • 최소 수수료(Minimum Fee) 강제 적용 또는 fixedPoint.mulDivUp 라이브러리 도입을 통한 올림(Round-up) 메커니즘으로의 로직 변경 제안
  • 비제로(Non-zero) 체결 시 최소 1 unit의 수수료 징수를 보장하는 검증 단계 추가 설계

1. DeFi 스마트 컨트랙트 내 나눗셈 연산 시 정수 내림으로 인한 경제적 손실 가능성 검토

2. 소액 거래(Dust Trade)의 반복 발생 시 누적되는 Precision Loss가 시스템 전체 수익에 미치는 영향 분석

3. 수수료 및 정산 로직 설계 시 `mulDivUp` 등 Round-up 함수를 사용하여 프로토콜 수익 보존

4. 비즈니스 로직상 최소 징수 금액(Minimum Threshold) 설정 여부 확인

원문 읽기