카테고리 없음

솔리디티 공부 (좀비 팩토리 1단계)

seongjin08 2021. 12. 7. 15:39

https://cryptozombies.io/ko/course/

 

#1 Solidity Tutorial & Ethereum Blockchain Programming Course | CryptoZombies

CryptoZombies is The Most Popular, Interactive Solidity Tutorial That Will Help You Learn Blockchain Programming on Ethereum by Building Your Own Fun Game with Zombies — Master Blockchain Development with Web3, Infura, Metamask & Ethereum Smart Contracts

cryptozombies.io

솔리디티 공부를 위해 좀비 팩토리 만들기 

 

솔리디티 코드는 컨트랙트 에 쌓여있고 컨트랙트는 이더리움 어플리케이션의

기본 구성 요소 이다.

먼저 솔리디티의 버젼을 설정해 주어야 한다.

솔리디티는 지금 업데이트가 많이 되는 언어기 때문에 

이 버젼에서 되는 코드가 다른 버젼에서 는 안되는 상황이 발생하기 때문에 버젼을 꼭 적어주자!

먼저 컨트랙트를 선언해주자 이 안에 코드 들을 적어 줄 것이다.

상태 변수를 설정해 보자.

상태변수는 컨트랙트 저장소에 영구적으로 저장이 된다.

uint는 음수 가 아니여야 한다.

솔리디티의 수학연산은 다른언어의 연산과 동일하다.

좀비 DNA가 16 자리가 되도록 하기위해 변수에 10^16 을 담아놔 % 를 이용하여

16자리 보다 큰 수를 16자리 숫자로 줄일수 있다.

좀 더 복잡한 자료형이 필요할 때 구조체를 쓰면 된다.

좀비를 다양한 특성을 가지게 할 것이니 좀비 구조체를 만들어 보자.

배열 배열은 정적 배열과 동정 배열이 있는데 배열안에 숫자를 넣으면 

그 숫자많큼 담을 수있는 정적 배열이 되고

배열안이 비어있으면 동적배열로 사용 가능하다.

배열에 public으로 선언하면 다른 컨트랙트에서도 읽을수 있게 되지만 쓸수는 없다.

컨트랙트의 공개 데이터를 저장 할때 이용하자.

Zombie 라는 구조체에 pubic 배열로 zombies 라는 배열을 만들어 보자.

 

함수 선언하기 함수를 선언할때 받을 인자값에 데이터 타입을 넣어주어야 하고 

인가값은 _를 붙여서 전역변수와 헷갈리지 않게 하자.

의무는 아니지만 관례를 따르자.

함수을 선언하고 인자값에 타입을 주어 함수를 만들어 보자!

 

구조체와 배열을 사용해 보자 원하는 배열에 추가하기 위해서는 push 함수를 쓰자

push는 배열 마지막에 추가해주는 구문이다.

새로운 좀비를 만들기위해 createZombie 함수에 새로운 좀비 정보를 인자값으로 받고

zombies 배열에 추가하는 구문을 만들어보자!

함수의 private 를 선언해 주지 않으며 public 함수가 된다.

public 함수는 누구나 호출할수 있게 되기 떄문에 보안에 취약해진다 그럼으로 

공개할 함수만 public으로 이용하고 그이외에 함수는 private를 선언해 주자!

private를 선언해 줄 경우 함수명 앞에 _ 를 붙여주자!

 

함수를 선언할때 retuerns 의 데이터 형태도 설정해 주어야 한다.

함수에서 데이터를 보기만 하고 변경하지 않을경우 view 를 넣어 준다.

함수가 앱에서 어떤 데이터도 접근하지 않을 경우 pure 를 사용하자!

 

이더리움 SHA3 버전중 keccak256 해시함수가 있다.

입력 스트림을 랜덤 256비트 16진수로 매핑한다.

형 반환은 원하는 형 함수 안에 넣어주어 사용하자!

 

지금 까지 만든 함수를 합쳐 좀비를 만드는 함수를 만들자.

 

이벤트를 만들어 주자 이벤트는 어떤 액션이 일어났을때 이벤트를 발생시켜 알린다.

 

이더리움은 web3.js 라는 자바스크립트 라이브러리를 가지고 있다.

다음 챕터에서는 web3에 대해서 배워보자.