Let's make Everything

[Solidity DataType] 본문

Solidity

[Solidity DataType]

rok92 2023. 4. 13. 23:47
728x90

솔리디티에서는 기본적으로 boolean, string, byte, Integer, address라는 변수들이 있습니다.

자바와 같은 객체지향 프로그래밍 언어를 접해보신 분들은 address라는 변수빼고는 친숙하실 겁니다.

# 1. boolean

boolean은 참(true), 거짓(false)을 나타내주는 변수 입니다. 주로 연산자와 함께 쓰이는데 연산자는 다음과 같습니다.

- !(not) => 프로그래밍에서 !는 부정을 의미합니다. 예> !true => false

- &&(and) => and연산자로 둘 다 참이어야 true를 반환하고 하나라도 false이면 false를 반환합니다. 예> true&&false => false

- ||(or) => or연산자로 둘 중 하나만 참이어도 true를 반환하고 둘 다 거짓일 때 false를 반환합니다. 예> true||false => true

- ==(equal) => 오른쪽 왼쪽이 같다는 의미입니다. 예> 2 == 2 => true

- != (not equal) => 오른쪽 왼쪽이 다르다는 의미입니다. 예> 1 != 1 => false

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

contract DataType{

    // boolean
    bool public a = false;
    // 연산자 사용
    // !
    bool public a1 = !false; //true

    //&&
    bool public a2 = true&&false; //false
    bool public a3 = true&&true; //true

    //||
    bool public a4 = true||false; //true
    bool public a5 = false||false; //false

    // ==, !=
    bool a6 = 1 == 1; //true
    bool a7 = 1 != 1; //false
}

# 2. string

string은 문자열을 저장하는 변수로 " "를 붙여서 사용해야 합니다.

솔리디티에서는 가스를 더 소비하는 string을 쓰는 것을 지양합니다. 가스는 스마트 컨트렉트에서 보안적으로 중요합니다.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

contract DataTyoe{
	string memory greet = "hi";
}

# 3. bytes

bytes변수를 지정할 때 뒤에 붙는 숫자에 따라 byte의 크기가 정해집니다. 만약 byte 크기를 알고 있다면 크기에 맞게 지정하는 것을 선호합니다.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

contract DataType{

    // byte 1 ~ 32
    bytes4 public bt1 = 0x12345678;
    bytes public bt2 = "STRING"; // 바이트안에 문자열도 쓸 수 있습니다
}

# 4. int와 uint(Integer 정수형)

기호 있고 없고의 차이는 음수의 값을 사용하는지의 여부에 따라 integer의 범위가 달라집니다.

  • int : 음의 정수를 포함한 모든 정수
    • int8 : -2^7 ~ s^7-1
    • int16 : -2^15 ~ 2^15-1
    • int32 : -2^31 ~ 2^31-1
    • int64 : -2^63 ~ 2^63-1
    • int128 : -2^127 ~ 2^127-1
  • uint : 0과 양의 정수만 표현하는 정수
    • uint8 : 0 ~ 2^8-1
    • uint16 :0 ~ 2^16-1
    • uint32 : 0 ~ 2^32-1
    • uint64 : 0 ~ 2^64-1
    • uint128 : 0 ~ 2^128-1

Integer는 연산자와도 함께 쓰이기도 합니다.

  • + 더하기 => 1+2 => 3
  • - 빼기 => 3-2 => 1
  • * 곱하기 => 5*5 => 25
  • / 나누기 몫 => 9/3 => 3
  • % 나누기 나머지 => 10%3 => 1
  • ** 지수 => 3**2 => 9
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

contract DataType{

    // +, -, *, /, %, **
    int256 public cal1 = 20+3;  // 23
    int256 public cal2 = 4-8;   // -4
    uint256 public cal3 = 8*7;  // 56
    uint256 public cal4 = 9/3;  // 3
    uint256 public cal5 = 9%4;  // 1
    uint256 public cal6 = 6**3; // 216
}

# 5. address

address는 20byte의 길이로 문자 그대로 주소를 나타내줍니다. 예를 들면 스마트 큰트랙트를 배포할 때 배포된 스마트 컨트랙트는 주소를 할당받습니다. 이와 마찬가지로 디지털 지갑의 계정마다 각자의 주소를 할당받습니다.

 

주소의 역할?

주소를 통해 디지털 코인을 전송하기도 하고 스마트 컨트랙트를 불러오기도 합니다.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

contract DataType{


    // address
    address num = 0x1aE0EA34a72D944a8C7603FfB3eC30a6669E454C;
}

참고

솔리디티 강좌 2강 data type (tistory.com)

 

솔리디티 강좌 2강 data type

solidity에는 기본적으로 boolean, string, bytes,Integer ,address 라는 변수들이 대표적으로 있습니다. 다른 언어들은 접해보신분들은, address 빼고는 친숙하실거라 생각이 듭니다. 1. boolean : true 와 false 가

dayone.tistory.com

 

'Solidity' 카테고리의 다른 글

[View와 Pure]  (0) 2023.04.27
[Solidity 접근제어자]  (0) 2023.04.15
[Function정의, 사용법?]  (0) 2023.04.15
[Ether단위와 Gas 중요성?]  (0) 2023.04.14
[Solidity란?]  (0) 2023.04.13