EIP-5는 RETURN 및 CALL* 계열 옵코드에서 메모리 확장 관련 가스 사용 방식을 명확히 정의하고 수정하는 제안으로 최종 승인되었습니다. 이를 통해 컨트랙트가 더 효율적으로 데이터를 반환할 수 있게 되었습니다.
문제 배경
초기 EVM 명세에서는 RETURN 옵코드가 요청된 출력 크기보다 적은 데이터를 반환할 때 나머지 공간을 0으로 채우는 데 가스가 부과되었습니다. 이로 인해 불필요한 가스 낭비가 발생했습니다.
핵심 변경 내용
EIP-5는 CALL* 옵코드가 지정한 출력 버퍼 크기와 실제 반환된 데이터 크기 중 더 작은 값에 대해서만 가스를 부과하도록 수정합니다. 이를 통해 호출자가 큰 버퍼를 지정하더라도 실제 사용된 메모리에 대해서만 비용을 냅니다.
실용적 영향
이 변경으로 컨트랙트가 가변 길이의 데이터를 반환할 때 호출자가 예상 크기를 미리 알 필요가 없어졌습니다. ABI 인코딩에서 동적 타입 처리 효율성이 향상되었습니다.
표준화 기여
EIP-5는 EVM의 가스 모델을 보다 직관적이고 공정하게 만드는 초기 노력 중 하나입니다. 이후의 가스 최적화 EIP들의 방향성에 영향을 미쳤습니다.