EIP-3860
EIP-3860은 이더리움의 initcode 최대 크기 제한을 변경하고, Shapella 업그레이드의 상하이 하드 포크의 일부로 initcode의 32바이트 청크마다 가스 요금을 도입하는 것을 제안합니다. 이 제안은 initcode가 공정하게 청구되도록 하고, 비용이 initcode 길이에 비례하도록 하기 위해 만들어졌습니다.
개요
2021년 7월 16일, 위험을 최소화하기 위해 initcode를 업데이트하기 위해 EIP-3860이 생성되었습니다. initcode 크기에 대한 제한이 없으면 일부 EVM 제안에 대한 긴 논의가 발생하여 설계에 영향을 미치거나 기능이 지연되거나 취소될 수도 있습니다. 제한을 도입함으로써 이 제안은 코드 크기, 코드 오프셋 및 점프 오프셋과 같은 명시적 제한을 설정하여 EVM 엔진을 16비트에 맞게 단순화하는 것을 목표로 합니다. [1][3]
Initcode는 새 계약을 생성하는 동안 실행되는 코드이며, initcode의 현재 최대값은 EIP-170에서 24576바이트로 설정되었습니다. 그러나 EIP-3860은 initcode의 새로운 최대값을 현재 최대 크기의 두 배인 49152바이트로 늘릴 것을 제안합니다. 이 변경 사항은 최대 계약 크기를 두 배로 늘리고 계약이 더 정교한 기능을 가질 수 있도록 합니다. [1]
세부 정보
Initcode의 바이트당 가스 비용은 0.0625 가스를 추가하고, 계약에 가스를 배포하는 비용도 약간 증가합니다. 또한 initcode의 32바이트 청크마다 2의 추가 가스 비용이 있으며, 이는 계약 생성 중 jumpdest 분석 비용을 나타냅니다. [2]
EIP-3860 제안은 이더리움 블록체인에서 새 프로그램을 만드는 규칙을 설정합니다. 두 가지 중요한 규칙은 비용이 2인 INITCODE_WORD_COST와 허용되는 최대 코드 크기의 두 배인 MAX_INITCODE_SIZE입니다. 트랜잭션의 프로그램 코드가 MAX_INITCODE_SIZE보다 크면 트랜잭션은 유효하지 않습니다. 또한 프로그램 코드 비용은 트랜잭션의 총 비용에 포함되며, 트랜잭션에 비용을 충당할 충분한 가스가 없으면 유효하지 않습니다. CREATE 및 CREATE2 명령어의 경우 프로그램 코드가 실행되기 전에 차감되는 추가 가스 비용이 있습니다. INITCODE_WORD_COST에 대한 비용 상수는 geth 1.10.9에서 KECCAK256 해싱을 기준으로 하는 성능 벤치마크에 의해 결정됩니다. [2]
작성자
- Martin Holst Swende
- Paweł Bylica
- Alex Beregszaszi
- Andrei Maiboroda