솔리디티(Solidity) - Storage, Memory

프동프동·2022년 5월 25일
0

솔리디티(Solidity)

목록 보기
5/20
post-thumbnail

변수를 저장할 수 있는 공간(데이터 영역)으로 두 종류가 있습니다.

  • 메모리(Memory): 프로그램이 동작하는 동안에만 임시적으로 값을 기억하고, 종료되면 값을 잃는 데이터 영역
  • 스토리지(Storage): 블록체인에 기록되어 영구적으로 값이 저장되는 데이터 영역

하드디스크(스토리지)와 RAM(메모리)에 비유할 수 있습니다.

참조형 변수를 선언할 때는 메모리에 저장할지 스토리지에 저장할 지 지정해야합니다.
(배열, 문자열, 구조체, 매핑)

상태 변수는(함수 외부에 선언된 변수)는 storage로, 함수 내에 선언된 변수는 memory로 선언합니다.

contract tempContract {
    function tempFunction() public pure{
        // 3개의 uint 데이터를 메모리에 저장하는 변수
        uint[3] memory number;
        number[0] = 13;
    }
}

참고: storage에 값을 쓰는 것은 두 개의 정수를 더하는 것보다 훨씬 비용이 많이 듭니다. 이는 DApp을 구성할 때 쓰이는 가스 비용이 증가함을 나타냅니다.

profile
좋은 개발자가 되고싶은

2개의 댓글

comment-user-thumbnail
2023년 8월 28일

지나가는 사람인데 본문의
"하드디스크(메모리)와 RAM(스토리지)에 비유할 수 있습니다." 는
-> 하드디스크(스토리지)와 RAM(메모리) 가 맞는거 같습니다.

1개의 답글