궁금한 주제를 찾아보세요

비트코인, 스테이블코인, 온체인 데이터처럼 주제로 검색하세요.

다시 읽을 이야기

저장한 글은 이 브라우저에만 보관됩니다.

해설블록체인 기술

ERC-1967 프록시 슬롯에서 구현·관리자 주소를 찾는 법

표준 implementation·admin·beacon storage slot을 eth_getStorageAt으로 읽고 32바이트 word에서 주소를 추출하는 검증 절차를 설명합니다.

난이도 중급주제 카테고리와 개념 밀도 기준
지정된 저장 슬롯에서 구현·관리자·비콘 주소 역할을 구분해 찾는 ERC-1967 프록시 그림
주제의 이해를 돕기 위한 개념 일러스트
먼저 읽는 핵심

ERC-1967은 proxy metadata를 세 개의 표준 고정 slots에 저장합니다.
Storage word의 하위 20바이트를 주소로 읽고 target code 존재를 확인합니다.
Beacon·admin 의미와 event는 proxy 구현·block별로 교차검증해야 합니다.

ERC-1967은 프록시(proxy)가 가리키는 구현 계약, 관리자, 비컨(beacon) 주소를 Solidity 일반 변수와 겹치기 어려운 고정 저장 슬롯에 둡니다. 구현 슬롯은 bytes32(uint256(keccak256('eip1967.proxy.implementation'))-1)이고, 관리자 슬롯과 비컨 슬롯도 각자의 라벨 해시에서 1을 뺀 값입니다. RPC로 프록시 주소의 해당 슬롯을 읽은 뒤 32바이트 값의 오른쪽 20바이트를 주소로 해석합니다. 구현 슬롯이 비어 있고 비컨 슬롯에 값이 있으면 비컨 계약의 implementation()을 따로 호출해야 하며, 슬롯 값과 코드 해시, 업그레이드 계열 이벤트를 같은 블록에서 맞춰 봐야 합니다.

표준 슬롯은 일반 변수 충돌을 피합니다

구현 슬롯 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc는 라벨 해시에서 1을 뺀 값입니다. 관리자 슬롯은 0xb531…6103, 비컨 슬롯은 0xa3f0…3d50입니다. 아무 슬롯 0이나 탐색기 라벨을 믿지 말고 규격에 적힌 상수를 그대로 검산합니다.

해시에서 나온 높은 위치는 컴파일러가 차례로 배치하는 상태 변수와 겹치지 않도록 고른 자리입니다. 그러나 어셈블리를 쓰는 악성 구현 계약은 일부러 이 슬롯에 값을 쓸 수 있습니다. 표준 위치에 있다는 사실이 업그레이드 권한의 안전성까지 보장하지는 않습니다.

ERC-1967 슬롯은 프록시의 현재 연결 상태를 읽는 표준 위치일 뿐, 그 연결을 바꿀 권한이 정당하다는 인증서는 아닙니다.

JOBCOIN 해설

그림으로 보기프로토콜 실행의 기본 구조
입력이 실행 규칙을 통과할 때 상태가 바뀌는 프로토콜 개념도
그림과 함께 짚어볼 본문 내용

그림은 이 주제의 공통 개념을 단순화한 설명입니다. 아래 항목에서 이 글의 구체적인 조건과 예외를 함께 읽어보세요.

  1. 표준 슬롯은 일반 변수 충돌을 피합니다

    구현 슬롯 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc는 라벨 해시에서 1을 뺀 값입니다.

  2. 원시 값에서 주소를 뽑아냅니다

    eth_getStorageAt에 프록시 주소, 구현 슬롯, 블록 태그를 넘기면 32바이트 헥스 값이 돌아옵니다.

  3. 비컨은 한 번 더 거쳐 조회합니다

    비컨 프록시는 구현 슬롯 대신 비컨 슬롯에 비컨 주소를 둡니다.

설명을 위한 개념도 · 실제 가격·거래 내역·통계가 아닙니다.

원시 값에서 주소를 뽑아냅니다

eth_getStorageAt에 프록시 주소, 구현 슬롯, 블록 태그를 넘기면 32바이트 헥스 값이 돌아옵니다. 주소는 20바이트이므로 앞쪽을 채운 영 값을 빼고 오른쪽 헥스 40자리를 체크섬 주소로 표시합니다. 값 전체를 주소 해석기에 넣거나 앞쪽 20바이트를 고르면 안 됩니다.

뽑아낸 주소에 대해 같은 블록 태그로 eth_getCode를 읽습니다. 코드가 0x로 나오면 슬롯이나 블록을 잘못 골랐는지, 대상이 파괴됐는지, 초기화 도중인지 조사합니다. 프록시 자체의 코드 해시와 구현 계약의 코드 해시는 따로 구분해 보관합니다.

ERC-1967 주요 slots
슬롯 의미 후속 확인
구현 delegatecall 대상 대상 코드 해시
관리자 선택적인 업그레이드 관리자 실제 권한 함수
비컨 공유 비컨 주소 implementation() 호출
빈 구현 슬롯 비컨 방식일 수 있음 비컨 슬롯 확인
변경 이벤트 업그레이드 알림 슬롯 값과 블록 대조

비컨은 한 번 더 거쳐 조회합니다

비컨 프록시는 구현 슬롯 대신 비컨 슬롯에 비컨 주소를 둡니다. 클라이언트는 비컨 주소를 읽고 그 계약의 implementation()을 호출합니다. ERC-1967은 이 결과가 호출자에 따라 달라지면 안 된다고 정하지만, 악성 계약일 가능성을 생각해 여러 호출자로 조회하고 코드도 확인합니다.

비컨 하나를 바꾸면 여러 프록시의 실행 코드가 한꺼번에 바뀔 수 있습니다. 개별 프록시 저장소만 감시하면 구현 변경을 놓치므로, 비컨의 Upgraded 이벤트와 비컨이 가리키는 구현 코드 해시를 함께 추적합니다.

  • 체인과 블록 해시를 고정합니다.
  • ERC-1967 슬롯 세 곳의 값을 읽습니다.
  • 하위 20바이트 주소와 코드 해시를 확인합니다.
  • 비컨 방식이면 implementation()을 추가로 호출합니다.
  • 이벤트와 이전 블록의 슬롯 값을 비교합니다.

이벤트와 슬롯은 서로를 보완합니다

규격은 구현·관리자·비컨 슬롯이 바뀔 때 Upgraded, AdminChanged, BeaconUpgraded 이벤트를 내보내도록 권고합니다. 이벤트는 색인하기 편하지만, 악성이거나 비표준인 프록시는 이를 빠뜨릴 수 있고 재편성(reorg)으로 사라질 수도 있습니다. 현재 상태를 판단하는 최종 근거는 목표 블록의 저장소입니다.

반대로 현재 슬롯만 읽으면 언제 누가 바꿨는지 알 수 없습니다. 과거 저장소 값과 이벤트, 업그레이드 거래의 발신자와 호출 데이터를 이어 변경 이력을 만듭니다. 탐색기에 붙은 프록시 표시만 보고 검증을 끝내지 않습니다.

프록시 유형과 권한은 바이트코드에서 확인합니다

관리자 슬롯에 값이 있다고 해서 Transparent 프록시로 자동 분류할 수는 없습니다. UUPS 프록시도 ERC-1967 구현 슬롯을 쓰며, 업그레이드 함수가 구현 계약 코드에 들어 있을 수 있습니다. Transparent 프록시에서 관리자 호출을 나누는 방식과 UUPS에서 권한을 검사하는 위치를 구분합니다.

감사에서는 슬롯, 실행 바이트코드, 업그레이드 진입 함수, 초기화 상태, 저장소 배치를 한 묶음으로 봅니다. 구현 주소를 찾아낸 것은 분석의 출발점일 뿐이며 프로토콜의 지급 능력이나 관리자를 믿어도 된다는 증거가 아닙니다.

자주 묻는 질문

구현 슬롯이 0이면 프록시가 아닌가요?

비컨 프록시일 수 있으니 비컨 슬롯과 바이트코드를 추가로 확인해야 합니다.

관리자 슬롯 주소가 실제 업그레이드 권한자인가요?

표준에서는 선택적인 관리자 정보일 뿐이고, 실제 권한은 프록시와 구현 계약 코드에서 확인해야 합니다.

이벤트만 추적하면 업그레이드를 모두 알 수 있나요?

비표준 구현은 이벤트를 생략할 수 있으므로 과거 슬롯 값과 코드 해시를 함께 비교해야 합니다.

더 깊이 읽기

본문에서 다룬 개념과 확인 절차를 다음 글에서 이어서 살펴보세요.

참고한 원문 자료

자료 확인 기준일 2026.09.27
  1. ERC-1967: Proxy Storage Slotseips.ethereum.org
  2. OpenZeppelin Contracts 5.x — Proxydocs.openzeppelin.com
작성 방식과 확인 범위
출처 수집
원문 링크 2개 제공
작성·확인
공식 기관 자료를 근거로 AI 도구를 활용해 작성했고, 운영자가 발행 전에 읽어 확인합니다.
전문가 검토
세무·법률 전문가 검토는 거치지 않았습니다.

투자·세무 판단은 전문가와 상의하세요. 제도와 거래소 안내는 바뀔 수 있으니 원문의 적용 대상과 최신 안내를 함께 확인해 주세요.

이해를 위한 정보 콘텐츠

이 글은 특정 자산의 매수·매도 또는 수익을 권유하지 않습니다. 자료의 발표 시점과 이후 변경 사항을 함께 확인해 주세요.

편집 원칙 보기 →이 기사 정정 제보 →