시가총액: $2.1732T 0.22%
거래량(24시간): $87.1354B 0.85%
공포와 탐욕 지수:

15 - 극도의 공포

  • 시가총액: $2.1732T 0.22%
  • 거래량(24시간): $87.1354B 0.85%
  • 공포와 탐욕 지수:
  • 시가총액: $2.1732T 0.22%
암호화
주제
암호화
소식
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)로 연락주시면 즉시 삭제하도록 하겠습니다.

관련 지식

Bybit에서 BTC 거래를 위해 선형 및 역 무기한 계약 중에서 선택하는 방법은 무엇입니까?

Bybit에서 BTC 거래를 위해 선형 및 역 무기한 계약 중에서 선택하는 방법은 무엇입니까?

2026-06-06 02:54:55

계약 정산 메커니즘 1. Bybit의 선형 무기한 계약은 USDT로 정산됩니다. 즉, 모든 손익 계산, 마진 요구 사항 및 청산 기준액이 스테이블코인 단위로 표시됩니다. 2. 역영구 계약은 BTC 자체에 정산되므로 모든 거래는 거래자의 BTC 잔액에 직접적으로 영향을 ...

헌팅 중지 및 스푸핑과 같은 선물 시장 조작을 식별하고 방지하는 방법은 무엇입니까?

헌팅 중지 및 스푸핑과 같은 선물 시장 조작을 식별하고 방지하는 방법은 무엇입니까?

2026-06-07 14:20:10

Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 약 210,000블록마다 블록 보상이 절반으로 줄어드는 고정된 발행 일정을 시행합니다. 2. 이 이벤트는 대략 4년마다 발생하며 유통되는 새로운 BTC의 수를 직접적으로 줄입니다. 3. 채굴자는 2020년 ...

일일 최대 손실 한도를 설정하기 위해 Bybit에서 위험 관리 규칙을 설정하는 방법은 무엇입니까?

일일 최대 손실 한도를 설정하기 위해 Bybit에서 위험 관리 규칙을 설정하는 방법은 무엇입니까?

2026-06-04 16:40:15

계정 수준 손실 한도 구성 1. 이중 인증을 사용하여 웹 또는 모바일 애플리케이션을 통해 Bybit 계정에 로그인하세요. 2. "자산" 섹션으로 이동한 후 왼쪽 메뉴에서 "위험 관리"를 선택합니다. 3. "일일 손실 한도&q...

마진 요구 사항을 줄이기 위해 Binance에서 포트폴리오 마진 모드를 활성화하는 방법은 무엇입니까?

마진 요구 사항을 줄이기 위해 Binance에서 포트폴리오 마진 모드를 활성화하는 방법은 무엇입니까?

2026-06-05 04:59:43

Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 약 210,000블록마다 블록 보상이 절반으로 줄어드는 고정된 발행 일정을 시행합니다. 2. 이 이벤트는 대략 4년마다 발생하며 블록당 유통되는 새로운 BTC의 수를 직접적으로 줄입니다. 3. 채굴자는 20...

열린 선물 포지션을 닫지 않고 Binance에서 Bybit로 이전하는 방법은 무엇입니까?

열린 선물 포지션을 닫지 않고 Binance에서 Bybit로 이전하는 방법은 무엇입니까?

2026-06-04 03:59:47

Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 약 210,000블록마다 블록 보상이 절반으로 줄어드는 고정된 발행 일정을 시행합니다. 2. 이 이벤트는 대략 4년마다 발생하며 유통되는 새로운 BTC의 수를 직접적으로 줄입니다. 3. 채굴자는 2020년 ...

미국에서 암호화폐 선물 거래 수익에 따른 세금 영향을 어떻게 처리합니까?

미국에서 암호화폐 선물 거래 수익에 따른 세금 영향을 어떻게 처리합니까?

2026-05-29 18:19:59

Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 블록 보상을 통해 새로운 단위가 도입되는 2,100만 코인의 고정 공급 한도를 시행합니다. 2. 210,000블록마다(대략 4년마다) 블록 보상이 절반으로 줄어듭니다. 이 프로세스를 절반으로 줄입니다. 3....

Bybit에서 BTC 거래를 위해 선형 및 역 무기한 계약 중에서 선택하는 방법은 무엇입니까?

Bybit에서 BTC 거래를 위해 선형 및 역 무기한 계약 중에서 선택하는 방법은 무엇입니까?

2026-06-06 02:54:55

계약 정산 메커니즘 1. Bybit의 선형 무기한 계약은 USDT로 정산됩니다. 즉, 모든 손익 계산, 마진 요구 사항 및 청산 기준액이 스테이블코인 단위로 표시됩니다. 2. 역영구 계약은 BTC 자체에 정산되므로 모든 거래는 거래자의 BTC 잔액에 직접적으로 영향을 ...

헌팅 중지 및 스푸핑과 같은 선물 시장 조작을 식별하고 방지하는 방법은 무엇입니까?

헌팅 중지 및 스푸핑과 같은 선물 시장 조작을 식별하고 방지하는 방법은 무엇입니까?

2026-06-07 14:20:10

Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 약 210,000블록마다 블록 보상이 절반으로 줄어드는 고정된 발행 일정을 시행합니다. 2. 이 이벤트는 대략 4년마다 발생하며 유통되는 새로운 BTC의 수를 직접적으로 줄입니다. 3. 채굴자는 2020년 ...

일일 최대 손실 한도를 설정하기 위해 Bybit에서 위험 관리 규칙을 설정하는 방법은 무엇입니까?

일일 최대 손실 한도를 설정하기 위해 Bybit에서 위험 관리 규칙을 설정하는 방법은 무엇입니까?

2026-06-04 16:40:15

계정 수준 손실 한도 구성 1. 이중 인증을 사용하여 웹 또는 모바일 애플리케이션을 통해 Bybit 계정에 로그인하세요. 2. "자산" 섹션으로 이동한 후 왼쪽 메뉴에서 "위험 관리"를 선택합니다. 3. "일일 손실 한도&q...

마진 요구 사항을 줄이기 위해 Binance에서 포트폴리오 마진 모드를 활성화하는 방법은 무엇입니까?

마진 요구 사항을 줄이기 위해 Binance에서 포트폴리오 마진 모드를 활성화하는 방법은 무엇입니까?

2026-06-05 04:59:43

Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 약 210,000블록마다 블록 보상이 절반으로 줄어드는 고정된 발행 일정을 시행합니다. 2. 이 이벤트는 대략 4년마다 발생하며 블록당 유통되는 새로운 BTC의 수를 직접적으로 줄입니다. 3. 채굴자는 20...

열린 선물 포지션을 닫지 않고 Binance에서 Bybit로 이전하는 방법은 무엇입니까?

열린 선물 포지션을 닫지 않고 Binance에서 Bybit로 이전하는 방법은 무엇입니까?

2026-06-04 03:59:47

Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 약 210,000블록마다 블록 보상이 절반으로 줄어드는 고정된 발행 일정을 시행합니다. 2. 이 이벤트는 대략 4년마다 발생하며 유통되는 새로운 BTC의 수를 직접적으로 줄입니다. 3. 채굴자는 2020년 ...

미국에서 암호화폐 선물 거래 수익에 따른 세금 영향을 어떻게 처리합니까?

미국에서 암호화폐 선물 거래 수익에 따른 세금 영향을 어떻게 처리합니까?

2026-05-29 18:19:59

Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 블록 보상을 통해 새로운 단위가 도입되는 2,100만 코인의 고정 공급 한도를 시행합니다. 2. 210,000블록마다(대략 4년마다) 블록 보상이 절반으로 줄어듭니다. 이 프로세스를 절반으로 줄입니다. 3....

모든 기사 보기

User not found or password invalid

Your input is correct