Shapella 하드포크

Shanghai(실행) + Capella(합의) · 메인넷 2023-04-12

스테이킹한 ETH와 보상을 출금할 수 있게 됐습니다.

무엇이 달라졌나

검증자
스테이킹한 ETH를 처음으로 꺼낼 수 있게 됐습니다. 출금은 두 가지입니다. 32 ETH를 넘는 보상분은 따로 요청하지 않아도 주기적으로 출금 주소에 자동 입금됩니다. 검증을 그만두고 원금까지 받으려면 퇴장(exit)을 신청합니다. 출금은 일반 거래가 아니라 프로토콜이 직접 처리하므로 가스비가 들지 않습니다. 단, 출금 자격증명이 옛 방식(BLS, 0x00)인 검증자는 먼저 실행 계층 주소(0x01)로 바꾸는 메시지를 보내야 했습니다.
사용자
직접 스테이킹하지 않은 사용자에게 달라지는 화면은 없습니다. 다만 스테이킹한 ETH가 언제 풀릴지 모른다는 불확실성이 사라져 거래소나 유동 스테이킹 토큰을 거치지 않고 직접 스테이킹하는 선택이 현실적인 대안이 됐습니다. 출금이 열리면 대량 이탈이 생길 것이라는 우려도 있었지만 실제로는 출금 이후에도 스테이킹된 ETH 총량이 계속 늘었습니다.
지갑·앱 개발자
스마트 계약 개발 환경이 소폭 바뀌었습니다. 스택에 0을 올리는 전용 명령 PUSH0이 생겨 0 값을 다루는 코드가 더 적은 가스로 컴파일됩니다. 블록 생산자 주소(COINBASE)에 접근하는 비용이 내려가 블록 빌더에게 직접 수수료를 보내는 패턴이 싸졌습니다. 반대로 계약 배포에 쓰는 초기화 코드(initcode)에 크기 상한이 생기고 크기에 비례한 가스가 붙어 너무 큰 배포 거래는 거부됩니다. 이미 배포된 계약은 영향이 없고 PUSH0을 쓰려면 컴파일러의 EVM 버전을 shanghai 이상으로 맞춰야 합니다.
L2
L2 운영 자체에 바로 달라진 것은 없습니다. 다만 PUSH0을 쓰도록 컴파일한 계약은 Shanghai를 아직 반영하지 않은 L2나 다른 EVM 체인에서 배포가 실패했습니다. 여러 체인에 같은 코드를 올리는 팀은 한동안 체인별로 컴파일러의 EVM 버전을 따로 맞춰야 했고 주요 L2는 이후 자체 업그레이드로 PUSH0을 지원하게 됐습니다.

주요 EIP

← 하드포크 · 로드맵