Byzantium 하드포크

메인넷 2017-10-16

영지식 증명 검증 프리컴파일과 REVERT를 넣고 블록 보상을 3 ETH로 줄였습니다.

무엇이 달라졌나

사용자
거래가 실패했을 때 남은 가스를 돌려받게 됐습니다. 이전에는 컨트랙트가 조건에 맞지 않는 거래를 멈추면 보낸 가스를 전부 잃었지만 Byzantium 이후 REVERT를 쓰는 컨트랙트에서는 실행에 쓴 만큼만 빼고 나머지를 돌려받습니다. 실패 이유도 함께 돌아와 지갑 화면에서 왜 거래가 되돌려졌는지 보여줄 수 있는 바탕이 마련됐습니다. 블록 보상이 줄어 새로 발행되는 ETH도 그만큼 적어졌습니다.
지갑·앱 개발자
컨트랙트가 실행을 중단하면서 상태를 되돌리고 남은 가스를 반환하는 REVERT 명령어가 생겼습니다. 이전에는 잘못된 명령어로 멈추는 방법밖에 없어 가스를 모두 소모했고 실패 이유를 전달할 수도 없었습니다. 이후 Solidity의 require와 revert가 이 명령어를 쓰게 됐습니다. 또 alt_bn128 타원곡선의 덧셈, 곱셈, 페어링 연산이 프리컴파일(precompile)로 들어가면서 영지식 증명(zk-SNARK)을 온체인에서 현실적인 가스 비용으로 검증할 수 있게 됐습니다.
L2
포크 당시에는 롤업이 없었지만 이때 들어간 alt_bn128 페어링 프리컴파일이 이후 영지식 증명 기반 롤업이 메인넷에서 증명을 검증할 때 쓰는 기본 연산이 됐습니다. 증명 검증을 일반 EVM 코드로 짜면 가스가 너무 많이 들었는데, 프리컴파일은 정해진 가스로 처리되기 때문입니다.
노드 운영자
난이도 폭탄(difficulty bomb)이 뒤로 미뤄져 블록 생성 간격이 계속 늘어나는 상황을 막았습니다. 채굴 보상은 블록당 5 ETH에서 3 ETH로 줄었고 엉클 블록 보상도 같은 비율로 조정됐습니다. 당시에는 지분 증명 전환 전이어서 검증자가 아닌 채굴자가 이 보상을 받았습니다. 노드 소프트웨어는 포크 블록 전에 업데이트해야 했고 그 외 운영 방식에서 달라진 것은 없습니다.

주요 EIP

← 하드포크 · 로드맵