본문 바로가기

Language/Solidity

CryptoZombies ; Lesson 1-1 - 핵심내용정리

챕터 1 ; 좀비공장 만들기 개요


- 공장 내 모든 좀비의 데이터베이스 유지

- 좀비를 생성하는 함수 작성

- 좀비는 각각 랜덤하게 독특한 외모를 가짐


좀비 DNA 활용법


총 16자리 정수로 이루어져 있음 (ex. 8356281049284737 )

실제 DNA처럼 숫자의 각 부분은 좀비의 특성과 연결됨. (ex. 처음 2자리 83은 좀비의 머리와 연결 등)






챕터 2 ; 컨트랙트


- 이더리움 애플리케이션의 기본 구성 요소

- 솔리디티라는 언어로 작성

- 모든 프로젝트의 시작 지점

- 모든 변수와 함수는 어느 한 컨트랙트에 속함

- 형태

pragma solidity ^0.4.19;

contract ZombieFactory {

}

- 모든 솔리디티 코드는 "version pragma"로 시작해야 함 : 솔리디티 버전 선언 / 이후 새 컴파일러 버전이 나와도 기존 코드가 깨지는 것을 방지






챕터 3 ; 상태변수 & 정수


- 상태변수


- 컨트랙트 저장소에 영구 저장 = 이더리움 블록체인에 기록 ≒ 데이터베이스에 데이터 기록

- 부호 없는 정수 : uint

- uint = uint256

- 종류 : uint8, uint16, uint32 등 ( 더 적은 비트 선언 )

- 부호가 있는 정수는 int 자료형 사용.


- 형태

pragma solidity ^0.4.19;

contract ZombieFactory {
uint dnaDigits = 16; // 이 변수는 블록체인에 영구 저장됨. (좀비 DNA를 16자리로 결정)
}






챕터 4 ; 수학 연산


솔리디티 연산 종류


- 덧셈: x + y

- 뺄셈: x - y,

- 곱셈: x * y

- 나눗셈: x / y

- 모듈로 / 나머지: x % y (이를테면, 13 % 5는 3이다. 왜냐면 13을 5로 나누면 나머지가 3이기 때문이다)

- 지수 연산도 지원하지 (즉, "x의 y승", x^y이지): uint x = 5 ** 2;


pragma solidity ^0.4.19;

contract ZombieFactory {
uint dnaDigits = 16; // 이 변수는 블록체인에 영구 저장됨. (좀비 DNA를 16자리로 결정)
uint dnaModulus = 10 ** dnaDigits; // 좀비 DNA가 16자리 숫자가 되기 위한 또 다른 변수. 나중에 %를 이용하여 16자리로 줄일 수 있음
}





챕터 5 ; 구조체


- 원하는, 복잡한 자료형을 만들 수 있다.

- 형태

struct Person {
uint age;
string name;
}


pragma solidity ^0.4.19;

contract ZombieFactory {
uint dnaDigits = 16; // 이 변수는 블록체인에 영구 저장됨.
uint dnaModulus = 10 ** dnaDigits; // 좀비 DNA가 16자리 숫자가 되기 위한 또 다른 변수. 나중에 %를 이용하여 16자리로 줄일 수 있음

struct Zombie { // 구조체 선언
string name;
uint dna;
}
}






챕터 6 ; 배열


- 종류 : 정적배열 / 동적배열

- 정적배열 : 원하는 개수를 담을 수 있는 고정 길이의 배열 ex) uint[2] fixedArray; string[5] stringArray;

- 동적배열 : 고정된 크기가 아닌 크기가 계속 커질 수 있는 배열 ex) uint[] dynamicArray;


- 특이사항

- 구조체의 배열도 생성 가능 : 구조체를 동적 배열로 생성하면 마치 데이터베이스처럼 컨트랙트의 구조화된 데이터를 저장하는데 유리. (상태 변수는 블록체인에 영구 저장되므로)


- Public 배열

- 솔리디티에서는 해당 배열에 대하여 getter 메소드를 자동 생성함.

- 다른 컨트랙트가 이 배열을 읽을 수 있다. (쓸 수는 없음)

컨트랙트에서 공개할 데이터를 저장할 때 유리


pragma solidity ^0.4.19;

contract ZombieFactory {
uint dnaDigits = 16; // 이 변수는 블록체인에 영구 저장됨.
uint dnaModulus = 10 ** dnaDigits; // 좀비 DNA가 16자리 숫자가 되기 위한 또 다른 변수. 나중에 %를 이용하여 16자리로 줄일 수 있음

struct Zombie { // 구조체 선언
string name;
uint dna;
}

Zombie[] public zombies; // Public 구조체 배열 선언
}




챕터 7 ; 함수 선언


- 형태

- 언더바( _ )로 시작하는 변수(인자) : 전역 변수와 구별하는 관례 (의무X)

- 선언

function eatHamburgers(string _name, uint _amount) {

}

- 호출

eatHamburgers("vitalik", 100);


pragma solidity ^0.4.19;

contract ZombieFactory {
uint dnaDigits = 16; // 이 변수는 블록체인에 영구 저장됨.
uint dnaModulus = 10 ** dnaDigits; // 좀비 DNA가 16자리 숫자가 되기 위한 또 다른 변수. 나중에 %를 이용하여 16자리로 줄일 수 있음

struct Zombie { // 구조체 선언
string name;
uint dna;
}

Zombie[] public zombies; // Public 구조체 배열 선언

function createZombie(string _name, uint _dna){ // 좀비를 만드는 함수 선언
}
}



'Language > Solidity' 카테고리의 다른 글

CryptoZombies ; Lesson 1-2 - 핵심내용정리  (0) 2018.06.20