Constantinople 하드포크
Petersburg 포함 · 메인넷 2019-02-28
주소를 미리 정할 수 있는 CREATE2와 비트 시프트 옵코드를 넣고, 블록 보상을 2 ETH로 줄였습니다.
무엇이 달라졌나
- 사용자
- 바로 눈에 띄는 변화는 거의 없었습니다. 비트 시프트 옵코드가 들어가 일부 계약의 연산 비용이 조금 내려갔고 블록 보상이 3 ETH에서 2 ETH로 줄어 새로 발행되는 ETH 양이 줄었습니다. 이후 스마트 계약 지갑이 널리 쓰게 된 '배포 전에 주소를 미리 알 수 있는' 방식도 이 포크의 CREATE2에서 시작됐습니다.
- 지갑·앱 개발자
- 가장 많이 달라진 쪽입니다. CREATE2는 배포자 주소, 임의 값(salt), 초기화 코드로 계약 주소를 미리 정합니다. 그래서 계약을 아직 올리지 않은 상태에서도 주소를 알려 주고 나중에 배포할 수 있게 됐습니다. 비트 시프트 옵코드(SHL, SHR, SAR)는 곱셈과 나눗셈으로 흉내 내던 연산을 한 번에 처리해 가스를 아낍니다. EXTCODEHASH는 다른 계약의 코드 해시만 싸게 읽어 와 코드 전체를 복사하지 않고도 어떤 계약인지 확인할 수 있습니다. 함께 넣으려던 저장소 가스 조정안(EIP-1283)은 재진입 공격 위험이 발견되어 Petersburg에서 빠졌습니다.
- L2
- CREATE2가 제안된 이유 중 하나가 상태 채널(state channel)이었습니다. 아직 체인에 없는 계약 주소를 양쪽이 미리 믿고 쓸 수 있어 분쟁이 생길 때만 계약을 실제로 배포하는 방식이 가능해졌습니다. 당시에는 오늘날의 롤업이 없었고 이 포크가 L2에 직접 바꾼 것은 이 정도입니다.
- 노드 운영자
- 하드포크라서 모든 노드가 정해진 블록 전에 클라이언트를 업데이트해야 했습니다. 난이도 폭탄(difficulty bomb)이 12개월 연기되어 블록 시간이 점점 늘어나는 일을 막았습니다. 당시 블록을 만들던 채굴자는 보상이 블록당 3 ETH에서 2 ETH로 줄었습니다. 검증자는 아직 없던 시기라 해당 사항이 없습니다.