상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 솔리디티에서 'storage', 'memory', 'calldata'의 차이는 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
<a href='https://sangseek.com/sangseeks/솔리디티/ko'>솔리디티</a>(<a href='https://sangseek.com/sangseeks/Solidity/ko'>Solidity</a>)에서 `storage`, `memory`, `calldata`는 데이터가 저장되는 위치와 그 특성에 따라 구분되는 세 가지 주요 데이터 위치입니다. 이들은 각각의 용도와 성능 특성이 다르기 때문에, 스마트 계약을 작성할 때 적절한 데이터 위치를 선택하는 것이 중요합니다. 아래에서 각 데이터 위치의 특징과 차이점을 자세히 설명하겠습니다. 1. Storage - 정의 : `storage`는 스마트 계약의 상태 변수를 저장하는 영구적인 저장소입니다. 블록체인에 저장되며, 계약이 배포된 후에도 데이터가 유지됩니다. - 특징 : - 영구성 : `storage`에 저장된 데이터는 블록체인에 영구적으로 기록되며, 계약이 삭제되지 않는 한 데이터는 계속 존재합니다. - 비용 : `storage`에 데이터를 저장하거나 수정할 때는 <a href='https://sangseek.com/sangseeks/가스 비용/ko'>가스 비용</a>이 발생합니다. 이는 블록체인에 데이터를 추가하는 것이기 때문에 비용이 많이 듭니다. - <a href='https://sangseek.com/sangseeks/가변/ko'>가변</a>성 : `storage`에 저장된 데이터는 언제든지 수정할 수 있습니다. - 사용 예 : 계약의 상태를 유지해야 하는 변수들, 예를 들어 사용자 잔액, 계약의 소유자 주소 등이 `storage`에 저장됩니다. 2. Memory - 정의 : `memory`는 <a href='https://sangseek.com/sangseeks/임시/ko'>임시</a> 데이터 저장소로, 함수 호출 중에만 존재하며, 함수가 종료되면 데이터가 사라집니다. - 특징 : - 일시성 : `memory`에 저장된 데이터는 함수 실행이 끝나면 사라지므로, 영구적인 저장소가 필요 없는 경우에 사용됩니다. - 비용 : `memory`에 데이터를 저장하는 것은 `storage`보다 가스 비용이 적게 듭니다. 그러나 여전히 비용이 발생하므로, 대량의 데이터를 처리할 때는 주의가 필요합니다. - 가변성 : `memory`에 저장된 데이터는 함수 내에서 자유롭게 수정할 수 있습니다. - 사용 예 : 함수의 <a href='https://sangseek.com/sangseeks/매개변수/ko'>매개변수</a>나 반환값, 또는 중간 계산 결과를 저장할 때 `memory`를 사용합니다. 3. Calldata - 정의 : `calldata`는 외부 호출에서 전달된 데이터의 읽기 전용 저장소입니다. 주로 함수의 매개변수로 사용됩니다. - 특징 : - 읽기 전용 : `calldata`에 저장된 데이터는 읽기 전용이며, 수정할 수 없습니다. 이는 데이터의 무결성을 보장하는 데 도움이 됩니다. - 비용 : `calldata`는 `memory`보다 가스 비용이 적게 들며, 외부 호출에서 전달된 데이터를 효율적으로 처리할 수 있습니다. - 영속성 : `calldata`는 함수 호출이 끝나면 사라지며, 영구적으로 저장되지 않습니다. - 사용 예 : 외부에서 호출된 함수의 매개변수로 전달된 배열이나 <a href='https://sangseek.com/sangseeks/구조체/ko'>구조체</a>를 `calldata`로 정의할 수 있습니다. 예를 들어, 대량의 데이터를 함수에 전달할 때 `calldata`를 사용하면 가스 비용을 절감할 수 있습니다. 요약 - Storage : 영구적이고 수정 가능한 데이터 저장소. 가스 비용이 비쌈. - Memory : 임시적이고 수정 가능한 데이터 저장소. 함수 호출 중에만 존재하며, 가스 비용이 상대적으로 낮음. - Calldata : 읽기 전용 데이터 저장소. 외부 호출에서 전달된 데이터에 사용되며, 가스 비용이 가장 낮음. 이러한 데이터 위치의 차이를 이해하고 적절히 활용하는 것은 스마트 계약의 성능과 비용 효율성을 높이는 데 매우 중요합니다. 각 데이터 위치의 특성을 고려하여, 필요한 경우에 맞는 데이터 위치를 선택하는 것이 스마트 계약 개발의 핵심입니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기