검색결과 리스트
글
파이썬으로 나만의 블록체인 만들기 #4
#참고 : 이 글은 @ecomusing 님의 포스트를 제 맘대로 번역한 글입니다. 원문보기
#참고2 : 전체 Jupyter / iPython 소스코드 받기
모두 합치기 : 최종 블록체인 아키텍쳐(Architecture)
실제 블록체인 네트워크에서 새로운 노드는 블록체인의 사본을 다운로드 받고 이것을 검증한 다음, peer-to-peer 네트워크에 자신의 존재를 알리고 거래내역과 관련된 요청을 받을 준비를 시작합니다. 블록 안으로 묶여진 거래내역들은 proposed block 을 다른 노드들에게 전달합니다.
앞에서 우리는 블록체인의 사본을 어떻게 검증하는지, 거래내역들이 어떻게 블록으로 묶여지는지 확인하였습니다. 만약 우리가 다른 곳에서 블록을 만았다면, 이것을 검증하고 우리의 블록체인에 추가하는 것은 쉽습니다.
다음의 코드가 노드 A에서 실행된다고 해봅시다.
import copy
nodeBchain = copy.copy(chain)
nodeBtxns = [makeTransaction() for i in range(5)]
newBlock = makeBlock(nodeBtxns,nodeBchain)
이제 newBlock 이 우리 노드로 넘어온다고 가정해봅시다. 그리고 우리는 이 newBlock 을 확인하고 해당 블록이 유효하다면 우리의 상태를 업데이트 할 것입니다.
print("Blockchain on Node A is currently %s blocks long"%len(chain))
try:
print("New Block Received; checking validity...")
state = checkBlockValidity(newBlock,chain[-1],state) # Update the state- this will throw an error if the block is invalid!
chain.append(newBlock)
except:
print("Invalid block; ignoring and waiting for the next block...")
print("Blockchain on Node A is now %s blocks long"%len(chain))
Blockchain on Node A is currently 7 blocks long
New Block Received; checking validity...
Blockchain on Node A is now 8 blocks long
결론 및 확장
지금까지 블록을 생성하기 위한 거래내역 규칙들을 설정하는 것 부터 거래내역, 블록, 그리고 전체 체인에 대해 유효성 검사를 하는 것까지 기본적인 블록체인의 아키텍쳐를 만들어 보았습니다. 우리는 다운로드받은 블록체인의 사본으로 시스템 상태를 확인할 수 있고 다른 노드로부터 받은 새로운 블록을 검증할 수 있으며, 우리의 블록을 생성할 수 있습니다.
우리가 만든 시스템 상태는 배포되는 많은 블록체인의 중심이라 할 수 있는 ledger 또는 데이터베이스 입니다. 우리는 이것을 special transaction types 이나 full smart contracts 로 확장할 수 있습니다.
이 포스팅은 네트워크 아키텍쳐, proof-of-work 또는 proof-of-state validation step, consensus mechanism 등 블록체인이 가지고 있는 보안과 관련된 내용을 다루지 않았습니다. 공개키 암호기술, 프라이버시, verification steps 또한 다루지 않았습니다. 해당 내용을 나중에 올리도록 하겠습니다.
- 끝 -
'정보보안' 카테고리의 다른 글
파이썬으로 나만의 블록체인 만들기 #3 (0) | 2017.11.16 |
---|---|
파이썬으로 나만의 블록체인 만들기 #2 (0) | 2017.11.15 |
파이썬으로 나만의 블록체인 만들기 #1 (0) | 2017.11.14 |
OLE 파일 구조의 이해 (0) | 2012.09.11 |
정보보안? 정보보호? (0) | 2011.08.08 |