본문 바로가기
개발 (언어)/TypeScript & Blockchain

[Block_chain] Typescript 활용(5) - 블록체인 구현

by 진현개발일기 2022. 2. 6.

[2022. 02. 06]


▼ 강의에 따라 쳐봤다.

▼ 흔히 서버에 json파일을 로그했을 때 볼 수 있는 타입으로 나온다.

(타입스크립트 및 자바에서 array가 이런 식으로 나오나보다)

일단 여기까지 했을 때 드는 생각은 블록체인이라는 것은 하나의 공개된 자료구조인 것인가? 그 자료구조의 데이터를 하나의 네트워크 아래에 속한 모든 사람들이 갖고있는 것을 블록체인이라고 하는 것인가? 라는 생각이 들었다. 섣부른 생각인 것을 알고 계속 강의를 들어보기로 했다.

 

 

 

 

CryptoJS 설치 (목적: 해시 함수를 통해 암호화 하기 위함)

 

설치를 하고 사용을 하기 위해서는 아래와 같이 맨 위에 import문을 추가해줘야한다.

*는 everything을 뜻한다고 한다. "crypto-js"의 전부를 import한다는 뜻 같다.

 

▼ BlockHash 값을 생성해주는 Static 함수를 만들어준다. index, 이전 hash, timestamp, data를 아까 임포트했던 CryptoJS의 SHA256라는 함수를 통해 해쉬 값을 만들어주고 그것을 toString 해준 뒤 string 타입으로 반환 해주는 함수다. 규격이 없다면 C#에서도 아스키코드라든지 따로 나만의 암호를 만들어서 구현해도 괜찮을 것 같다.

 

만약 위를 C#으로 구현한다면

 

static string calculateBlockHash (int index, string prevhash, int timestamp, string data)

{

return  문자; 

}

요런 식일 것이다. 

Typescript는 

 

함수특성(ex) static  + 이름 = (파라미터: 타입) + : 반환 타입 => 함수 내용 

위 구조를 기본으로 하는 것 같다.

blockchain함수는 Block클래스를 리턴하고  실행 내용은 genesisBlock이다.

 

genesisblock 함수는 : Block (Block 타입을 리턴하는 함수) + 함수 내용은 = new Block을 통해 새로운 Block을 생성이다.

즉, 새로운 블락을 생성해서 반환하는 함수이다.

 

▼ 강의 따라 작성한 함수들

\Typescript를 활용할 것을 권하고 이유가 이쁘고 더 알아보기 쉬워서라고 하시는데 개인적인 생각은 구현만 된다면 본인이 익숙한 언어가 제일 최고인 것 같다.

 

▼ 새로운 블록체인 만드는 함수

 

근데 에러가 뜬다. 읽어보면

undefined properties를 읽을 수가 없다고한다.  createNewBlock 쪽 문제이고 'index'를 읽는데 문제가 있다고한다

인덱스 읽는 쪽을 확인해봤는데. 아 실수 했다. 함수() 해줬어야하는데 에러가 안뜨길래 무심코 넘어갔었다.

▼ 수정 후 다시 실행

인덱스가 1, 1인데 이유는 blockchain에 안넣어주고 생성만 해줬기 때문이다.

 

 

블록체인 원리랑 흐름을 파악하는 것이 이 강의를 듣는 목적이고 목적을 달성하면 곧 바로 이것을 써먹을 계획을 짜봐야겠다.  이론 및 개념은 인터넷에서 찾아서 공부해보고 국가에서도 제공해주는 연구 파일이있으니 그걸로 공부하면 될 것 같다. 

728x90