Solidity 솔리디티 강좌 7강 : 4개의 저장영역과 String

flowing1ife·2023년 7월 7일
0

[ Solidity 깨부수기 ]

목록 보기
7/29
post-thumbnail

Solidity 솔리디티 강좌 7강 : 4개의 저장영역과 String
이번엔 solidity의 저장영역과 string의 개념에 대해 알아보도록 하자.


저장영역과 String

📌 Solidity

solidity 내의 저장 영역에는 storage, memory, call data, stack로 총 4가지가 있다.

storage

  • 대부분의 변수 함수들이 저장되며 영속적인 의미를 지님
  • 블록에 들어가기 때문에 모든 노드들이 그 블록을 다운받아야 하므로 가스 비용이 비쌈

memory

  • 함수 파라미터, 리턴 값, 레퍼런스 타입이 주로 저장
  • 영속성이 없고 함수 내에서만 유효하기에 가스비용이 storage보다 쌈

call data

  • 주로 external function의 파라미터에서 사용됨

stack

  • EVM에서 stack data를 관리할 때 쓰는 영역
  • 1024MB로 제한적

📍string의 경우 data type이 아니라 reference 타입에 들어가기 때문에 memory라는 키워드를 붙여야 한다. 그러나 기본 data type의 경우 memory가 디폴트로 되어 있기 때문에 붙여줄 필요가 없다.

// SPDX-License-Identifier: GPL-3.0
pragma solidity >= 0.7.0 < 0.9.0;

contract lec7{
   //function - string
   function get_string(string memory _str)public pure returns(string memory){
       return _str;
   }

   function get_uint(uint256  _ui)public pure returns(uint256){
       return _ui;
   }
}

👉 결과

이처럼 기본 data type에는 memory 키워드가 붙지 않고, string에는 memory 키워드가 붙는다. pure를 사용한 이유는 함수 내의 변수만 사용하기 때문이다.


출처 및 참고 자료

profile
👩🏻‍💻 Backend Engineer, Contract Developer

0개의 댓글