비트코인의 원리 PART 5-1: 블록체인 원리

안녕하세요 여러분. 참새입니다.

우선은 정리된 여러 장부들을 ‘블록’의 형태로 분리합니다. 각각의 블록은 ‘작업증명을 포함한 거래 기록들’을 담고 있습니다.

(질문): “참새님, 작업증명 (proof of work)이란 무엇인가요?”

장부가 거래 기록뿐만 아니라 작업증명을 포함하고 있다는게 무슨 말인지 헷갈리시죠? ㅎㅎ 전의 포스팅에서 알아봤듯이 작업증명이란 SHA-256와 같은 암호화 해쉬 함수로 장부의 정보를 넣었을 때 특정한 숫자들이 나오게끔 해주는 ‘마법의 숫자’입니다.

위의 그림에서처럼 각 장부의 기록들은 다르지만 작업증명 숫자들 (예. 844421851525)을 함께 SHA-256 해쉬 함수에 넣었을 때 첫자리 숫자들에 ‘0’이 계속해서 반복되는 것을 보실 수 있습니다. 거래 기록도 다르고 전자서명도 다르지만 어떤 마법의 숫자를 함께 포함시켜서 함호화 해쉬 함수에 넣어보니 ‘0’이 계속해서 반복이 되었습니다. 이렇듯 ‘0’이 계속 반복되어서 나타나게끔 해주는 숫자를 ‘작업증명’이라고 하고, 이런 ‘작업증명’ 숫자를 찾는 과정을 ‘작업증명 방식’이라고 부릅니다.

위의 그림을 한 번 더 보실게요!

‘어떠한 거래 기록’이 있고, ‘특정 숫자 (320780322309)’를 암호화 시켰더니 첫 60자리 숫자들이 신기하게도 ‘0’이 반복되어서 나타났습니다 (60번이 반복되는 것은 예로 들겠습니다). 암호화를 하는 과정은 랜덤하게 진행되는 것이라서 어떤 숫자를 넣어야지 암호화 시켰을 때 ‘0’이 60번 반복되어서 나타날 지는 아무도 모릅니다. 그러니까 채굴자들은 계속해서 컴퓨터를 돌려서 결과물의 첫 60자리가 모두 ‘0’이 나올 때까지 ‘때려 맞춰야’합니다 ^^;;

정리된 장부들이 블록들로 분리된 후에는, ‘순서’를 정해줘야 하겠죠? ㅎㅎ 여러 종류들의 서류들을 깔끔하게 정리를 해놨는데 순서가 뒤죽박죽이면 안되니까요 ^^;;

‘블록들의 순서’를 정해주기 위해서 각 블록들은 이전 블록 (a previous block)의 해쉬를 포함하게 됩니다.

서류 #2 = 서류 #1의 해쉬 + 장부 거래 기록 + 전자서명 + 작업증명
서류 #3 = 서류 #2의 해쉬 + 장부 거래 기록 + 전자서명 + 작업증명

이런 식으로 서류를 정리하게 된다면 서류들 서로간에 ‘순서’가 명확해지겠죠. 블록을 정리할 때도 똑같습니다.

만약에, 첫 두 블록들의 순서를 바꾸려면 어떻게 해야 할까요?

그림에 보시다시피 첫 번째 블록과 두 번째 블록의 순서가 뒤바꼈습니다. 그런데, 각 블록의 맨 위에는 ‘이전 블록의 해쉬’를 포함하고 있기 때문에 첫 번째 블록과 두 번째 블록의 ‘이전 블록의 해쉬’를 다시 바꿔줘야 하죠. 그런데 더 큰 문제는, 이전 블록의 해쉬를 다시 바꿔준다는 말은 ‘블록의 해쉬’ 또한 바뀐다는 말이기 때문에 원래 지정되었던 첫 번째 블록과 두 번째 블록의 순서를 정식대로 바꾸려면, 이 블록들과 연결되어 있는 모.든. 블록들의 해쉬를 다시 다 찾아야 합니다. 순서 하나 바꾸려면 여태까지의 모든 블록들의 해쉬를 다시 다 찾아야 하니까 불가능에 가깝겠죠 ^^;;

(질문): “참새님, 이전 블록의 해쉬만 다시 찾으면 되는 것 아닌가요? 왜 굳이 모든 이전의 블록들의 해쉬까지 다 찾아야 하나요?”

좋은 질문입니다. 예를 들어서 4개의 블록들이 있다고 가정해보겠습니다. #3 블록과 #4 블록의 순서를 바꾸려면 #3&4 블록들의 ‘이전 블록들의 해쉬’를 다시 찾아야 하는 것까지는 아실 겁니다. 그런데, #4 블록이 #3 블록으로 바꼈으니까 예전 #2 블록의 해쉬는 더이상 #3 (예전의 #4) 블록의 ‘이전 블록의 해쉬’가 아니게 되어버리죠. 그러니까 ‘체인 (사슬)’처럼 연결된 블록들의 일부분 순서를 바꾸려면 모.든. 블록들의 해쉬를 다시 다 찾아줘야 합니다.

이렇듯, 제대로 인증된 블록들은 사슬처럼 연결되어 있기 때문에, 더이상 장부라고 부르지 않습니다.
바로 ‘블록체인’이라고 부르게 됩니다.

간단하게, 체인(사슬)처럼 연결되어 있는 블록들이죠 ^^

참조링크

제 포스팅이 유익하였다면 보팅 , 리스팀, 팔로잉 부탁드립니다 ^^

인터넷의 원리 PART.1: 인터넷이란 무엇인가?
@kim066/part-1
인터넷의 원리 PART 2: 와이어, 케이블, 그리고 와이파이 (Wifi) - 1
@kim066/part-2-wifi-1
인터넷의 원리 PART 3: 와이어, 케이블, 그리고 와이파이 (Wifi) - 2
@kim066/part-3-wifi-3
인터넷의 원리 PART 4: IP 주소 & DNS – (1)
@kim066/part-4-ip-and-dns-1
인터넷의 원리 PART 5: IP 주소 & DNS – (2)
@kim066/part-5-ip-and-dns-2
인터넷의 원리 PART 6: IP 주소 & DNS – (3)
@kim066/part-6-ip-and-dns-3
인터넷의 원리 PART 7: 패킷, 라우팅, 그리고 신뢰성 – (1)
@kim066/part-7-1
인터넷의 원리 PART 8: 패킷, 라우팅, 그리고 신뢰성 – (2)
@kim066/part-8-2
인터넷의 원리 PART 9: TCP/IP와 UDP/IP (번외편)
@kim066/part-9-tcp-ip-udp-ip
인터넷의 원리 PART 10: 암호화와 공개 키– (1)
@kim066/part-9-1
인터넷의 원리 PART 11: 암호화와 공개 키– (2)
@kim066/part-11-2
인터넷의 원리 PART 12: 사이버 보안과 사이버 범죄 – (1)
@kim066/part-12-1

비트코인의 원리 PART 1: 가상화폐란?
@kim066/4urqt9-part-1
비트코인의 원리 PART 2: 전자서명이란? (1)
@kim066/part-2-1
비트코인의 원리 PART 3: 비트코인의 기본적 정의
@kim066/part-3
비트코인의 원리 PART 4-1: 해쉬 함수와 작업 증명 방식의 원리
@kim066/part-4-1
비트코인의 원리 PART 4-2: 해쉬 함수와 작업 증명 방식의 원리
@kim066/part-4-2

H2
H3
H4
3 columns
2 columns
1 column
10 Comments