이더리움 콘스탄티노플 연기 사태

사건표준

Ethereum Constantinople postponement

토큰포스트 위키인용하기

다른 이름 Ethereum Constantinople postponement · Constantinople hard fork · EIP-1283 reentrancy · Ethereum Constantinople · Petersburg upgrade · St. Petersburg fork · 상트페테르부르크 하드포크 · 이더리움 콘스탄티노플 · 콘스탄티노플 업그레이드 · 콘스탄티노플 하드포크 · 페테르스부르크 업그레이드

이더리움 콘스탄티노플 연기 사태(Ethereum Constantinople postponement)는 2019년1월 이더리움의 콘스탄티노플(Constantinople) 하드포크를 하루 앞두고, 포함된 제안 하나가 기존 스마트 컨트랙트에 재진입 공격 통로를 열 수 있다는 사실이 드러나 업그레이드를 미룬 일이다. 개발자들은 문제의 제안을 빼는 '페테르스부르크(St. Petersburg)' 변경을 함께 넣어 2019년2월28일 업그레이드를 다시 적용했다.

1.하루 전에 발견된 구멍#

콘스탄티노플은 비트 이동 연산(EIP-145), 아직 없는 주소와 미리 상호작용할 수 있게 하는 CREATE2(EIP-1014), 컨트랙트 코드 해시를 읽는 EXTCODEHASH(EIP-1052), 난이도 폭탄을 약 12개월 미루고 블록 보상을 줄이는 EIP-1234를 담은 업그레이드였다. 여기에 저장 연산(SSTORE)의 가스 비용을 낮추는 EIP-1283도 들어 있었다. 스위스 보안업체 체인시큐리티(ChainSecurity)는 2019년1월15일 이 변경이 적용되면 이미 배포된 일부 컨트랙트가 재진입 공격에 노출된다고 알렸다. 솔리디티의 transfer 함수는 받는 쪽에 2,300가스만 넘겨 재진입을 막는다고 여겨졌는데, SSTORE가 싸지면 이 적은 가스로도 상태를 바꿀 수 있게 되기 때문이었다. 트레일오브비츠도 분석에 참여했다.

[1][2]

2.블록 7,080,000을 앞둔 결정#

업그레이드는 블록 7,080,000, 2019년1월16일께로 잡혀 있었다. 1월15일 이더리움 재단 블로그는 핵심 개발자와 클라이언트 팀 등 이해관계자들이 "만일에 대비해" 포크를 미루기로 했다고 공지했다. 노드 운영자와 채굴자에게는 남은 몇 시간 안에 Geth나 Parity 클라이언트를 새 버전으로 올리거나 이전 버전으로 되돌리라고 했다. 새 버전에는 콘스탄티노플을 무기한 미루는 설정이 들어갔다. 일반 이용자와 컨트랙트 소유자는 따로 할 일이 없다고 안내했다. 하드포크는 모든 노드가 같은 규칙을 동시에 바꿔야 하므로, 업데이트하지 않은 노드가 남으면 체인이 갈라질 위험이 있었다.

[3]

3.페테르스부르크와 재적용#

개발자들은 EIP-1283만 빼고 나머지를 적용하기로 했다. 이미 콘스탄티노플이 켜진 테스트넷에서는 이 제안을 되돌려야 했기 때문에, 되돌리는 변경에 '페테르스부르크'라는 이름을 붙였다. 메인넷에서는 2019년2월28일 블록 7,280,000에서 콘스탄티노플과 페테르스부르크가 같은 블록에 적용됐다. 결과적으로 메인넷에 EIP-1283은 한 번도 켜지지 않았다. 저장 가스 비용 조정은 이후 재진입 문제를 피하도록 손본 EIP-2200으로 2019년12월 이스탄불 업그레이드에 들어갔다. 이 일은 기존 컨트랙트가 가스 비용에 기대 안전을 지키는 방식이 얼마나 불안정한지 보여 줬고, transfer·send에 의존하는 재진입 방어를 피하라는 권고가 퍼지는 계기가 됐다.

[4][5]

4.연표3건

  1. 2019.01사건1월15일 체인시큐리티, EIP-1283 재진입 위험 공개·콘스탄티노플 연기 결정
  2. 2019.02이정표2월28일 블록 7,280,000에서 콘스탄티노플·페테르스부르크 동시 적용
  3. 2019.12이정표이스탄불 업그레이드에 수정판 EIP-2200 반영

각주

  1. [1]Security Alert – Ethereum Constantinople Postponement — blog.ethereum.org · Ethereum Foundation Blog
  2. [2]EIP-1283: Net gas metering for SSTORE without dirty maps — eips.ethereum.org · Ethereum Improvement Proposals
  3. [3]Security Alert – Ethereum Constantinople Postponement — blog.ethereum.org · Ethereum Foundation Blog
  4. [4]Ethereum Constantinople/St. Petersburg Upgrade Announcement — blog.ethereum.org · Ethereum Foundation Blog
  5. [5]EIP-2200: Structured Definitions for Net Gas Metering — eips.ethereum.org · Ethereum Improvement Proposals

이 문서가 도움이 됐나요?

이 문서 인용하기
토큰포스트 위키, “이더리움 콘스탄티노플 연기 사태”, 2026-10-04 수정, https://wiki.tokenpost.kr/w/ethereum-constantinople-delay-2019

문단 3개 · 연표 3건 · 각주 5개