EIP-7는 EVM에 DELEGATECALL 옵코드를 도입한 제안으로, 스마트 컨트랙트 개발에 혁명적인 변화를 가져왔습니다. 호출된 컨트랙트의 코드를 호출자의 컨텍스트에서 실행할 수 있게 하여 라이브러리 패턴을 가능하게 했습니다.
도입 배경
CALL 옵코드는 별도의 컨텍스트에서 코드를 실행하므로 msg.sender와 storage가 호출된 컨트랙트 기준으로 바뀝니다. 이를 해결하기 위해 호출자의 storage와 msg.sender를 유지하면서 외부 코드를 실행하는 DELEGATECALL이 제안되었습니다.
기술적 동작
DELEGATECALL은 CALLCODE와 유사하지만 msg.sender와 msg.value도 호출자의 값을 그대로 유지합니다. 이를 통해 라이브러리 컨트랙트의 코드를 자신의 storage에 적용하는 것이 안전하고 직관적으로 가능해졌습니다.
프록시 패턴의 기반
DELEGATECALL은 현대 이더리움 개발의 핵심인 프록시 패턴(업그레이드 가능한 컨트랙트)의 기술적 기반이 됩니다. EIP-1967, EIP-1822, OpenZeppelin의 TransparentProxy 등이 모두 이 옵코드에 의존합니다.
보안 고려 사항
DELEGATECALL은 강력한 만큼 잘못 사용하면 심각한 보안 취약점을 초래할 수 있습니다. storage 레이아웃 충돌, 악의적 라이브러리 주입 등이 대표적인 위험 사례입니다.
역사적 중요성
Homestead 하드포크와 함께 도입된 DELEGATECALL은 이더리움 스마트 컨트랙트 생태계에서 가장 많이 활용되는 옵코드 중 하나입니다. 이를 통해 재사용 가능한 라이브러리와 업그레이드 가능한 컨트랙트 아키텍처가 실현되었습니다.