2022.05.29 - [일등박사의 생각/[파공블]파이썬으로 공부하는 블록체인] - [파공블]파이썬으로 공부하는 블록체인(목차)
지금까지 배운 내용을 간단히 정리해보자면!!
블록체인이란 블록들이 암호해시의 체인으로 연결된것!!
입니다!!!
블록체인을 공부하며 떠오르는 생명체가 있는데!!
바로 거미입니다
1. 거미(블록) 들이 거미줄(체인)을 통하여 연결되는 것이 비슷했고
2. 구성요소가 "머리" 와 "몸통" 두가지로 비슷했기때문입니다!
초등학교시절 곤충들에 대하여 배우길, 머리/가슴/배 3개의 부분으로 구성된다고 했는데요~!
거미는 이와 다른 절지동물로서 머리와 몸통 2개의 부분으로 구성된다고 하였습니다!!
우리가 배우고 있는 블록체인도 마찬가지 입니다!!
머리(header)와 몸통(Body)로 이루어지고 있는데요!!
Header(머리) 부분에는 크게 아래 4개 정보가 저장되어 있구요!!
1. 이전부분의해시 : 전블록이 변조되었는지를 확인할 수 있다
2. 블록 생성시간 : 해당 블록이 언제 생성되었는지를 알 수 있다
3. Body 해시 : Body( 몸통)의 내용이 해시되어 변조되었는지를 알 수 있다
4. Nonce : 채굴과 관련된 신기한부분!! 이후 더 알아볼 예정
Body(몸통) 부분에는 거래되었던 내역이 저장되있습니다.
파이썬으로 비교해보아요!!!
Python 코드로
머리와 몸통으로 구성된 첫 블록( Genesis block)을 만들어 보겠습니다!!
import hashlib
import datetime
## BODY : Transaction의 모음
block_body = { "transaction1": {
'판매자' : '파공블',
'구매자' : '김민수',
'개수' : '3개',
'timestamp' : 1652247422892844,
},
"transaction2": {
'판매자' : '파공블',
'구매자' : '이영호',
'개수' : '3개',
'timestamp' : 165224743233231
}
}
## BODY의 모든 내역을 해시함수를 활용하여 해시로 만듬!!
body_hash = hashlib.sha256(str(block_body).encode()).hexdigest()
## HEAD : 블록의 머리부분! 4개의 구성요소값으로 구성
block_header = { 'previous_hash' : "0",
"block_created_at" : datetime.datetime.now().timestamp(),
"body_hash" : body_hash,
"nonce" : "nonce??"
}
## Header와 Body를 묶어 첫번째 블록(genesis_block)을 생성!!
genesis_block = {'header' : block_header,
'body' : block_body
}
잘 이해되지요!?
그럼 이제 이 첫블록에 이어지는 2번재 블록을 파이썬 코드로 보아요!!
import hashlib
import datetime
## BODY : Transaction의 모음
block_body2 = { "transaction1": {
'판매자' : '김민수',
'구매자' : '김민목',
'개수' : '3개',
'timestamp' : 1662247422892844,
},
"transaction2": {
'판매자' : '이영호',
'구매자' : '이일호',
'개수' : '3개',
'timestamp' : 165224743833231
}
}
## BODY의 모든 내역을 해시함수를 활용하여 해시로 만듬!!
body_hash2 = hashlib.sha256(str(block_body2).encode()).hexdigest()
## HEAD : 블록의 머리부분! 4개의 구성요소값으로 구성
block_header2 = { 'previous_hash' : hashlib.sha256(str(genesis_block).encode()).hexdigest(),###가장 크게 바뀐 부분!! 전 블록(genesis_block) 을 해시하여 넣는다!
"block_created_at" : datetime.datetime.now().timestamp(),
"body_hash" : body_hash2,
"nonce" : "nonce??"
}
## Header와 Body를 묶어 두번째 블록(block_2)을 생성!!
block_2 = {
'header' : block_header2,
'body' : block_body2
}
새로운 거래내역이 들어가고,
머리부분의 previous_hash에 전블록(genesis_block)의 해시값이 들어간다는 차이점이 있었습니다!!
지금까지 우리는
거미와 비슷(?)하게 블록체인을 머리와 몸통으론 나누어
그 구성요소를 학습해보았습니다!!
다음챕터에서는 비밀로 남겨두었던 nonce에 대하여 공부해보아요!
화이팅!!
'블록체인 > [파공블]파이썬으로 공부하는 블록체인' 카테고리의 다른 글
1. 파이썬으로 공부하는 블록체인 - 질문있어요!! (0) | 2022.06.24 |
---|---|
1. 파이썬으로 공부하는 블록체인 - 채굴 (0) | 2022.06.24 |
1. 파이썬으로 공부하는 블록체인 - 해시!? (0) | 2022.06.15 |
1. 파이썬으로 공부하는 블록체인 - 간단한 블록체인 (0) | 2022.06.14 |
1. 파이썬으로 공부하는 블록체인 - Intro (0) | 2022.06.13 |
댓글