-
bitcoin $76464.156879 USD
0.86% -
ethereum $2445.495804 USD
1.91% -
tether $0.999058 USD
-0.01% -
bnb $725.991560 USD
1.93% -
xrp $1.303704 USD
0.85% -
usd-coin $0.999942 USD
0.00% -
solana $100.064497 USD
3.06% -
tron $0.335357 USD
0.24% -
zcash $1358.632097 USD
14.53% -
hyperliquid $79.355311 USD
2.37% -
dogecoin $0.081165 USD
1.50% -
monero $495.294239 USD
-2.55% -
chainlink $11.205049 USD
3.83% -
unus-sed-leo $8.932502 USD
0.55% -
cardano $0.198341 USD
1.78%
스마트 계약 저장소는 어떻게 작동합니까?
Smart contract storage in Ethereum is a persistent key-value store where variables like state data are kept, with gas costs for reading and writing, and optimized through slot packing and efficient data structuring.
2025/07/29 07:35
스마트 계약 저장 메커니즘 이해
스마트 계약 저장소는 특히 이더 리움과 같은 플랫폼에서 블록 체인 기술의 기본적인 측면입니다. 스토리지는 계약이 함수 호출간에 유지되는 지속적인 데이터를 나타냅니다. 각 트랜잭션 후 임시 및 재설정 인 메모리 또는 스택과 달리 스토리지는 지속적이며 블록 체인에 무기한 상태로 유지됩니다. 상태 변수와 같은 계약으로 선언 된 각 변수는 저장소에 저장 되며이 데이터에 액세스하거나 수정하면 가스 비용이 발생합니다.
이더 리움에서 스토리지는 각 키가 32 바이트 슬롯이고 각 값도 32 바이트 인 키 가치 저장소로 구현됩니다. 이 구조는 전체 이더 리움 상태 트리의 일부인 스토리지 트리 로 알려져 있습니다. 스토리지 슬롯에 변수를 매핑하는 것은 컴파일러 (예 : 견고성)에 의해 결정 되며이 매핑을 이해하는 것은 가스 사용을 최적화하는 데 중요합니다.
변수가 스마트 계약에 저장되는 방법
개발자가 변수를 견고성으로 선언하면 컴파일러는 스토리지 슬롯에 어떻게 포장되는지를 결정합니다. 예를 들어, 여러 변수가 단일 32 바이트 슬롯에 맞는 경우 공간을 절약하고 가스 비용을 줄이기 위해 함께 포장됩니다 . 그러나이 동작은 사용 된 변수의 유형에 따라 다릅니다. uint8 , bool 또는 address 와 같은 작은 데이터 유형은 연속 선언 된 경우 단일 슬롯에 함께 저장할 수 있습니다.
대조적으로, uint256 또는 string 같은 더 큰 유형은 자체 스토리지 슬롯을 차지합니다. 동적 배열 및 매핑은 데이터가 선언 된 슬롯에 직접 저장되지 않기 때문에 더 복잡합니다. 대신, 슬롯은 기본 참조 역할을하며 실제 데이터는 해싱 함수를 사용하여 파생 된 위치에 저장됩니다. 예를 들어, 동적 배열의 길이는베이스 슬롯에 저장되며 요소는 keccak256(baseSlot) + index 에 저장됩니다.
스토리지 액세스의 가스 비용 및 효율성
스토리지에 액세스하고 수정하는 것은 이더 리움에서 가장 비싼 작업입니다. Storage (Sload)의 독서 (sstore)는 100 가스 비용이 들며 (sstore)는 훨씬 비쌉니다. 작문 비용은 값이 0에서 0이 아닌 가스 (20,000 가스), 비 0에서 0이 아닌 (5,000 가스) 또는 0이 아닌 0 (가스를 환불)하는지 여부에 따라 다릅니다. 이 가스 모델은 개발자에게 스토리지 액세스를 최소화하고 데이터 구성 방식을 최적화하도록 장려합니다.
하나의 효과적인 최적화는 여러 변수를 단일 스토리지 슬롯에 포장하는 것 입니다. 예를 들어, bool , uint8 및 uint16 하나의 슬롯으로 결합하면 sstore 작업의 수를 줄일 수 있습니다. 또 다른 최적화는 스토리지 로직이 더 복잡하고 비용이 많이 들기 때문에 필요한 경우에만 매핑 또는 배열을 사용하는 것입니다.
복잡한 데이터 구조의 스토리지 레이아웃
Mapping 및 Struct 와 같은 복잡한 데이터 구조는 스토리지가 할당되는 방법에 대한 깊은 이해가 필요합니다. 매핑에는 길이가 없으며 키는 직접 저장되지 않습니다. 대신, 매핑 m 에서 키 k 의 값은 keccak256(k ++ m_slot) 에 저장되며, 여기서 ++ 연결을 나타냅니다. 이 해싱 메커니즘은 모든 키가 고유 한 스토리지 위치에 대한지도를 보장합니다.
스트러크는 첫 번째 선언 된 변수에서 시작하여 저장에 순차적으로 저장됩니다. 구조물에 단일 슬롯에 맞는 여러 변수가 포함되어 있으면 함께 포장됩니다. 그러나 컴파일러의 규칙에 따라 정렬을 위해 변수간에 패딩이 추가 될 수 있습니다. 구조물 멤버를 읽거나 쓸 때 스토리지를 최적화하고 가스 비용을 줄이기 위해서는 구조체 레이아웃을 이해하는 것이 필수적입니다.
스토리지 데이터 검색 및 수정
스마트 계약의 스토리지에서 데이터를 검색하려면 web3.js 또는 ethers.js 와 같은 외부 도구를 사용하여 블록 체인을 쿼리 할 수 있습니다. 이 라이브러리는 getStorageAt(address, position) 와 같은 방법을 제공하여 개발자가 특정 슬롯의 저장을 검사 할 수 있도록합니다. 그러나 반환 된 데이터를 해석하려면 계약에 사용되는 스토리지 레이아웃 및 인코딩 체계에 대한 지식이 필요합니다.
스토리지 수정은 상태 변수를 업데이트하는 기능 호출을 통해 수행됩니다. 각 수정은 가스가 비용이 들기 때문에 개발자는 종종 업데이트를 배치하거나 임시 메모리 변수를 사용하여 최종 값을 저장하기 전에 최종 값을 계산합니다. 또한 이벤트 (로그)를 사용하면 전체 스토리지 트리를 쿼리하지 않고 스토리지 변경을 추적하여 오프 체인 모니터링을보다 효율적으로 만듭니다.
스마트 계약 저장의 보안 고려 사항
스토리지의 부적절한 취급은 스토리지 충돌, 무단 액세스 또는 가스 소진 공격과 같은 취약성으로 이어질 수 있습니다. 초기화되지 않은 포인터 또는 잘못된 슬롯 계산을 사용하는 계약은 의도하지 않은 데이터를 덮어 쓸 수 있습니다. 또한, 매핑 또는 배열이 적절한 액세스 제어없이 공개적으로 노출되면 외부 계약은 잠재적으로 스토리지를 조작 할 수 있습니다.
공통 공격 벡터 중 하나는 구현 계약 및 프록시 계약이 동일한 스토리지 레이아웃을 공유하는 프록시 계약의 스토리지 충돌 입니다. 레이아웃이 일치하지 않으면 업그레이드는 기존 데이터를 손상시킬 수 있습니다. 이를 완화하기 위해 개발자는 투명한 프록시 또는 UUPS (범용 업그레이드 가능 프록시 표준) 와 같은 잘 확립 된 업그레이드 패턴을 사용해야합니다.
자주 묻는 질문
Q : 다른 계약의 스토리지에 직접 액세스 할 수 있습니까? 아니요, 스마트 계약 내에서 다른 계약의 스토리지를 직접 읽을 수는 없습니다. web3.js 또는 ethers.js와 같은 외부 도구를 사용하여 스토리지 슬롯을 체인 오프 체인으로 쿼리하는 데 사용할 수 있지만 체인 액세스는 계약의 스토리지로 제한됩니다.
Q : 견고성의 스토리지와 메모리의 차이점은 무엇입니까? 스토리지는 지속적이며 트랜잭션간에 데이터를 유지하는 반면, 각 기능 호출 후에 메모리가 일시적이며 지우 웁니다. 스토리지 작업은 메모리에 비해 가스 측면에서 더 비쌉니다.
Q : 스토리지 수정 중에 가스 환불은 어떻게 작동합니까? 스토리지 슬롯이 0으로 설정되면 (즉, 청소) 가스 환불이 적용됩니다. 이를 통해 개발자는 사용되지 않은 데이터를 정리할 수 있습니다. 그러나 환불은 제한되어 있으며 초기 가스 작성 비용을 저장에 부분적으로 상쇄합니다.
Q : 스토리지 변수는 블록 체인에 암호화됩니까? 아니요, 스마트 계약에 저장된 모든 데이터는 공개적이며 블록 체인에 액세스 할 수있는 사람에게는 보입니다. 프라이버시가 필요한 경우 개발자는 암호화 메커니즘을 체인 오프 체인을 구현하거나 제로 지식 증명과 같은 개인 정보 보호 기술을 사용해야합니다.
부인 성명:info@kdj.com
제공된 정보는 거래 조언이 아닙니다. kdj.com은 이 기사에 제공된 정보를 기반으로 이루어진 투자에 대해 어떠한 책임도 지지 않습니다. 암호화폐는 변동성이 매우 높으므로 철저한 조사 후 신중하게 투자하는 것이 좋습니다!
본 웹사이트에 사용된 내용이 귀하의 저작권을 침해한다고 판단되는 경우, 즉시 당사(info@kdj.com)로 연락주시면 즉시 삭제하도록 하겠습니다.
- 일본은행(BoJ)의 금리 인상: 엔화, 비트코인, 캐리 트레이드 청산
- 2026-09-18 12:50:01
- XRP Ledger는 주요 업데이트를 통해 기본 대출 및 거래 번들링을 수용합니다.
- 2026-09-18 12:30:01
- CFTC, 패시브 암호화폐 거래 소프트웨어에 대한 브로커 등록 완화 제공, 광범위한 규제 변화 신호
- 2026-09-18 12:55:01
- 미국, 지배력 강화: 해상 결제 조사 중 이란 암호화폐 거래소 비트뱅크를 겨냥한 새로운 제재
- 2026-09-18 12:45:01
- 미국 재무부, 이란 거래소 BitBank에 10억 달러 이상의 암호화폐 흐름 제재: 뉴욕 테이크
- 2026-09-18 12:55:01
- 북한 악성 코드 및 Asia Express: 변화하는 디지털 환경 속에서 CoinEx의 퇴장
- 2026-09-18 08:30:02
관련 지식
SOL 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?
2026-09-14 00:40:03
SOL 선물 시장 데이터 액세스 1. Bybit, OKX, Bitget 등 SOL 무기한 또는 분기별 선물이 상장된 공식 거래소 플랫폼으로 이동합니다. 2. SOL/USDT 또는 SOL/USD 선물 거래 쌍 페이지를 찾아 "계약 개요" 또는 "...
XRP 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?
2026-09-15 05:00:12
실시간 XRP 선물 데이터에 접근하기 1. Binance, Bybit, OKX, Bitget 등 XRP 무기한 및 분기별 선물 계약을 상장하는 주요 파생상품 거래소를 방문하세요. 2. XRP/USDT 또는 XRP/USD 거래쌍 페이지로 이동하여 거래량 및 미결제약정 수...
DOGE 선물 거래량 및 미결제약정은 어떻게 확인하나요?
2026-09-12 08:39:38
DOGE 선물 거래량 이해 1. 선물 거래량은 특정 기간 내에 거래된 DOGE개의 선물 계약의 총 수를 의미하며 일반적으로 하루 또는 시간당 측정됩니다. 2. 높은 거래량은 종종 강한 시장 참여를 의미하며 가격 행동 맥락에 따라 잠재적인 추세 지속 또는 반전을 나타낼 ...
ETH 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?
2026-09-16 19:00:18
실시간 ETH 선물 데이터 액세스 1. Binance, Bybit 및 OKX와 같은 주요 중앙형 거래소는 ETH 무기한 및 분기별 선물 거래량과 미결제약정을 표시하는 실시간 대시보드를 제공합니다. 이러한 지표는 5~10초마다 업데이트되며 공개 시장 페이지에서 로그인 없...
BTC 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?
2026-09-12 15:19:55
BTC 선물 지표에 대한 데이터 소스 1. CoinGlass API v4는 30개 이상의 거래소에서 실시간 자금 요율, 청산 히트맵 및 세부적인 미결제약정 분석을 제공합니다. 2. 바이낸스 선물 API는 입찰 요청 깊이, 계약별 거래량 내역 및 마진 비율 스냅샷에 대한...
DOGEUSDT 무기한 계약 차트를 읽는 방법은 무엇입니까?
2026-09-11 19:19:48
DOGEUSDT 영구 차트의 가격 움직임 이해하기 1. 캔들스틱 형성은 즉각적인 시장 심리를 나타냅니다. 녹색 캔들은 매수 우위를 나타내고 빨간색 캔들은 해당 기간 동안의 매도 압력을 나타냅니다. 2. 신체 위와 아래의 심지는 가격 상승 또는 하락에 대한 거부 신호입니...
SOL 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?
2026-09-14 00:40:03
SOL 선물 시장 데이터 액세스 1. Bybit, OKX, Bitget 등 SOL 무기한 또는 분기별 선물이 상장된 공식 거래소 플랫폼으로 이동합니다. 2. SOL/USDT 또는 SOL/USD 선물 거래 쌍 페이지를 찾아 "계약 개요" 또는 "...
XRP 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?
2026-09-15 05:00:12
실시간 XRP 선물 데이터에 접근하기 1. Binance, Bybit, OKX, Bitget 등 XRP 무기한 및 분기별 선물 계약을 상장하는 주요 파생상품 거래소를 방문하세요. 2. XRP/USDT 또는 XRP/USD 거래쌍 페이지로 이동하여 거래량 및 미결제약정 수...
DOGE 선물 거래량 및 미결제약정은 어떻게 확인하나요?
2026-09-12 08:39:38
DOGE 선물 거래량 이해 1. 선물 거래량은 특정 기간 내에 거래된 DOGE개의 선물 계약의 총 수를 의미하며 일반적으로 하루 또는 시간당 측정됩니다. 2. 높은 거래량은 종종 강한 시장 참여를 의미하며 가격 행동 맥락에 따라 잠재적인 추세 지속 또는 반전을 나타낼 ...
ETH 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?
2026-09-16 19:00:18
실시간 ETH 선물 데이터 액세스 1. Binance, Bybit 및 OKX와 같은 주요 중앙형 거래소는 ETH 무기한 및 분기별 선물 거래량과 미결제약정을 표시하는 실시간 대시보드를 제공합니다. 이러한 지표는 5~10초마다 업데이트되며 공개 시장 페이지에서 로그인 없...
BTC 선물 거래량과 미결제약정을 확인하는 방법은 무엇입니까?
2026-09-12 15:19:55
BTC 선물 지표에 대한 데이터 소스 1. CoinGlass API v4는 30개 이상의 거래소에서 실시간 자금 요율, 청산 히트맵 및 세부적인 미결제약정 분석을 제공합니다. 2. 바이낸스 선물 API는 입찰 요청 깊이, 계약별 거래량 내역 및 마진 비율 스냅샷에 대한...
DOGEUSDT 무기한 계약 차트를 읽는 방법은 무엇입니까?
2026-09-11 19:19:48
DOGEUSDT 영구 차트의 가격 움직임 이해하기 1. 캔들스틱 형성은 즉각적인 시장 심리를 나타냅니다. 녹색 캔들은 매수 우위를 나타내고 빨간색 캔들은 해당 기간 동안의 매도 압력을 나타냅니다. 2. 신체 위와 아래의 심지는 가격 상승 또는 하락에 대한 거부 신호입니...
모든 기사 보기














