CS/블록체인
[블록체인] 블록체인 구조와 네트워크
yo0oni
2023. 10. 5. 10:24
수업 내용을 정리한 글입니다.
잘못된 내용은 알려주시면 감사하겠습니다.
블록체인 구조
블록체인을 구성하는 블록의 구조
- 블록은 헤더와 바디로 구성되어 있다.
- 블록의 식별자는 블록의 해시 값
블록체인이란
- 각 블록들의 식별자인 블록 해시값으로 연결되어 만들어진 블록 집합체
- 이때 해시 값은 블록 헤더의 정보를 SHA-256으로 2번 해싱한 32 바이트 값 (해시 알고리즘)
블록 바디 정보
- 블록 바디는 트랜잭션 카운터와 트랜잭션 집합으로 구성
구성 | 설명 |
Transaction Count | 블록 바디에 기록된 트랜잭션의 개수 |
Transaction | 첫 번째 나타나는 코인베이스 트랜잭션 거래 내용 이 트랜잭션은 채굴자에 의해 선택되어 블록체인에 포함되어야 한다. |
블록 헤더 정보
- 블록 헤더는 앞에 연결된 블록의 해시 값에 대한 정보를 가지고 있다.
- 즉, 앞 블록의 해시 값으로 블록들이 연결된다.
구성 요소 | Byte | 설명 |
Block Version | 4 | 블록을 생성한 소프트웨어 프로토콜 버전 |
Merkle root hash | 32 | 해시 트리로서, 모든 트랜잭션 해시 값으로 머클 트리의 루트 노트 값 |
Timestamp | 4 | 해당 블록의 채굴 시간 |
Bits | 4 | 해시 값의 난이도 조절을 위한 수 |
Nonce | 4 | 블록 해시 값을 구할 때 사용되는 입력 값 |
Previous hash | 32 | 이전 블록의 해시 값 (블록 간의 연결 역할) |
블록 헤더 - Merkle root hash
- 블록에 있는 모든 트랜잭션 데이터의 해시 값을 이진트리로 요약한 것
- 특정 트랜잭션의 일부 내용이 바뀌면 머클 루트의 값도 바뀐다.
블록 헤더 - Preious hash
- 이전 블록의 해시 값
- 블록 헤더가 이전 블록의 해시 값을 가짐으로써 블록들을 체인으로 연결 가능
→ 블록 안에 있는 트랜잭션의 값이 바뀌면, 블록 해시 값 역시 바뀌기 때문에 블록을 찾을 수 없게 되어 연결이 끊어진다. - 한 번 체인으로 연결된 블록들은 그 내용을 바꿀 수 없어 데이터가 안전하게 유지된다.
블록 헤더 - Bits & Nonce
- Bits는 채굴 난이도에 따라 결정되는 목푯 값
- 임의의 Nonce 값을 헤더에 넣은 상태에서 헤더의 해시를 계산할 경우, 이 해시 값이 Bits 값보다 작아야 채굴 성공
→ 해시 값은 반드시!!! Bits 값보다 작아야 한다. - Nonce는 채굴에 성공하기 위해 반복적으로 바꿔서 대입하는 임의의 값
- 비트코인의 경우 채굴 시간이 10분 정도 걸리도록 Bits 값이 조절된다.
비트코인 채굴 시 풀어야 할 문제
- 채굴이란, 암호화폐의 거래내역을 기록한 블록을 생성하고, 그 대가로 암호화폐를 얻는 행위
- 연산 문제를 풀어 블록 해시 값을 먼저 발견해야 블록을 생성할 수 있다.
- 만약 두 명 이상의 사람이 블록을 동시에 발견할 경우, 기존 블록의 길이가 긴 사람이 생성하게 된다.
블록체인 네트워크
P2P(Peer to Peer) 네트워크
- 중앙 서버 없이 각 노드들이 직접 통신하는 구조 (탈중앙화)
- 모든 노드는 클라이언트 기능과 서버 기능을 모두 수행
클라이언트 서버 구조 동작 방식
- 클라이언트 서버 구조는 중앙화된 컴퓨팅 방식을 사용
- 중앙 서버가 필수며, 모든 클라이언트는 서비스 사용을 위해 중앙 서버에 연결
- 중앙 서버 오류로 인해 전체 장애 발생 가능성이 높아 대비가 필요
P2P 네트워크 장점
- 일부 노드가 고장 나더라도, 전체 시스템이 멈출 위험이 낮아 안정적으로 운영
- 노트들 자원과 네트워크 회선을 이용하여 부하를 분산시켜 높은 확장성 제공
- 일부 노드만 특별한 역할을 주지 않기 때문에 단일 장애점이 없음
P2P 네트워크 단점
- 노드들 간의 효율적인 통신 경로 설정이 필요
- 노드 수가 늘어나면 버킷 릴레이 양이 많아져 성능 저하
- 네트워크 구간 별 전송 시간 차이로 인한 노드들 간의 정보 불일치 발생 가능성
- 문제가 발생해도 시스템을 쉽게 중지시킬 수 없음
P2P 네트워크 설계
퓨어 P2P (No 인덱스 서버)
- 인덱스 서버 없이 자신이 원하는 데이터를 검색하는 기능도 노드 자율적으로 수행
하이브리드 P2P (Yes 인덱스 서버)
- 노드 탐색을 위해 인덱스 서버를 사용
1. 퓨어 P2P 네트워크 특성
- 모든 노드가 동등하게 연결
- 확장성과 내결함성은 높지만, 시스템 전반의 설계와 관리가 어려움
- 다른 노드들을 탐색할 수 있는 알고리즘 요구
- ex) 비트코인, 이더리움
2. 하이브리드 P2P 네트워크 특성
- 노드 정보들이 인덱스 서버에 기록
- 노드의 검색 요청은 클라이언트 서버 형태로, 인덱스 서버에서 이루어짐
→ 서버에 의존하기 때문에 순수한 P2P 방식이라고 보기는 어려움 - 클라이언트 서버 구조처럼 설계와 관리가 용이하지만 확장성이 떨어짐
네트워크 전파 방식
네트워크의 모든 노드에 데이터를 보낼 수 있는 방법
1. Broadcast
- 데이터를 수신한 특정 노드들이 모든 노드들에게 데이터를 전송
- 트래픽 증가로 인한 대역폭 낭비
2. Multicast
- 데이터를 수신한 특정 노드들이 선택한 노드 그룹에게 데이터를 전송
- 가장 효과적인 방법
- 가십(Gossip) 프로토콜
3. Unicast
- 개별적으로 각 노드에게 전공
- 시간이 많이 걸려 비효율적
가십 프로토콜
- 노드들 간의 데이터를 공유하기 위한 프로토콜
- 소문이 퍼지는 것처럼 결국 모든 노드에게 데이터가 전달되는 구조
- 전체 노드에 메시지를 확산하는데 필요한 시간복잡도 = O(log N)
노드
- (네트워크) 연결 포인트 혹은 데이터 전송의 종점
- (블록체인) 네트워크에 참여하는 개개인의 서버
노드의 기능
Wallet 지갑
- 사용자의 개인키와 공개키를 관리하고 거래에 사용되는 주소를 생성하는 기능
Miner 채굴
- 합의 알고리즘을 사용하여 유효한 거래를 포함한 새로운 블록을 생성하는 기능
Full Blockchain
- 블록체인 데이터베이스
- 제네시스 블록부터 가장 최신의 블록까지 완전한 복사본을 저장
Network Routing
- P2P 네트워크 전송 기능을 담당
- 거래와 블록을 검증하고 전파
노드의 종류
Reference Client
- 완전한 형태의 노드
Full Blockchain Node
- 네트워크 라우팅 기능과 모든 블록체인 데이터를 가진 형태
Solo Miner
- 채굴에 특화된 형태의 노드 (지갑 기능 제외)
Lightweight wallet
- 거래와 유효성 검증만 가능한 스마트폰에 설치된 지갑 형태 노드
노드 | Wallet | Miner | Full Blockchain | Network Routing |
Reference Client | O | O | O | O |
Full Blockchain Node | O | O | ||
Solo Miner | O | O | O | |
Lightweight wallet | O | O |
블록체인 네트워크 유형
퍼블릭 블록체인
- 누구나 거래를 생성하고 블록을 검증하며, 거래 내역을 확인할 수 있는 개방형
- 퓨어 P2P
프라이빗 블록체인
- 허가된 조직이나 개인만 참여할 수 있는 폐쇄형
- 서버가 존재하는 하이브리드 P2P
컨소시엄 블록체인
- 같은 목적을 갖는 여러 기관이 컨소시엄을 구성하여 공정성과 확장성을 보안
- ex) 금융 기관
1. 퍼블릭 블록체인
- 참여자의 제한이 없음
- 합의과정에 누구나 참여할 수 있으며, 참여자의 합의에 따라 거래가 승인
- 암호화폐를 인센티브로 지급하여 네트워크 참여의 동기 부여 및 네트워크 유지
- 단, 참여자 간 상호 검증을 거치기 때문에 거래 속도가 느림
- ex) 비트코인, 이더리움
2. 프라이빗 블록체인
- 한 기업이 모든 통제 권한을 가지고 있는 기업형 블록체인
- 중앙관리 방식의 문제점인 보안성과 프로세스 처리의 한계 등을 해결하기 위한 목적
- 처리속도가 빠르나, 중앙결정화 되어 있기 때문에 공정성과 투명성이 떨어질 수 있음
- 블록체인의 순수한 특성 "누구나 참여할 수 있다"가 무너지지만, 보안성이 뛰어남
3. 컨소시엄 블록체인
- 퍼블릭 블록체인과 프라이빗 블록체인의 중간 형태
- 여러 기관 또는 기업이 하나의 그룹으로 연합하여 네트워크를 구성하는 구조
- 여러 기관이 하나의 컨소시엄을 구성하기 때문에 공정성과 확장성을 확보 (private 블록체인 단점 극복)