Dencun 하드포크
Cancun(실행) + Deneb(합의) · 메인넷 2024-03-13
롤업이 데이터를 싸게 올리는 블롭을 도입해 L2 수수료를 크게 낮췄습니다.
무엇이 달라졌나
- 사용자
- 이더리움 메인넷에서 직접 거래하는 비용이나 방식은 달라지지 않았습니다. 체감되는 변화는 L2에 있었습니다. 롤업이 메인넷에 내던 데이터 비용이 블롭(blob) 도입으로 줄었고 그 절감분이 L2 거래 수수료에 반영돼 L2에서 보내는 거래가 훨씬 싸졌습니다. 지갑이나 앱을 바꿀 필요는 없었고 쓰던 L2에서 그대로 거래하면 됐습니다.
- L2
- 가장 크게 달라진 대상입니다. 롤업이 메인넷에 올리는 거래 데이터를 기존 calldata 대신 블롭(blob)에 담을 수 있게 됐습니다. 블롭은 일반 거래와 별도 공간에 담기고 수수료도 따로 정해져, 메인넷이 혼잡해도 데이터 비용이 같이 치솟지 않습니다. 블롭은 영구 보존되지 않고 일정 기간이 지나면 노드에서 지워지므로, L2는 그 안에 데이터를 가져가 직접 보관해야 합니다. 주요 롤업이 포크 직후 블롭으로 옮기면서 L2 수수료가 크게 내려갔습니다.
- 지갑·앱 개발자
- 임시 저장소(transient storage) 옵코드가 생겨 재진입 방지 잠금처럼 한 트랜잭션 안에서만 쓰는 값을 영구 저장소보다 훨씬 싸게 다룰 수 있게 됐습니다. 메모리 복사 전용 MCOPY 옵코드도 추가됐습니다. SELFDESTRUCT는 계약이 만들어진 그 트랜잭션 안에서만 코드와 저장소를 지우고 그 외에는 잔액만 보내도록 바뀌었습니다. SELFDESTRUCT 뒤 CREATE2로 같은 주소에 다시 배포하던 업그레이드 방식은 쓸 수 없게 돼 프록시 패턴으로 옮겨야 했습니다. 잔액 회수 용도로만 쓰던 앱은 그대로 작동합니다. 비콘 블록 루트를 EVM에서 읽을 수 있게 돼 스테이킹 컨트랙트가 오라클 없이 합의층 정보를 확인할 수 있게 됐습니다.
- 노드 운영자
- 실행 클라이언트와 합의 클라이언트를 모두 포크 전에 업데이트해야 했습니다. 포크 뒤에는 블롭 데이터를 받아 검증하고 일정 기간(약 18일) 보관하므로 대역폭과 디스크 사용량이 늘었습니다. 다만 블롭은 기간이 지나면 자동으로 지워지므로 상태처럼 계속 쌓이지는 않습니다. SELFDESTRUCT 기능 축소로 대규모 상태 삭제가 거의 사라져, 이후 버클 트리 전환처럼 상태 구조를 바꾸는 작업의 부담이 줄었습니다.