시작하며
이전 글에서 간단하게 솔리디티 코드가 어떻게 작성되는지를 확인해보았고 이번 글부터 자료형부터 차근차근 나가보려한다.
문법스타일은 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
'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 |