🔑 코인 투자 추천 링크 🔑
4. openzeppelin 사용하여 ERC20 토큰 만들기
6. web3.js 와 자바스크립트를 활용한 간단한 예제
10. 솔리디티 조건문, 반복문(if, else, for)
11. 솔리디티 암호화폐 지불(호텔룸 예약하기 프로그램)
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해봅니다.
입력한 자료형의 형태를 아래와 같이 확인할 수 있습니다.
블록체인 교육 문의는 아래 링크 참고 바랍니다.
소스코드
gist.github.com/gwmccubbin/29c2e432465a5dd39e20e8ef6ad1f9e0
댓글