Solidity 데이터타입

양시온·2023년 8월 27일
0
post-thumbnail
post-custom-banner

Solidity란?

: 이더리움 네트워크에서 스마트 컨트랙트를 개발하는 데 필요한 프로그래밍 언어

1. 3가지 변수 타입

1. 지역변수(local)
: 함수 안에서 선언됩니다. 블록체인에 기록되지 않습니다.

2.상태변수(state)
: 함수 밖에서 선언됩니다.
: 블록체인에 저장돼 영속성을 가지게 됩니다.
: 함수 내부 어디에서든지 사용 가능하며 가시성 지정자에 따라 변수의 접근 범위가 달라집니다.

3.전역변수(global)
: 블록체인에 관한 정보를 제공합니다.
: 블록체인 및 트랜잭션에 대한 속성을 가져올 수 있는 변수

3가지 변수 타입의 예시

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

contract Ex1 {
  // 상태변수(state): 블록체인에 기록된다.
  string public a = "Hello solidity";
  uint public b = 1

function getEx() public {
    // 지역변수(local): 블록체인에 기록되지 않는다.
    uint c = 2;
    // 전역변수(global)
    uint d = block.timestamp;
    address e = msg.sender;
  }
}

2. 데이터 타입

(1) 불리언(Boolean) 타입 : bool

  • 참과 거짓, 비교연산자와 논리연산자와 함께 사용
bool public b= false;
bool public b1 = !false; // true
bool public b2 = false || true // true
bool public b3 = false == true // false
bool public b4 = false && true // false

(2) 정수타입 : uint와 int

  • solidity는 소수점 숫자 지원 X (가격, 토큰 등 표현 위함)
  • uint(부호없는 정수형)과 int(정수형) 차이점은 음수의 포함 여부
  • 보통은 uint를 많이 씀 (음수를 사용할일이 없어서)
  • 그냥 uint를 지정하면 uint256과 같은 범위를 가진다.
// int8
// -2^7 ~ 2^7 -1 (int8 범위)
// uint8
// 0 ~ 2^8-1
int8 public it =4;
uint256 public uit = 132213;
uint8 public uit2 = 256; // 범위 초과로 에러가 난다!

(3) 바이트타입 : bytes

  • 고정크기바이트(값타입)배열과 동적크기바이트배열로 나뉨
  • 차이점은 배열 크기 지정의 유무
bytes4 public bt1 = 0x12345678; // 4비트로 지정
bytes public bt2 =  "STRING";

(4) 문자열타입 : string

string favoriteColor = 'blue';

5) 주소타입 : address

  • 계정의 주소, 20bytes로 지정됨
  • 고유아이디 또는 스마트컨트랙트 아이디로 확인가능
address public addr = 0xD4Fc541236927E2EAf8F27606bD7309C1Fc2cbee;
//20바이트(40자)

참고자료:
코드스테이트
솔리디티 깨부수기

profile
병아리개발자🐤
post-custom-banner

0개의 댓글