Solidity란?
:
이더리움 네트워크
에서스마트 컨트랙트
를 개발하는 데 필요한 프로그래밍 언어
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;
}
}
(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자)