Prototype Ghost
귀신일지
Prototype Ghost
전체 방문자
오늘
어제
  • 분류 전체보기 (29)
    • Hacking (1)
      • CTF (0)
      • Wargame (0)
      • Review (1)
    • C (12)
      • Crypto (12)
    • C++ (4)
    • Python (1)
    • Swift (1)
    • Blockchain (9)
      • Solidity (9)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • c언어
  • C++
  • ethereum
  • C
  • 리눅스
  • 비트코인
  • Bitcoin
  • openssl
  • 솔리디티
  • 복호화
  • Blockchain
  • 이더리움
  • solidity
  • 보안
  • 암호화폐
  • 블록체인
  • 정보보안
  • 접근제어
  • 프로그래밍
  • 암호화

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Prototype Ghost

귀신일지

Blockchain/Solidity

Solidity 자료형에 대해서 알아보자

2023. 5. 31. 23:01

시작하며


  이전 글에서 간단하게 솔리디티 코드가 어떻게 작성되는지를 확인해보았고 이번 글부터 자료형부터 차근차근 나가보려한다.

문법스타일은 c, c++, javascript와 비슷한데 조금 특이한 자료형들도 있어서 한번 알아보자.

 

자료형에 대해


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

contract abouType{
    //value type
    address addr; //20바이트 크기, 계정의 주소를 넣기 위해 사용
    bytes1 bytesValue; // bytes1 ~ bytes32
    uint uData; //uint8 ~ uint256 그냥 uint이면 uint256
    int iData; // int8 ~ int256 그냥 int면 int256
    bool check = true;

    //reference type
    struct structType{ //구조체
        int a;
    }
    structType [] structArr; // 배열
    string str; // 문자열
    bytes referenceBytes; //그냥 bytes라고 하면 referenceType
    mapping(address=>string) public name; // mapping(python에서 딕셔너리와 같음)
}

위에 value 타입과 reference 타입을 분리해서 자료형들을 적어놨다. 

주석에 다 적어놨지만 몇가지만 더 말하면

1. address는 지갑 주소를 담는 20바이트 크기의 자료형이다. 이 변수에 송금자나 수신자의 지갑 주소를 넣어서 사용할 수 있다.

2. bytes는 그냥 bytes라고 하면 참조 타입이지만 bytes1~bytes32로 몇바이트인지 정하면 value 타입이 된다.

3. uint와 int모두 8~256으로 정할 수 있는데, 이때 숫자는 비트이다. 즉 최대 32바이트가되며 크기를 지정하지 않고 그냥 uint라 선언하면 자동으로 uint256이 된다. 아마도 메모리 효율은 낮아질 수 있으나 크기를 크게 하는게 여러 위험을 방지할 수 있어 그런것 같다.

 

reference 타입에서 구조체, 그리고 위는 구조체 배열로 했는데 그냥 모든 타입의 배열은 reference 타입이다. 이는 너무 당연해서 아마 다들 이해할 것이다. 특이한건 mapping자료형인데 간단하게 python에서 dictionary라고 생각하면 편할 것 같다. 위에 적어놓은대로하면

key : value 쌍이 address : string 타입의 쌍이 된다.

 

추가적으로 연산자에 대한 설명은 생략하고, const 키워드를 사용하면 데이터가 상수화되듯, 솔리디티에서는 constant 키워드를 사용하면 된다. "uint constant a = 5;" 와 같은 식으로 작성하면 a는 수정불가능한 상수가 된다.

 

참고자료

https://www.yes24.com/Product/Goods/111099912

 

솔리디티 프로그래밍 완벽 가이드 - YES24

개발 경험이 없어도 쉽게 블록체인과 솔리디티를 이해할 수 있습니다!솔리디티는 스마트 컨트랙트를 구현하는 언어이며, 스마트 컨트랙트는 블록체인에서 작동하는 프로그램이다. 『솔리디티

www.yes24.com

 

728x90
반응형

'Blockchain > Solidity' 카테고리의 다른 글

Solidity : memory와 storage, 그리고 문자열 비교하기  (0) 2023.06.01
Solidity : 함수 및 Modifier  (0) 2023.06.01
Solidity : 가시성 지정자  (0) 2023.05.31
Solidity에 대해 간단한 코드로 알아보기(GPL과 MIT)  (0) 2023.05.31
간단하게 알아보는 Solidity와 Smart Contract  (0) 2023.05.31
    'Blockchain/Solidity' 카테고리의 다른 글
    • Solidity : 함수 및 Modifier
    • Solidity : 가시성 지정자
    • Solidity에 대해 간단한 코드로 알아보기(GPL과 MIT)
    • 간단하게 알아보는 Solidity와 Smart Contract
    Prototype Ghost
    Prototype Ghost

    티스토리툴바