푸르미르

블록체인 구조와 P2P네트워크 본문

Block Chain

블록체인 구조와 P2P네트워크

((•_•)) 2021. 2. 17. 19:40

비트코인 구현 방법

 

 전자화폐의 교환이란 결국 이전 소유자에게서 다른 소유자로 명의를 변경하는 거래

온라인상에서 이러한 거래를 실현하기 위해서는 이전 소유자의 본인 보증과 부인 방지를 구현해야하기 때문에

전자 서명이라는 방법을 사용한다.

하지만 전자화폐는 과거에 이중으로 사용된 것이 아닌지 증명하는 것이 어렵다.

비트코인의 모든 트랜잭션 이력을 블록체인이라는 대장에 기록하고 네트워크에서 공유한다. 과거의 모든 이력을 검증할 수 있게 해서 이중 사용 문제를 해결하였다.

변조 위험을 막기 위해 거래를 블록이라는 단위로 결합해 앞의 블록 정보를 포함해 해시로 만들어 블가역 데이터를 만든다. 블록은 앞의 블록 정보를 포함하기 때문에 결과적으로 사슬 모양의 데이터를 만들게 된다. 이것이 블록체인이다.

(어떤 한 거래를 위조했다면 그 블록의 해시가 변경되기 때문에 보수 계산을 다시 해야한다. 해시가 변경되면 다음 블록에 있는 이전블록의 해시값도 변경되며 계속된 보수계산을 요구하게 된다.)

블록체인 전체 위조로 조작할 수 있는 가능성을 없애기 위해, 비트코인은 새로운 블록을 만들기 위해 계산량이 큰 문제를 푸는 방식을 도입하고 있다. 

 

 

비잔티움 장군 문제

 

전자 화폐 시스템을 P2P네트워크에서 실현하는 경우 발생이 가능하다. 이 문제는 악의적인 참가자에 대한 부정, 변조로 누구나 참가할 수 있는 네트워크에는 악의적인 참가자가 존재할 가능성이 있는데, 의도적으로 부정거래를 만들어내거나 거래 결과를 자신에게 유리하게 변조할 가능성이 있다. 이 문제는 P2P같은 분산형 네트워크 시스템을 구축할 때 피할 수 없는 문제였다. 비트코인에서는 블록체인, 전자서명, 해답 인센티브 등을 통해 이 문제에 대한 해결책을 제시했다.

 

 

블록체인 기술 구성 요소

 

P2P네트워크: 컴퓨터끼리 같은 목적으로 해결해 네트워크를 형성하는 방식이다. 어떤 컴퓨터도 같은 처리를 할 수 있기 때문에 한대가 정지해도 시스템 전체에는 영향을 주지 않는 특징을 가진다.

 

합의 알고리즘: P2P네트워크와 같은 분산형 네트워크에서 합의 형성을 수행하기 위한 알고리즘이다. 블록체인을 여러 노드에 공유하기 위한 가장 중요한 구조라고 할 수 있다.

 

전자서명, 해시함수: 트랜잭션을 발생시킨 사람의 정당성을 보증하거나 거래, 블록체인 변조방지, 암호화 등 보안과 관련있는 기능이다.

 

스마트계약: 블록체인 네트워크에서 동작하는 프로그램을 가리킨다. 블록체인 기반 기술 중 가장 자유도가 높은 프로그램을 만들 수 있다.

 

 

블록체인 기반 기술 비교

 

 

P2P 네트워크

 

Pear-to-Pear의 약자로 대등한 관계의 컴퓨터 그룹이 직접 통신을 수행하는 중심이 없는 분산형 네트워크를 의미한다.

각 컴퓨터를 노드라고 하는데, 서로의 역할을 동시에 담당한다. 각 노드는 다른 노드의 통신 경로를 설정하고 상호간에 서비스를 제공하는 네트워크를 구축한다. 이 유형의 네트워크는 서버를 준비할 필요가 없고 참가하는 각 노드의 자원과 네트워크 회선을 이용해 부하를 분산시키며 운영한다. 그래서 노드가 증가해도 서비스를 유지할 수 있는 높은 확장성을 가진다. 퓨어P2P, 하이브리드P2P가 있다.

하이브리드P2P는 각 노드가 보유한 데이터의 정보가 인덱스 서버에 기록된다. 노드는 자신이요구하는 데이터의 소유자를 인덱스 서버에 질의하고 해당 데이터를 가진 노드 정보를 받은 뒤 직접 노드에 연결해 데이터를 교환한다. 각 노드가 직접 데이터를 주고 받는 것은 P2P형태지만 인덱스 서버에 요청하는 부분은 클라이언트 서버형 시스템의 형태이다.

퓨어P2P는 인덱스 서버 없이 자신이 원하는 데이터를 검색하는 기능도 노드 그룹에 의해 자율적으로 이루어진다. 데이터 검색은 P2P네트워크 내의 노드 사이에서 메세지 전송을 통해 이루어진다. 

퓨어P2P형 시스템은 중앙서버 없이 노드 탐색을 실현 하기 위해 응용 프로그램 수준의 네트워크를 구축해야한다. 이것을 오버레이 네트워크라고 한다.  오버레이 네트워크는 노드의 검색 방법에 따라 비구조화 오버레이와 구조화 오버레이로 나뉜다.

비구조화 오버레이는 각 노드가 인접 노드를 선택할 때 제약이 없도록 설계한 오버레이 네트워크이다.  노드 탐색은 메세지를 인접 노드에 차례로 전파해 확산시키는 방법을 사용한다. 문제점이 있는데 목적 노드에 메세지가 전달되는 것을 보장할 수 없고, 노드 수가 증가하면 네트워크에 메세지가 너무 많아지는 확장성 문제가 발생하는 것이다. 이러한 문제점을 해결하기 위해 슈퍼노드라는 개념을 도입하여 일부 노드를 다른 노드보다 상위 노드로 만들어 다수의 일반노드를 슈퍼노드 밑에 놓고 메세지의 전파는 슈퍼노드끼리 한다.

구조화 오버레이는 각 노드별로 연결할 상대가 미리 정해져 있다. 각 노드에는 ID가 할당되고 그 ID에 따라 상대가 결정된다. 그 결과 링크형, 트리형 같은 구조를 지닌 오버레이 네트워크가 구축된다. 메세지 도착 가능성 및 확장성이 높다는 장점이 있다. 하지만 ID등을 기반으로 메세지를 전송하기 때문에 유연한 탐색을 할 수 없다.

 

Bitcoin Core와 이더리움은 모든 노드가 같은 역할을 가지고 동등한 네트워크를 형성하기 때문에 퓨어P2P로 분류할 수 있으며 제약이 없기 때문에 비구조화 오버레이라고 할 수 있다. Hyperledger Fabric은 노드에 따라 역할이 다르다는 점에서 슈퍼노드의 개념을 도입한 비구조화 오버레이라고 볼 수 있으며, 전용 멤버십 서버를 가지고 있따는 점에서 하이브리드 P2P라고도 할 수 있다.

 

 

P2P네트워크상의 데이터(블록 송수신)을 살펴보자.

Bitcoin Core는 정보 본체를 송신할 때 그 해시값을 inv메시지로 상대방에게 보내주고 수신해야할 때에는 getdata메세지를 보내 정보의 본체를 요구하는 특징이 있다. 

이더리움은 블록체인의 데이터 자체가 아니라 그 해시를 모든 노드가 공유하는 공간에 체인으로 저장해 워크 풀로 이용한다. 이 워크풀에서 자기 노드에게 부족한 데이터를 찾고, 해시를 이용해 블록을 요청하거나 획득한다.

Hyperledger Fabric은 노드간의 통신에 gRPC(구글이 최초로 개발한 오픈 소스 원격 프로시저 호출 시스템)를 사용하여 이를 통해 양방향 스트림 기반 메시징을 할 수 있다. 

 

[출처]www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791158390662

'Block Chain' 카테고리의 다른 글

사이버 위협 환경과 보안 과제  (0) 2021.03.06
전자서명과 해시, 블록체인 기반 기술  (0) 2021.02.25
합의 알고리즘  (0) 2021.02.25
블록체인 응용  (0) 2021.02.01
블록체인 == 비트코인?  (3) 2021.01.23