Tech/EIPs/#3855
EIP 3855카테고리 · 코어유형 · 표준 트랙상태 · 최종

PUSH0 instruction

EIP-3855는 EVM에 PUSH0 명령어를 추가하여 스택에 상수 0을 더 효율적으로 푸시할 수 있도록 한 Final 상태의 Core EIP입니다. Shanghai 업그레이드에 포함되어 활성화되었습니다.

개요

기존에는 스택에 0을 푸시하려면 PUSH1 0x00 명령어를 사용해야 했으며 이는 2바이트를 사용했습니다. PUSH0는 단 1바이트로 동일한 작업을 수행하여 바이트코드 크기와 가스 비용을 줄입니다.

가스 및 크기 절감

PUSH0는 2가스만 소비하며 PUSH1 0x00의 3가스보다 효율적입니다. Solidity 컴파일러가 자주 0을 스택에 푸시하는 패턴을 사용하기 때문에 실제 컨트랙트에서 의미 있는 바이트코드 크기 감소 효과가 나타납니다.

상하이 업그레이드 포함

EIP-3855는 2023년 4월에 활성화된 Shanghai 업그레이드 패키지의 일부로 포함되었습니다. Solidity 0.8.20 이상 버전은 기본적으로 PUSH0를 활용하는 바이트코드를 생성합니다.

영향

스마트 컨트랙트의 배포 비용과 실행 비용이 소폭 감소했으며, 컴파일러 최적화의 새로운 기반이 마련되었습니다. 단순하지만 광범위하게 사용되는 패턴을 최적화한 좋은 예시로 평가받습니다.

공식 EIP 문서open_in_new