티스토리 뷰
Author: 니용
지금까지는 TypeScript에 문법에 대해서 다루어보는 시간이었습니다.
그럼 이제부터는 본격적으로 블록체인의 프로토타입을 만들어보려 합니다.
가장 먼저 Class를 생성합니다.
클래스의 프로퍼티는 아래와 정의하면 좋을듯 합니다.
class Block {
private index: number;
private hash: string;
private prevHash: string;
private data: string;
private currentTimestamp: number;
}
index는 인덱싱을 위한 컬럼으로 number 타입을 가집니다.
hash, prevHash는 현재 인덱스가 가지고 있는 해시값과 이전 블록이 가지고 있는 해시값을 의미하고 string 타입을 가집니다.
data는 현재 블록이 가진 데이터를 의미하고 블록에서 가장 중요한 값입니다.
마지막으로 currentTimestamp는 현재 시간을 의미합니다. number 타입을 가지게 된 이유로는 string 보다 number 타입이 컴파일하기 좋기 때문입니다.
그래서 constructor를 만드실 때 보시다시피 data만을 파라미터로 받아야하겠습니다.
기타 다른 친구들은 자동으로 생성이 되기 때문입니다.
class Block {
private index: number;
private hash: string;
private prevHash: string;
private data: string;
private currentTimestamp: number;
constructor(data: string) {
this.data = data;
this.currentTimestamp = new Date().getTime();
}
}
블록 체인의 개발을 진행하기 전 아래의 명령어를 터미널에 입력합니다.
yarn add crypto-js |
이것은 크립토라는 기본적인 JavaScript 라이브러리로 암호화를 위한 함수를 사용하기 위함입니다.
자세한 내용은 해당 링크에서 확인 가능하십니다.
이제 index.ts 파일 내에서 임포트를 써야할 타이밍이 왔습니다.
import는 어렵지 않습니다. 상단에 아래와 같이 입력해줍니다.
import * as CryptoJS from "crypto-js"; |
이제 static method를 만들어보려 합니다!
자바스크립트 문법이기도 하지만 생소하실 분들도 계실 수 있을거라 생각합니다.
static 영역은 어느 영역에서도 호출이 가능합니다.
class Block {
private index: number;
private hash: string;
private prevHash: string;
private data: string;
private currentTimestamp: number;
constructor(data: string) {
this.data = data;
this.currentTimestamp = new Date().getTime();
}
static calcBlockHash = (index: number, hash: string, data: string, ts: number): string =>
CryptoJS.SHA256(`${index}${hash}${ts}${data}`).toString();
}
위의 소스와 같이 static 이 앞에 붙으면 처리가 완료됩니다.
리턴값인 SHA256은 암호화함수 중의 하나로 파라미터로 받은 4개의 값을 붙여서 변환해주게 됩니다.
컴퓨터가 일정 패턴을 가진 파라미터를 가지고 암호화하는 것이므로 사용자는 절대로 알 수 없겠죠.
이렇게 암호화의 기본 원리와 static에 대하여 알아보았습니다 :)
'Client' 카테고리의 다른 글
Thymeleaf 의 캐시(Cache) 처리 (0) | 2020.01.28 |
---|---|
[TypeScript] BlockChain 만들기 (10) (0) | 2020.01.05 |
[TypeScript] BlockChain 만들기 (9) (0) | 2020.01.05 |
[TypeScript] BlockChain 만들기 (7) (0) | 2020.01.04 |
[TypeScript] BlockChain 만들기 (6) (0) | 2020.01.04 |
[TypeScript] BlockChain 만들기 (5) (0) | 2020.01.04 |