시가총액: $2.6331T 3.86%
거래량(24시간): $151.0087B -10.31%
공포와 탐욕 지수:

17 - 극도의 공포

  • 시가총액: $2.6331T 3.86%
  • 거래량(24시간): $151.0087B -10.31%
  • 공포와 탐욕 지수:
  • 시가총액: $2.6331T 3.86%
암호화
주제
암호화
소식
cryptostopics
비디오
최고 암호화

언어 선택

언어 선택

통화 선택

암호화
주제
암호화
소식
cryptostopics
비디오

스마트 계약 저장소는 어떻게 작동합니까?

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 , uint8uint16 하나의 슬롯으로 결합하면 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)로 연락주시면 즉시 삭제하도록 하겠습니다.

관련 지식

암호화폐 계약 포지션을 수동으로 또는 자동으로 마감하는 방법은 무엇입니까?

암호화폐 계약 포지션을 수동으로 또는 자동으로 마감하는 방법은 무엇입니까?

2026-02-01 23:19:36

수동 포지션 폐쇄 프로세스 1. 계약이 활성화된 거래 플랫폼에 로그인하고 '포지션' 또는 '미결 주문' 탭으로 이동합니다. 2. 기호, 규모, 진입 가격, 레버리지 수준을 확인하여 특정 계약 포지션을 찾습니다. 3. 포지션 옆에 있는 ...

Bitcoin ETF가 암호화폐 계약에 미치는 영향을 어떻게 이해하나요?

Bitcoin ETF가 암호화폐 계약에 미치는 영향을 어떻게 이해하나요?

2026-02-01 16:19:51

Bitcoin ETF와 시장 유동성 1. Bitcoin ETF는 기관 자본을 현물 시장에 직접 도입하여 주문장 깊이를 늘리고 대규모 거래의 슬리피지를 줄입니다. 2. 차익거래자가 선물과 무기한 스왑을 사용하여 ETF 포지션을 헤지함에 따라 향상된 유동성이 파생상품 시장...

현재 유동성 급증 중에 DeFi 계약을 거래하는 방법은 무엇입니까?

현재 유동성 급증 중에 DeFi 계약을 거래하는 방법은 무엇입니까?

2026-02-01 07:00:25

DeFi 프로토콜의 유동성 역학 이해 1. DeFi의 유동성 급증은 종종 이자 농사 인센티브, 토큰 배출 및 크로스체인 연결 활동으로 인한 조정된 자본 유입에 의해 촉발됩니다. 2. 대규모 유동성 풀이 증가된 주문 흐름을 흡수하여 단기 차익거래 창구가 생성되면 자동화된...

암호화폐 계약 전문가를 복사하기 위해 소셜 트레이딩을 사용하는 방법은 무엇입니까?

암호화폐 계약 전문가를 복사하기 위해 소셜 트레이딩을 사용하는 방법은 무엇입니까?

2026-02-02 07:40:22

소셜 트레이딩 플랫폼 이해 1. 소셜 트레이딩 플랫폼은 실시간 시장 데이터와 사용자 상호 작용 기능을 통합하여 트레이더가 다른 사람이 오픈한 포지션을 관찰, 팔로우 및 복제할 수 있도록 합니다. 2. 이러한 플랫폼에는 일반적으로 계정 확인, 스테이블코인 또는 기본 토큰...

BNB 계약을 거래하고 거래 수수료를 절약하는 방법은 무엇입니까?

BNB 계약을 거래하고 거래 수수료를 절약하는 방법은 무엇입니까?

2026-02-03 00:39:37

BNB 계약 거래 메커니즘 이해 1. BNB 계약은 바이낸스 선물에서 거래되는 파생 상품으로, 사용자는 기초 자산을 보유하지 않고도 BNB/USDT에 대한 레버리지 노출을 얻을 수 있습니다. 2. 이 계약은 USDT로 결제되며 무기한 및 분기별 만료 형식을 모두 지원하...

2026년에 일관된 암호화폐 계약 거래 계획을 세우는 방법은 무엇입니까?

2026년에 일관된 암호화폐 계약 거래 계획을 세우는 방법은 무엇입니까?

2026-02-02 22:59:54

계약 사양 정의 1. 기본 자산을 선택하려면 Binance Futures, Bybit 및 OKX와 같은 주요 파생 상품 장소의 유동성 깊이, 역사적 변동성 및 교환 지원을 평가해야 합니다. 2. 계약 규모는 포지션 규모 논리와 일치해야 합니다. 표준화된 BTC 계약은 ...

암호화폐 계약 포지션을 수동으로 또는 자동으로 마감하는 방법은 무엇입니까?

암호화폐 계약 포지션을 수동으로 또는 자동으로 마감하는 방법은 무엇입니까?

2026-02-01 23:19:36

수동 포지션 폐쇄 프로세스 1. 계약이 활성화된 거래 플랫폼에 로그인하고 '포지션' 또는 '미결 주문' 탭으로 이동합니다. 2. 기호, 규모, 진입 가격, 레버리지 수준을 확인하여 특정 계약 포지션을 찾습니다. 3. 포지션 옆에 있는 ...

Bitcoin ETF가 암호화폐 계약에 미치는 영향을 어떻게 이해하나요?

Bitcoin ETF가 암호화폐 계약에 미치는 영향을 어떻게 이해하나요?

2026-02-01 16:19:51

Bitcoin ETF와 시장 유동성 1. Bitcoin ETF는 기관 자본을 현물 시장에 직접 도입하여 주문장 깊이를 늘리고 대규모 거래의 슬리피지를 줄입니다. 2. 차익거래자가 선물과 무기한 스왑을 사용하여 ETF 포지션을 헤지함에 따라 향상된 유동성이 파생상품 시장...

현재 유동성 급증 중에 DeFi 계약을 거래하는 방법은 무엇입니까?

현재 유동성 급증 중에 DeFi 계약을 거래하는 방법은 무엇입니까?

2026-02-01 07:00:25

DeFi 프로토콜의 유동성 역학 이해 1. DeFi의 유동성 급증은 종종 이자 농사 인센티브, 토큰 배출 및 크로스체인 연결 활동으로 인한 조정된 자본 유입에 의해 촉발됩니다. 2. 대규모 유동성 풀이 증가된 주문 흐름을 흡수하여 단기 차익거래 창구가 생성되면 자동화된...

암호화폐 계약 전문가를 복사하기 위해 소셜 트레이딩을 사용하는 방법은 무엇입니까?

암호화폐 계약 전문가를 복사하기 위해 소셜 트레이딩을 사용하는 방법은 무엇입니까?

2026-02-02 07:40:22

소셜 트레이딩 플랫폼 이해 1. 소셜 트레이딩 플랫폼은 실시간 시장 데이터와 사용자 상호 작용 기능을 통합하여 트레이더가 다른 사람이 오픈한 포지션을 관찰, 팔로우 및 복제할 수 있도록 합니다. 2. 이러한 플랫폼에는 일반적으로 계정 확인, 스테이블코인 또는 기본 토큰...

BNB 계약을 거래하고 거래 수수료를 절약하는 방법은 무엇입니까?

BNB 계약을 거래하고 거래 수수료를 절약하는 방법은 무엇입니까?

2026-02-03 00:39:37

BNB 계약 거래 메커니즘 이해 1. BNB 계약은 바이낸스 선물에서 거래되는 파생 상품으로, 사용자는 기초 자산을 보유하지 않고도 BNB/USDT에 대한 레버리지 노출을 얻을 수 있습니다. 2. 이 계약은 USDT로 결제되며 무기한 및 분기별 만료 형식을 모두 지원하...

2026년에 일관된 암호화폐 계약 거래 계획을 세우는 방법은 무엇입니까?

2026년에 일관된 암호화폐 계약 거래 계획을 세우는 방법은 무엇입니까?

2026-02-02 22:59:54

계약 사양 정의 1. 기본 자산을 선택하려면 Binance Futures, Bybit 및 OKX와 같은 주요 파생 상품 장소의 유동성 깊이, 역사적 변동성 및 교환 지원을 평가해야 합니다. 2. 계약 규모는 포지션 규모 논리와 일치해야 합니다. 표준화된 BTC 계약은 ...

모든 기사 보기

User not found or password invalid

Your input is correct