2021년 5월 3일부터 42Seoul Cadet으로써의 본과정이 시작되었고 어떤 동아리들이 개설되어 있는지 찾아보다가 블록체인 동아리가 있어서 본과정 이틀쨰인 5월 4일에 바로 가입을 했다. 평소에 블록체인이라는 기술에 관심이 계속 있었지만 진입장벽도 높고 혼자 공부하기에는 부담이 있어서 쉽게 시작하지 못하고 있었는데 마침 동아리가 있어서 고민할 것도 없이 바로 들어갔다. 실질적으로 활동하고 있는 동아리원은 heom님과 minsikim2님, 2분이 계셨고 동아리 회장인 heom님과 슬랙콜이나 디스코드를 통해 이런저런 이야기를 나누었다. 동아리 활동은 매주 평일 밤 11시 ~ 12시까지 각자 스터디를 하고 공부한 내용을 블로그에 정리해서 공유하고 주말에 1번 디스코드를 통해 그 주에 어떤 내용을 공부했는지 한명씩 설명하는 정기적인 미팅을 갖는식으로 이루어졌다.
가입한 날부터 스터디는 참여했지만 사실 어떤 것부터 공부를 시작해야할지 감이 안잡혀서 이번주는 그동안 heom님이 꾸준히 올리신 블로그를 읽어보면서 heom님은 어떤 식으로 공부하셨는지를 살펴보았다. 블록체인에 대해서도 이것저것 찾아보았고 그래서 내린 결론은 일단 이더리움부터 공부해보자는 것이었다.
사실 블록체인에 관심을 갖게된 계기는 2017년 1월에 처음 가상화폐인 비트코인에 투자를 하면서부터였다. 그리고 지금 가장 관심있게 보는 코인은 올해 3월에 메인넷이 런칭된 chia라는 코인이고 직접 채굴(Farming)할 계획도 세우고 있다. chia coin에 대한 내용은 아래 블로그에 정리해두었다.
https://velog.io/@dogfootbirdfoot/%EC%B9%98%EC%95%84%EC%BD%94%EC%9D%B8%EC%9D%B4%EB%9E%80
어찌됬든 결론은 이번주에는 블록체인 공부의 방향성에 대한 고민과 chia coin에 대해 공부했다는 것이다.
이더리움 공부부터 시작해보자 다짐했지만 이더리움은 또 어떻게 공부를 시작해야될지 감이 안잡혔다. 그래서 우선은 NFT가 무엇인지부터 공부를 시작했다. 대충은 알고 있지만 이번 기회에 제대로 찾아아보고 블로그에 이해한대로 정리해두었다.
https://velog.io/@dogfootbirdfoot/NFT%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
그 다음으로는 인프런에 있는 블록체인과 솔리디티
라는 강의를 들었다. 이더리움 네트워크의 스마트 컨트랙트를 작성하려면 솔리디티 문법을 익혀야하는데 대략 어떤 식으로 작성하는지 알고싶어서 가볍게 들었는데 강의도 워낙 짧고 아직 기본 배경지식이 부족해서 강의를 통해 크게 얻은건 없다.
https://www.inflearn.com/course/%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-blockchain
heom님이 추천해주신 책을 샀다. Mastering Ethereum
이라는 책인데 스마트 컨트랙트와 DApp 구축을 위한 참고 매뉴얼로 사용하면 될 것 같다. 일단 처음부터 무작정 읽기 시작했는데 확실히 쉬운 내용은 아닌 것 같다.
Mastering Ethereum
에 솔리디티로 작성된 코드들이 꽤나 나오는 것을 봐서 우선은 솔리디티 문법을 어느정도 익히고 보는 것이 순서가 맞다는 생각이 들었다. 마침 무료로 게임처럼 재미있게? 솔리디티를 공부할 수 있는 Cryptozombies
라는 입문자 맞춤 브라우저 레슨을 발견해서 요번주는 Cryptozombies
lesson1을 진행했다.
lesson1에서는 기본적인 컨트랙트 작성 방법, 상태 변수 & 정수, 연산, 구조체와 배열의 선언과 활용, 함수 선언 등을 직접 코드를 작성하며 배웠다. 함수를 선언할 때 public / private로 선언할 수 있는 것이 좀 생소하긴 하지만 꽤 흥미로웠다. 자바스크립트를 잘 알지는 못하지만 솔리디티를 작성하는 방식이 자바스크립트와 비슷한 것 같다. 아래 블로그는 lesson1을 진행하며 정리한 내용들이다.
저번주에 Cryptozombies
lesson1을 끝내고 이번주에 lesson2를 진행했다. lesson2는 lesson1에 비해서 난의도가 살짝 있었지만 설명이 잘되있어서 어려운 정도는 아니였다.
이더리움 블록체인은 은행 계좌와 같은 계정들로 이루어져있고 각 계정은 은행 계좌번호와 같은 주소를 가지고 있다. 주소는 곧 특정 계정을 가리키는 고유 식별자이다. lesson1에서 배운 구조체와 배열과 같이 구조화된 데이터를 저장하는 또 다른 방법을 배웠는데 그것이 매핑이다. 매핑은 기본적으로 키-값 저장소로 데이터를 저장하고 검색하는데 이용된다.
그 밖에 공부한 내용들은 블로그에 예시 코드와 함께 상세하게 정리해 두었다.
사실 저번주에 lesson2를 끝내고 이번주에 lesson3를 진행하려고 했는데 요즘 내내 42Seoul 프로젝트 하는데 정신이 팔려서 이번주까지 해서야 lesson2를 끝낼 수 있었다.
lesson1에서 배운 함수 접근 제어자인 Public과 Private 외에 Internal과 External 제어자에 대해 공부했다. 선언 방식과 기능은 비슷하지만 상속 여부와 호출 위치에서 약간의 차이가 있는 것 같다.
C
에서는 하나의 반환값만이 있을 수 있는 반면 솔리디티에서는 다수의 반환값도 처리할 수 있다는 점에 무릎을 탁 쳤다. 아직 할 줄 아는게 C
밖에 없어서 비교대상은 언제나 C
가 유일하다...ㅠㅠ
블로그 정리는 3주차 때 정리한 거에 이어서 했다.
ft_printf
를 1주일 안에 끝내보겠다는 욕심에 요번주 스터디를 쉬게 되었음에 굉장히 유감스럽게 생각합니다... 다음주부터 열심히 하겠습니다..!!