Tangerine Whistle 하드포크
메인넷 2016-10-18
DoS 공격에 악용되던 옵코드의 가스 비용을 올렸습니다.
무엇이 달라졌나
- 사용자
- 네트워크를 느리게 만들던 공격이 멈춰 거래 처리가 다시 안정됐습니다. 2016년 가을 공격자는 값이 싸게 매겨진 명령어를 거래 하나에서 반복 호출해 노드가 블록 하나를 처리하는 데 오래 걸리게 했고 그동안 거래 확정이 늦어졌습니다. 이 포크로 그 명령어들의 가스 비용이 올라 같은 공격에 훨씬 많은 수수료가 들게 됐습니다. 보통 송금이나 토큰 전송의 수수료는 거의 달라지지 않았고 사용자가 따로 할 일은 없었습니다.
- 지갑·앱 개발자
- 컨트랙트 안에서 다른 계정의 잔액이나 코드를 읽는 명령어, 저장 공간을 읽는 명령어, 다른 컨트랙트를 호출하는 명령어의 가스 비용이 크게 올랐습니다. 이런 동작을 반복문 안에서 많이 쓰는 컨트랙트는 같은 일에 더 많은 가스가 들었고 가스 한도를 빠듯하게 잡아 둔 함수는 실행이 실패할 수 있었습니다. 호출할 때 남은 가스를 전부 넘기지 못하고 일부를 반드시 남겨 두도록 규칙도 바뀌어, 호출 가스를 고정값으로 적어 둔 코드는 점검이 필요했습니다.
- 노드 운영자
- 가장 직접 혜택을 본 쪽입니다. 공격 기간에는 디스크를 많이 읽는 명령어가 싼 값에 반복 실행돼 블록 하나를 검증하는 데 평소보다 훨씬 오래 걸렸고 동기화가 뒤처지는 노드가 많았습니다. 포크 뒤에는 명령어 비용이 실제 처리 부담에 가깝게 맞춰져 블록 처리 시간이 정상으로 돌아왔습니다. 하드포크이므로 정해진 블록 높이 전에 클라이언트를 새 버전으로 올려야 했고 올리지 않은 노드는 옛 체인에 남았습니다.
주요 EIP
- EIP-150 IO 집약 연산의 가스비 인상