블록체인(Block chain) - 해시함수

Jeenie·2022년 8월 25일
0
post-custom-banner

이 포스트는 #2 - 해시함수란 무엇인가?와,
누구나 한 번에 이해할 수 있는 블록체인 강의 | 샌프란시스코 대학 부교수 정은진 [리얼밸리 시즌 2 EP 10]
를 참조하여 요약한 글입니다.

1. 해시함수란?

인풋을 받으면 랜덤한 아웃풋을 주는 수학 함수

임의의 길이를 갖는 메시지를 입력받아 고정된 길이의 해시값을 출력한다.

해시 함수는 키를 사용하지 않으므로 같은 입력에 대해서는 항상 같은 출력이 나온다.

1-1. 해시함수는 왜 필요한가?

메시지의 오류나 변조를 탐지할 수 있는 무결성을 제공하기 위해 사용된다.

2. 해시함수의 특징

비가역성을 가지고 있는 특별한 함수.
(비가역성 : 이미 일어난 일을 되돌리기 어려움)

x를 넣어서 y를 찾을 수 있지만

y로는 x를 찾기 매우매우 힘들다.

빨간 물감과 노란 물감을 섞으면 주황색 물감이 되는 건 매우 쉽다.
그런데, 주황색에서 원래 무슨 색과 무슨 색이었는지 분리하는 건 매우 어렵다.

이러한 비가역성 특성 때문에,
1 -> 2는 쉽지만, 6 > 5 > 4 > 3 > 2 > 1은 매우 매우 어렵다.

따라서 이전의 값을 조작할 수 없음.
이것이 블록체인의 과거를 조작할 수 없는 이유

3. SHA(Secure Hash Algorithm)

해시 함수는 마법의 함수 🪄✨
많은 양의 정보를 함수에 넣으면, 랜덤한 아웃풋이 나온다.

그 다음 블록이, 그 전의 블록의 해쉬를 가져다가 사용하기 시작하면?

블록체인이 된다 🚀

블록의 구조


class Block {
  constructor(index, hash, previousHash, timestamp, data) {
    this.index = index;
    this.hash = hash;
    this.previousHash = previousHash;
    this.timestamp = timestamp;
    this.data = data; 
  }
}

// 새로운 블록이 생성될 때 이렇게 들어간다
new Block(1, bbbb, aaaa, 2022-02-01-12:25:00, "hello!!!")

블록이 최초로 생성될 때마다 주는 정보
이 정보가 블록 안에 저장된다.

새로 만든 이 블록을 해시함수 알고리즘인 SHA256으로 돌려보면,

조금만 바뀌어도 해시값이 완전히 달라지는 것을 볼 수 있다.

그럼 이 해시를, 새로 생성될 다음 블록에서 사용하면?

이전블록과 새로운 블록이 해쉬로 연결됐다.

➡️ 이렇게 블록체인이 형성된다 !

해시의 인풋을 어느 한 부분이라도 수정하면 그 해시 자체가 완전히 바뀌어버린다.

이 해시를 그 다음 블록이 참고하고 있으니, 해시가 바뀌어버리면 invalid 되어버리는 것 !

profile
Web Front-end developer
post-custom-banner

0개의 댓글