반응형
블록체인의 기본 원리: 투명성 with Python
블록체인의 투명성이란
블록체인 (Blockchain)의 투명성은 블록체인 시스템에서는 모든 정보를 공유하므로, 정보를 정확히 확인할 수 있는 특성입니다. 이 특성은 거래 장부는 모든 참여자에게 공유되는 개방성과 참여자는 거래 관련 정보를 객관적으로 알 수 있는 추적성으로 구성되어 있습니다. 대부분의 블록체인은 완전히 오픈 소스 소프트웨어입니다. 이것은 누구나 코드를 볼 수 있다는 것을 의미합니다. 이를 통해 감사인은 보안을 위해 Bitcoin과 같은 암호화 화폐를 검토할 수 있습니다.
튜토리얼
필요 라이브러리
1
|
import hashlib
|
cs |
혼밥코인 클래스
1
2
3
4
5
6
7
|
|
class HonbobCoinBlock:
def __init__(self, previous_block_hash, transaction_list):
self.previous_block_hash = previous_block_hash
self.trasaction_list = transaction_list
self.block_data = "-".join(transaction_list) + "-" + previous_block_hash
self.block_hash = hashlib.sha256(self.block_data.encode()).hexdigest()
|
cs |
임의의 거래 내용
1
2
3
4
5
6
|
t1 = "Anna sends 2 HonbobCoin to Mike"
t2 = "Bob sends 4.1 HonbobCoin to Mike"
t3 = "Mike sends 3.2 HonbobCoin to Bob"
t4 = "Daniel sends 0.3 HonbobCoin to Anna"
t5 = "Mike sends 1 HonbobCoin to Charlie"
t6 = "Mike sends 5.4 HonbobCoin to Daniel"
|
cs |
거래 내용 저장
1
2
3
4
5
6
7
8
9
10
11
12
|
initial_block = HonbobCoinBlock("Initial String", [t1, t2])
print(initial_block.block_data)
print(initial_block.block_hash)
second_block = HonbobCoinBlock(initial_block.block_hash, [t3, t4])
print(second_block.block_data)
print(second_block.block_hash)
third_block = HonbobCoinBlock(second_block.block_hash, [t5, t6])
print(third_block.block_data)
print(third_block.block_hash)
|
cs |
출력 결과물
1
2
3
4
5
6
|
Anna sends 2 HonbobCoin to Mike-Bob sends 4.1 HonbobCoin to Mike-Initial String
b30b9d6fe2c86604beda1f33bdc5573b854fd6a6cbdcf65f7110e708f44bb21c
Mike sends 3.2 HonbobCoin to Bob-Daniel sends 0.3 HonbobCoin to Anna-b30b9d6fe2c86604beda1f33bdc5573b854fd6a6cbdcf65f7110e708f44bb21c
3181eb753533573b1e0be15dae6ed3e376aadb423107805db7ab019f7eb6925d
Mike sends 1 HonbobCoin to Charlie-Mike sends 5.4 HonbobCoin to Daniel-3181eb753533573b1e0be15dae6ed3e376aadb423107805db7ab019f7eb6925d
e37418b13cba5eabea888420436c55a707da6c3e9391b56dac7662f8e034b41f
|
cs |
만약 Anna가 Mike에게 2 HonbobCoin이 아닌, 3 HonbobCoin을 준다면 hash값이 어떻게 될까?
Anna가 2 HonbobCoin을 전달했을 때의 Hash값
b30b9d6fe2c86604beda1f33bdc5573b854fd6a6cbdcf65f7110e708f44bb21c
Anna가 3 HonbobCoin을 전달했을 때의 Hash값
9fc61120816572b07a91085a0cd923972badb98bc9f77cbe29764f7ba42f0ac8
Hash 값이 조금만 변경된 것이 아니라 완전히 변경됐다. 그 이유는 블록체인의 투명성 때문이다. 블록체인은 그 누구도 숨길 수 없도록 거래 내역을 완벽하게 저장한다. 그리고 거래 내역은 누구에게 투명하게 공개 가능하다. 그렇기 때문에 거래 내역이 조금만 바뀌더라도 완전히 고유한 hash값을 갖게 된다.
Full Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import hashlib
class HonbobCoinBlock:
def __init__(self, previous_block_hash, transaction_list):
self.previous_block_hash = previous_block_hash
self.trasaction_list = transaction_list
self.block_data = "-".join(transaction_list) + "-" + previous_block_hash
self.block_hash = hashlib.sha256(self.block_data.encode()).hexdigest()
t1 = "Anna sends 2 HonbobCoin to Mike"
t2 = "Bob sends 4.1 HonbobCoin to Mike"
t3 = "Mike sends 3.2 HonbobCoin to Bob"
t4 = "Daniel sends 0.3 HonbobCoin to Anna"
t5 = "Mike sends 1 HonbobCoin to Charlie"
t6 = "Mike sends 5.4 HonbobCoin to Daniel"
initial_block = HonbobCoinBlock("Initial String", [t1, t2])
print(initial_block.block_data)
print(initial_block.block_hash)
second_block = HonbobCoinBlock(initial_block.block_hash, [t3, t4])
print(second_block.block_data)
print(second_block.block_hash)
third_block = HonbobCoinBlock(second_block.block_hash, [t5, t6])
print(third_block.block_data)
print(third_block.block_hash)
|
cs |
반응형
'공부 > 파이썬 Python' 카테고리의 다른 글
Weather API 튜토리얼 (날씨 정보 API) (0) | 2022.04.01 |
---|---|
[Python] 언제 은퇴할 수 있을까를 계산 (0) | 2022.03.27 |
간단한 파이썬 멀티쓰레딩 예제들 (0) | 2022.03.25 |
Python을 사용한 유방암 검출 튜토리얼 (Breast Cancer Detection with Python) (1) | 2022.03.23 |
Python에서의 실제 콜센터 프로세스 시뮬레이션 (0) | 2022.03.23 |
댓글