노마드코더를 보며 따라만든 Typescript 블럭체인

평소에 블럭체인과 Typescript 를 둘다 배우고 싶어했었다. 하지만 마땅한 동기가 크게 없어서 어영부영 미루기만 했었는데, 노마드코더에 Typescript 로 간단한 블럭체인을 구현하는 강의가 있었다. 무료이기도 했고, 블럭체인과 Typescript 둘다 배울 수 있는 아주 좋은 기회라 생각하여 바로 수강신청 후 영상으로 배웠다. 그리고 학습한 내용을 기록으로 남기기위해 Github 저장소 (nomadcoder-typechain) 에 커밋했다. 앞으로 블로그에 올리기 번거롭거나, 사소한 것들을 학습했을때는 글로 남기기보다는 Github 에 코드로 기록하기로 생각했다. 아무래도 학습 내용을 다시 글로 정제하는 과정은 오래걸리기에..

강의에서는 초반에는 Typescript 에 대한 간단한 소개와 이론, 후반에서는 Typescript 로 실제 간단한 블럭체인을 구현하는 내용이 담겨있었다. 사실 블럭체인이라고 해봤자 PoW 같은 가상화폐로 사용될 수 있는 것의 구현은 아니고, 말그대로 단순히 Block 들이 이어져있는 Array 를 제작하는 과정이었다. 그래도 꽤 배워가는 것들이 많았다.

Typescript

Typesciprt (이하 TS) 는 Microsoft 에서 개발한 Javascript 의 슈퍼셋(Superset) 이다. TS 를 컴파일하면, JS 코드로 변환된다. 마치 Sass 코드를 컴파일하면, CSS 코드로 변환되는 것 처럼.

그렇다면 왜 TS 를 사용할까? TS 에는 Javascript 에는 없는 타입이 존재한다. 다음과 같이 변수, 파라미터, 반환값 등에 타입을 설정할 수 있다. 이에 따라 디버깅이 쉬워지고, 코드의 흐름을 예측할 수 있게 된다.

Block 이라는 Class 를 만들고, Block 이라는 타입의 Array 인 blockchain 을 만들었다. Block 의 static function 을 이용하여, 블럭의 hash 를 계산하고, 블럭 structure 를 검증하는 기능도 제작하였다. 모든 파라미터는 타입이 지정되어 있어, 코드가 예측 가능하게 되었던 것 같다.

4개의 블럭이 추가된, Typechain 의 모습

간단한 프로젝트였지만, TS 와 블럭체인의 구조와 특징을 동시에 알 수 있어 의미있던 프로젝트였다.