이더리움을 공부하기 위해 솔리디티를 배워야 하는 것을 깨닫고 솔리디티를 어떻게 공부할지 살펴보던 찰나에 크립토좀비(Crypto Zombie)라는 것을 알게 되었다. 이더리움 기반 DAPP 개발 시에 필요한 솔리디티에 대한 정보를 직접 좀비 게임을 구현해 보며 공부하는 무료 플랫폼이다. 이 글에서는 Lesson 1을 진행하면서 알아두어야 할 주요 개념들에 대해서 정리를 해보겠다.

<Lesson 1 – Chapter 1 을 진행하면 볼 수 있는 화면이다>

CHAPTER 2

챕터2 에서는 솔리디티의 버전 선언과 컨트랙트에 대한 개념에 대해 설명한다.

  1. Version Pragma
    모든 솔리디티 소스 코드는 “Version Pragma”로 시작해야 한다. 이렇게 해야 새로운 컴파일러가 나왔을 때 기존의 소스코드가 깨지는 것을 방지할 수 있다.
    pragma solidity ^0.4 1.9;
  2. Contract
    솔리디티 코드는 기본적으로 컨트렉트 안에 쌓여있다. 모든 변수와 함수는 컨트렉트에 쌓여 있으므로 프로젝트의 시작점이라고 말할 수 있다.
    contract Helloworld
    {
    }

CHAPTER 5

챕터 5에서는 복잡한 자료형을 구현할 때 사용되는 구조체에 대해서 배운다. 하나의 구조체가 여러가지 속성을 가져야할 때 struct 구문을 사용하여 구조체의 특성을 묶어 준다.


 

struct Zombie
{
string name;
uint dna;
}

 

CHAPTER 8

챕터 8에서는 구조체를 응용하는 것을 배우게 된다. 챕터 5에 있던 구조체 Person은 현재 아무런 정보도 없다. 이때 이미 만들어진 구조체에 배열을 활용하여 어떻게 데이터를 추가할 수 있는지에 대해 알아보자.

struct Zombie
{
string name;
uint dna;
}
Zombie[] public zombies;
function _createZombie(string _name, uint _dna)
{
zombies.push(Zombie(_name, _dna));
}

CHAPTER 9

챕터9에서는 Private/Public 함수에 대해서 배운다. 솔리디티에서는 기본적으로 모든 함수는 public으로 선언된다. 그 말은 본인 이외에 다른 사람들이 자유롭게 컨트랙트의 함수를 호출하고 코드를 실행 시킬 수 있다는 뜻이다. 이때 다른 사람들의 접근을 제한하고 싶으면 함수를 private으로 설정하면 된다. 챕터8에 있는 function _createZombie 함수를 private 함수로 바꾸어 보자.

function _createZombie(string _name, uint _dna) private
{
zombies.push(Zombie(_name, _dna));
}

CHAPTER 11

챕터 11에서는 솔리디티에서 함수 결과값을 return을 이용하여 어떻게 반환하여 주는지에 대해서 배우게 된다. 솔리디티는 다른 언어와는 다르게 함수 선언시에 어떤 형식을 리턴할 것인지 선언하여야 한다.

string greeting = “what’s up dog”;
function sayHello() public returns (string)
{
return greeting;
}

더불어 함수 제어자에 대한 개념을 배우게 된다.함수 제어자는 대표적으로 view와 pure 의 두 가지 형식이 있따. view의 경우 상태를 변화시키지 않고 값을 변경하지 않을 때 쓰인다.

function sayHello() public view returns(string){}

pure 의 경우 함수가 앱에서 어떤 데이터도 접근하지 않는 것을 의미한다. 이 함수는 앱에서 읽는 것도 하지 않지만 반환값만 전달되는 값에 따라서 바뀌게 된다. 이 경우에는 pure를 사용하며 view와 동일한 위치에 쓰인다. 이 두 개념이 헷갈릴 수 있으나 솔리디티 컴파일러 내에서 자체적으로 어떤 제어자를 쓰는 것이 좋은지 안내를 자동적으로 해주기 때문에 크게 걱정할 필요가 없다.

 


TreeNulbo

Student studying International Studies & Software Convergance

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다