TS_blockChain 만들기 (3)

이제는 만들어진 newBlock 의 validation을 해보자.

이미 Block 생성자를 통해 만들어낸 Block 이지만, 완벽한 Block의 유효성 검사를 위해서 2중 3중으로 필터링 하는 듯하다. 금융권과 같이 100%의 무결성을 유지해야하는 분야에서는 꼭 필요한 안전 장치인 것 같다고 어렴풋하게나마 느꼈다.

1. type의 검증 (hash)

static validateStructure = (aBlock: Block): boolean =>
    typeof aBlock.index === "number" &&
    typeof aBlock.hash === "string" &&
    typeof aBlock.previousHash === "string" &&
    typeof aBlock.timestamp === "number" &&
    typeof aBlock.data === "string";

어떤블록(anyBlock)의 형(type)을 검증하는 과정이다.

2. 이전 block과의 관련성 검증

const getHashforBlock = (aBlock: Block): string =>
  Block.calculateBlockHash(
    aBlock.index,
    aBlock.previousHash,
    aBlock.timestamp,
    aBlock.data
  );

첫 번째 if 문에서 1번에 명시된 함수를 실행하여 형을 검증하고, 2,3 번째에서는 previousBlock과의 연관성(index, previousHash)이 유효한지를 검증한다. 마지막 4번째 if문에서는 gethashforBlock 함수를 통해 hash값이 제대로 도출되었는지를 검증한다. 모든 시험을 통과하면 true를 반환하고, createNewBlock 을 실행할때마다 addBlock이 실행되어 blockchain에 새로 만들어진 Block 을 push 한다.

완성된 블록체인.. data : string 값만 새롭게 넣어주면 함수를 호출할때마다 체인의 블록이 1개씩 늘어난다. data 도 어떠한 규칙성이 있거나 random한 함수를 넣어주면 자동으로 Block 생성이 가능해 질것으로 추측한다.

출처: https://nomadcoders.co/typescript-for-beginners/lobby

타입스크립트를 처음 접하는 거기도 해서 총 3번 봤다. 이제 좀 ts의 멋짐을 알것같다 ㅎㅎ

좋은 웹페이지 즐겨찾기