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로 줄었고 엉클 블록 보상도 같은 비율로 조정됐습니다. 당시에는 지분 증명 전환 전이어서 검증자가 아닌 채굴자가 이 보상을 받았습니다. 노드 소프트웨어는 포크 블록 전에 업데이트해야 했고 그 외 운영 방식에서 달라진 것은 없습니다.