본문 바로가기
블록체인교육/솔리디티

8. 솔리디티 기본문법 (변수, 데이터타입, 구조체)

by Danny_Kim 2020. 11. 10.

🔑 코인 투자 추천 링크 🔑

  1. 비트코인, 알트코인 투자 노하우 모두 공개
  2. OKX 거래소 - 20% 수수료 할인
  3. 플립스터 거래소 - USDT 15% 이자
  4. 바이비트 거래소 - 공식 파트너 할인

1. 스마트 계약의 시작, 리믹스 도구 사용해보기

2. 솔리디티 개발환경 구성

3. 스마트컨트랙트 작성 후 배포하기

4. openzeppelin 사용하여 ERC20 토큰 만들기

5. Ropsten 테스트넷에 ERC20토큰 배포하기

6. web3.js 와 자바스크립트를 활용한 간단한 예제

7. 솔리디티 기초, 리믹스로 컨트랙트 작성하기

8. 솔리디티 기본문법 (변수, 데이터타입, 구조체)

9. 솔리디티 배열, 맵핑

10. 솔리디티 조건문, 반복문(if, else, for)

11. 솔리디티 암호화폐 지불(호텔룸 예약하기 프로그램)

12. 솔리디티 상속

13. 리믹스 솔리디티 6.0 버전 ERC20토큰 만들기

14. web3.js 와 자바스크립트를 활용하여 (이더잔액조회) 지갑 만들기

15. 솔리디티 컨트랙트 Web.js 활용하여 웹으로 보여주기

* 블록체인 전문가들도 놓치기 쉬운 비트코인, 이더리움의 핵심가치 강의


 

이번시간에는 변수, 데이터타입, 구조체에 대해서 살펴보겠습니다.

먼저 MyContract.sol 파일을 만듭니다.

 

그리고 아래의 예제코드를 하나씩 작성해보겠습니다.

 

1) 정수형

솔리디티에서 정수형은 2가지 형태입니다.

 - 부호 없는 정수 : 양수 값을 가질 수 있습니다.

   (uint8, uint16, uint24...uint256까지 선언이 가능합니다.)

 - 부호 있는 정수 : 양수 또는 음수 값도 가질 수 있어요.

   (int8, int16, int24..int256 까지 선언할 수 있습니다.)

 

예를들어 0에서 255사이의 값을 저장할때는 unit8이 적당합니다. 범위가 -128~127까지 사용해야 한다면 int8을 사용해야합니다.

정수형에 대해서는 기본적으로 덧셈, 뺄셈, 곱셈, 나눗셈, 지수, 부정, 후위증가(number++), 전위증가(++number)가 가능합니다.

 

2) Strings, bytes 배열

 

bytes배열은 여러개의 bytes를 담을 수 있는 동적배열입니다. 사용은 string과 유사해보이나, string은 이 bytes배열에 기초합니다.

 

위 예에서 보면,

myBytes32.push(byte(10)); 이 가능하나,

myString.push(byte(10));은 불가능합니다.

 

즉, bytes배열을 사용하면 문자열에 포함된 문자 하나하나를 읽기, 쓰기, 길이 등을 조작할 수 있으나 string배열은 불가능합니다. (물론 필요한 경우, bytes32 byteName = bytes(myString); 이런식으로 변경해서 사용할 순 있습니다.

 

 

3)구조체

구조체는 사용자 정의 자료형을 구성할 때 큰 도움이 됩니다.

 서로 다른 자료형을 사용하여 하나의 데이터 자료형을 만들 때 이 구조체가 필요합니다.

예를 들어 직원정보, 학교의 학생정보, 수강생정보 등을 저장하고자 할때 다양한 정보를 이 구조체를 사용하여 표현할 수 있습니다. 솔리디티에서는 위와 같은 형태로 선언하고 사용을 아래와 같이 합니다.

 

4) 주소(address)

주소(address)는 20바이트 자료형입니다. 

이더리움의 계정 주소를 만들기 위해서 설계되었으며, 크기는 160비트(20바이트)입니다.

주소자료형에는 계약계정, 외부소유계정주소등을 담을 수 있습니다.

 

5) 함수

마지막으로 함수입니다.

솔리디티에서 함수는 일반적으로 상태 변수(state variable)를 읽거나 쓰는 행위를 가장 빈번하게 합니다. 핵심적인 역할을 한다고 볼 수 있습니다. 

사용법은

function 이름, 파라미터... 와 같이 사용합니다.

파라미터 식별자는 public, pure등이 사용되는데 간략히 짚고 넘어가겠습니다.

 

- public (공개) : 외부에서 함수에 직접 접근할 수 있음

- internal (내부) : 현재의 계약 및 이 계약을 상속한 계약에서만 사용할 수 있고 외부에서 접근할 수 없음

- private (비공개) : 이걸 선언한 계약에서만 사용할 수 있음. 파생계약등에 사용불가. 

- external (외부) : 외부에서 접근할 수 있지만 내부에서는 접근할 수 없음.

- constant(읽기 전용) : 블록체인 상태를 수정할 수 없음. 상태변수를 읽고 반환은 할 수 있지만 변수 수정, 이벤트 호출등 불가

- view(뷰) : constant 함수의 별칭임

- pure : pure 함수는 읽고 쓰지 못함, 상태변수에 접근이 불가능함. 즉 함수가 현재 상태와 거래변수에 접근을 못하게 하려면 이 식별자를 사용

- payable(지불) : payable  키워드가 붙으면 호출자로부터 이더를 받을 수 있음, 송금자가 이더를 제공하지 않는 경우 호출은 실패함

 

 

6) 컴파일 후 Deploy해봅니다.

입력한 자료형의 형태를 아래와 같이 확인할 수 있습니다.

 

 

블록체인 교육 문의는 아래 링크 참고 바랍니다. 

https://kimsfamily.kr/414

 

블록체인 교육 커리큘럼 및 프로필

안녕하세요 제 프로필을 간략하게 정리하였습니다. 비즈니스 문의는 dannykim@kakao.com 으로 연락주시기 바랍니다. 감사합니다. 프로필) 블록체인 강의 경력) 1. 블록체인 강의 (20년~현재) 2022년  -

kimsfamily.kr

 

소스코드

gist.github.com/gwmccubbin/29c2e432465a5dd39e20e8ef6ad1f9e0

 

 

🔑 코인 투자 추천 링크 🔑

  1. 비트코인, 알트코인 투자 노하우 모두 공개
  2. OKX 거래소 - 20% 수수료 할인
  3. 플립스터 거래소 - USDT 15% 이자
  4. 바이비트 거래소 - 공식 파트너 할인

댓글