EIP-211은 서브 호출의 반환 데이터 크기를 조회하는 RETURNDATASIZE와 반환 데이터를 복사하는 RETURNDATACOPY 두 가지 새로운 EVM 오피코드를 도입했습니다. Byzantium 하드포크에서 Final 상태로 활성화되었습니다.
도입 배경
이전에는 외부 컨트랙트 호출의 반환 데이터를 다루기 위해 호출 전에 반환 데이터 크기를 미리 알고 있어야 했습니다. 동적 크기의 반환값을 처리하는 것이 매우 어렵고 비효율적이었습니다.
새로운 오피코드
RETURNDATASIZE(0x3D)는 가장 최근 서브 호출의 반환 데이터 길이를 바이트 단위로 스택에 올려놓습니다. RETURNDATACOPY(0x3E)는 반환 버퍼에서 메모리로 데이터를 복사하며, 범위를 벗어난 접근 시 예외를 발생시킵니다.
실용적 효과
동적 크기 반환 데이터를 안전하게 처리하는 것이 가능해졌으며, ABI 인코딩을 통한 복잡한 반환 타입도 지원하기 쉬워졌습니다. 이는 Solidity 컴파일러의 코드 생성 품질 개선에도 크게 기여했습니다.
활성화
Byzantium 하드포크(블록 4,370,000)에서 EIP-196, EIP-197, EIP-214 등과 함께 활성화되었습니다. 현재 모든 이더리움 노드가 이 오피코드를 지원합니다.