해시를 계산 하고 새로운 블록을 연결 해보자.

yarn add crypto-js
import * as CryptoJS from 'crypto-js';

이제 블록의 해쉬를 계산

계산 메소드를 static으로 만들자.

import * as CryptoJS from 'crypto-js';

class Block {
  public index: number;
  public hash: string;
  public previousHash: string;
  public data: string;
  public timestamp: number;

  static calculateBlockHash = (
    index: number,
    previousHash: string,
    timestamp: number,
    data: string
  ): string => CryptoJS.SHA256(index + previousHash + timestamp + data).toString();

  constructor(
    index: number,
    hash: string,
    previousHash: string,
    data: string,
    timestamp: number,
  ) {
    this.index = index;
    this.hash = hash;
    this.previousHash = previousHash;
    this.data = data;
    this.timestamp = timestamp;
  }
}

const genesisBlock: Block = new Block(0, 'abc123', '','hello', 123456);

let blockchain: Block[] = [genesisBlock];

console.log(blockchain);

함수를 몇 개 만들어 보자

const getBlockchain = (): Block[] => blockchain;
const getLatestBlock = (): Block => blockchain[blockchain.length - 1];
const getNewTimestamp = (): Number => Math.round(Date.now() / 1000);