EIP-2330는 외부 컨트랙트의 스토리지 슬롯을 직접 읽을 수 있는 EXTSLOAD 옵코드를 제안합니다. 비용이 많이 드는 외부 함수 호출 없이 다른 컨트랙트의 상태를 효율적으로 조회하는 것이 목표입니다.
제안 동기
현재 다른 컨트랙트의 상태를 읽으려면 외부 함수 호출(CALL)이 필요하며 이는 상당한 가스를 소모합니다. 특히 DeFi 프로토콜에서 여러 컨트랙트의 상태를 자주 조회하는 경우 가스 비용이 크게 증가합니다. EXTSLOAD는 이를 저렴하게 해결할 수 있습니다.
EXTSLOAD 동작
EXTSLOAD(address, slot) 형태로 특정 컨트랙트 주소의 스토리지 슬롯 값을 직접 읽습니다. SLOAD의 외부 버전으로 볼 수 있으며, 가스 비용은 SLOAD보다 다소 높습니다. 결과는 스택에 푸시됩니다.
보안 고려사항
스토리지 레이아웃이 컨트랙트의 공개 인터페이스 일부가 되는 문제가 발생합니다. 컨트랙트 업그레이드 시 스토리지 레이아웃 변경이 파괴적 영향을 미칠 수 있습니다. 이 보안 우려가 채택의 주요 장벽이 되었습니다.
침체 배경
보안 및 스토리지 레이아웃 안정성 문제에 대한 충분한 해결책이 없어 Stagnant 상태가 되었습니다. 일부 L2 체인에서 실험적으로 구현하기도 했습니다.