[몰라도 해보는 cryptoZombie] Lesson3. 고급 솔리디티 개념 – 2

image.png

https://cryptozombies.io/ko/course

챕터 4: Gas

image.png

가스는 일종의 수수료다. 함수나 컨트랙트가 작동하기 위해서 지불해야되는 요금정도로 생각하면 된다. 크립토좀비에서는 고의적인 반복문을 통해 네트워크를 방해하거나 자원을 함부로 못쓰게하기 위해서 사용하는 개념이라고 한다. 하지만 이더리움 플랫폼 상에서 가스의 존재는 엄청 중요하다. 이더리움과 가스는 별개의 개념이 아니다. Dapp을 돌리기 위해서는 이더리움이 필요하고, Dapp이 동작하면서 이더리움이 조금씩 갈려나간다. 이때 사라지는 부분이 가스라고 부른다. 가스는 다시 새로운 블록을 만들어내는 채굴자에게 보상으로 지급된다. 네트워크를 이용하려면 돈을 내라. 네트워크를 유지시키는데 도움을 주면 돈을 주겠다. 이 간단한 논리를 현실로 만든 것이 가스이다.
그래서 이 가스의 존재는 프로그래밍 스타일에도 변화를 주게 된다. Dapp개발자에게 최대한 자원소모가 적은 방식으로 코드를 짜게끔 한다. 변수를 선언할 때 안에 들어가는 내용에 맞춰 데이터타입을 선언하도록 하기도하고(ex. uint8, uint16 등), 반복문을 통해서 자료를 찾는 검색을 하는 경우를 막기 위해 mapping을 이용하는걸 장려한다. (반복문이 돌때마다 사용자의 이더리움이 사라진다고 생각하면 된다.) storage를 이용할 것인지 memory를 이용할 것인지도 중요한 이슈가 된다.

struct Zombie {
    string name;
    uint dna;
    uint32 level;
    uint32 readyTime;
}

그래서 이유로 이번 챕터에서는 구조체 내에 위와 같이 uint32로 변수를 선언해 본다.

챕터 5: 시간 단위

image.png

갑자기 맥풀리게 시간 단위에 대한 설명이다. 좀비에 쿨타임을 부여하려고 설명을 위해 들어간 부분인데 별 내용이 아니다. 한 번 읽어보고 끄덕거리고 넘어가면 된다. Solidity로 코드를 짜다가 시간 단위를 써야 할 필요가 있다면 그때 검색해보면 될 것 같다. 내용이 간단하므로 코드도 생략.

챕터 6: 좀비 재사용 대기 시간

image.png

새로운 개념은 나오지 않는다. 쿨타임을 구현해 보는 챕터. struct도 parameter로 넣을 수 있다가핵심 내용인 듯. 앞서 배운 내용을 복습하며 코드를 작성해보기 좋은 챕터인듯.

function _triggerCooldown(Zombie storage _zombie) internal { 
    _zombie.readyTime = uint32(now + cooldownTime);
}// 1. `_triggerCooldown` 함수를 여기에 정의하게

function _isReady(Zombie storage _zombie) internal view returns(bool) {
     return (_zombie.readyTime <= now);
}// 2. `_isReady` 함수를 여기에 정의하게

이렇게 함수 두개를 정의해주면 클리어.


lesson3니까 더 재미있겠지!!! 라고 생각했지만.. 살짝 연습하고 넘어가는 챕터가 많았던 것 같다. 그래도 처음 볼때는 이런 부분이 있어서 개인적으로 복습이 되었던것 같은 기억이...
참고문헌 https://d2fault.github.io/2018/03/19/20180319-about-solidity-1/

코어 이더리움 프로그래밍 – 박재현, 오재훈, 박혜영

H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now
Logo
Center