블록체인 기술

블록체인 기술

1. 블록체인 기술 기본개념

1.1 블록체인 네트워크 유형

구분퍼블릭 블록체인
(Public Blockchain)
프라이빗 블록체인
(Private Blockchain)
컨소시엄 블록체인
(Consortium Blockchain)
관리자모든 거래 참여자한 중앙 기관이 모든 권한 보유컨소시엄에 소속된 참여자
거버넌스한번 정해진 법칙을 바꾸기
매우 어려움
중앙 기관의 의사결정에 따라 용이하게
법칙을 바꿀 수 있음
컨소시엄 참여자들의 합의에
따라 법칙을 바꿀 수 있음
거래속도네트워크 확장이 어렵고
거래 속도가 느림
네트워크 확장이 매우 쉽고
거래 속도가 빠름
네트워크 확장이 쉽고
거래 속도가 빠름
데이터 접근누구나 접근 가능허가 받은 사용자만 접근 가능허가 받은 사용자만 접근 가능
식별성익명성식별 가능식별 가능

세계은행그룹(World Bank Group)의 블록체인 구분

세계은행그룹의 블록체인 구분

1.2 분산원장기술

분산원장기술(DLT; Distributed Ledger Technology)거래 정보를 기록한 원장을 특정 기관의 중앙화된 서버가 아닌 분산화된 네트워크에서 참여자들이 공동으로 기록 및 관리하는 기술로 공유원장이라고 불리기도 함.

중앙집중원장(Centralized Ledger)의 비용문제, 시간문제, 보안문제를 해결.

분산원장기술의 장점은 중앙 집중형 방식에 비해 높은 효율성, 시스템 안정성, 보안성, 투명성

분상원장기술의 장점으로 인해, 중앙기관(은행 등)으로부터 벗어난 개인과 개인이 비용, 시간, 보안 문제없이 직접 거래할 수 있음.

1.3 트랜잭션

블록체인에서의 트랜잭션상호작용 및 작업 수행의 논리적 단위. 블록체인 상의 모든 활동은 트랜잭션을 통해 이루어지고, 추상적인 관점에서 트랜잭션은 블록체인의 상태(State) 변화를 야기하는 일련의 작업을 내포하고 있음.

ACID

데이터베이스 내에서 일어나는 하나의 트랜잭션(transaction)의 안전성을 보장하기 위해 필요한 성질

Atomicity(원자성) : 하나의 트랜잭션에 속해있는 모든 작업이 전부 성공하거나 전부 실패해서 결과를 예측할 수 있어야 한다.

Consistency(일관성) : 하나의 트랜잭션 이전과 이후, 데이터베이스의 상태는 이전과 같이 유효해야 한다.

Isolation(격리성, 고립성) : 모든 트랜잭션은 다른 트랜잭션으로부터 독립되어야 한다.

Durability(지속성) : 만약 런타임 오류나 시스템 오류가 발생하더라도, 해당 기록은 영구적이어야 한다

1.3.1 비트코인 트랜잭션 구조

필드설명
버전 번호채굴자와 노드가 트랜잭션 처리에 사용할 규칙을 지정하는데 사용
입력 카운터트랜잭션에 포함된 입력의 개수
입력 리스트블록의 첫 트랜잭션은 코인베이스 트랜잭션(Coinbase Transaction). 입력 리스트에는 하나 이상의
트랜잭션 입력이 포함
출력 카운터출력의 개수를 나타내는 양의 정수
출력 리스트트랜잭션에 포함된 출력
로크(Lock)
시간
트랜잭션이 유효해지는 가장 빠른 시간을 정의하는 필드

1.3.2 이더리움 트랜잭션 구조

필드설명
논스(Nonce)발신 EOA에 의해 발행되어 메시지 재사용을 방지하는데 사용되는 일련번호
가스 가격(Gas Price)발신자가 지급하는 가스의 가격
가스 한도(Gas Limit)이 트랜잭션을 위해 구입할 가스의 최대량
수신자(Recipient)목적지 이더리움의 주소
값(Value)목적지에 보낼 이더의 양
데이터(Data)가변 길이 바이너리 데이터 페이로드
v, r, sEOA의 ECDSA 디지털 서명의 세가지 구성 요소

이더리움 트랜잭션 논스(Nonce)의 특징

  • 거래(Transaction)를 전송시 논스는 1씩 증가한다.
  • 논스는 계정에서 유일하며, 동일한 논스가 존재 하지않는다.

비트코인과 이더리움 논스(Nonce)의 유무 차이는 이중지불(Double Spending)의 방지를 위해서이다.

1.4 노드(Node)

P2P로 연결되어 블록 체인 네트워크에 연결된 모든 블록 정보를 가지는 각각의 서버노드(Node)라고 한다.

노드의 종류

  • 풀 노드 : 모든 기능을 다 가지고 있는 노드
  • 라이트 노드 : 모든 블록정보의 원본을 가지고 있지 않고 일종의 요약본 즉 헤더정보만 가지고 있는 노드

1.5 채굴(Mining)

채굴(Mining)이란, 암호화폐의 거래내역을 기록한 블록을 생성하고 그 대가로 암호화폐를 얻는 행위

채굴(Mining)이 필요한 이유
블록체인 네트워크를 유지시키기 위해 필요.
거래 내역을 기록하고 기록된 거래내역을 블록에 담아 사용자들에게 전파하는 역할을 수행하고, 추가적으로 전파된 블록이 진짜인지 거짓인지에 대한 검증을 수행

2. 블록체인의 구성요소

2.1 합의 알고리즘

다수의 참여자들이 통일된 의사결정을 하기 위해 사용하는 알고리즘

2.1.1 작업 증명(PoW. Proof of Work)

작업 증명 합의 메커니즘은 네트워크에서 수용할 값을 제안하기 전에 충분한 컴퓨팅 자원을 소모했다는 증명

2.1.2 지분 증명(PoS. Proof of Stake)

지분 증명 알고리즘은 노드 또는 사용자가 시스템에 충분한 지분을 갖고 있다는 증명

2.1.3 위임 지분 증명(DPoS. Delegated Proof of Stake)

시스템의 지분을 가진 각 노드는 투표를 통해 트랜잭션의 유효성 검사를 다른 노드에 위임하여 증명

2.1.4 프랙티컬 비잔틴 장애 허용(PBFT. Practical Byzantine Fault Tolerance)

프랙티컬 비잔틴 장애 허용(PBFT, Practical Byzantine Fault Tolerance)은 네오, 질리카, 하이퍼레저, R3, ITC, 텐더민트 등에서 사용하는 합의 알고리즘. 여러 노드로 구성된 네트워크에서 악의적 공격을 방어하기 위해 만들어졌다.

2.1.5 합의 알고리즘의 종류와 장단점

체인 공개 유형합의 방식설명장점단점사용 코인
퍼블릭
비허가형
공개형
작업 증명
PoW
각 노드의 연산 능력을 증명하여 블록 생성.
높은 컴퓨팅 파워를 가진 노드가 블록을 생성할 확률이 높음.
오랫동안 사용되며 안전성이 검증되었지만 단점도 많이 도출.
오랫동안 검증됨51% Attack
완결성 문제
느린 트랜잭션
에너지 낭비
비트코인
라이트코인
 지분 증명
PoS
소유 지분 양에 비례하여 블록 생성 권한을 높은 확률로 부여 받음.
많은 지분을 가진 노드가 블록을 생성할 확률 높음.
이론적으로 우수하지만 실제 대규모 환경에서 검증 사례가 부족.
51% Attack 내성
빠른 트랜잭션
에너지 낭비 적음
완결성 문제
검증 부족
퀀텀
네오
스트라디스
 위임 지분 증명
DPoS
일부 위임된 Validator끼리 PoS 수행 트랜잭션 속도가 더 빠름.
신뢰도는 Validator의 신뢰도에 종속.
빠른 트랜잭션
에너지 낭비 적음
완전성 문제 검증 부족
탈중앙성 부족
보안 취약
스팀
이오스
아크
라이즈
 경과 시간 증명
PoET
경쟁적 연산으로 낭비되는 에너지를 줄이면서 작업 증명과 유사 효과.
하이퍼레저 쏘투스 레이크(Sawtooth Lake)에서 제안.
인텔 SGX을 기반으로 블록을 생성하는 리더를 랜덤으로 선정.
검증된 방법의 개선
에너지 낭비 적음
특정 HW 종속쏘투스
프라이빗
허가형
컨소시엄
PBTF참가자 1명이 프라이머리(리더)가 되어 모든 참가자에게 요청 송신.
그 요청에 대한 결과를 집계한 뒤 다수의 값을 사용해 블록을 확정.
각 노드는 브로드캐스트 된 명령을 받게 되면 모든 노드에 회신.
각 노드는 명령을 일정 수 이상 수신하면 명령을 실행하고 블록을 등록.
완결성 문제 해결
빠른 트랜잭션
참여자 사전 파악 필요
참가자 증가 시
성능 하락
페브릭
 권한 증명
PoA
트랜잭션 및 블록의 Validator라고 승인된 계정에 의해 유효성 검사.
Validator의 권리를 얻으므로 그들이 얻은 지위를 유지하고자 함.
자신의 신원에 부정적 평판이 생기길 원치 않도록 노력할 거라 가정.
   
 PAXOS트랜잭션 및 블록의 Validator라고 승인된 계정에 의해 유효성 검사.
Validator가 될 수 있는 권리를 얻으므로 그들이 얻은 지위를 유지하고자 함.
자신의 신원에 부정적인 평판이 생기길 원치 않도록 노력할 것이라 가정.
   
 RAFT리더를 선정한 후 시스템의 모든 변화를 리더를 통해 결정.
신뢰된 네트워크에서만 사용.
 리더의 조작 가능
BTF 보장하지 않음
 
 SieveIBM에서 고안한 PBFT 확장 알고리즘.
실행결과 전송과 집계 결과 전송으로 흐름이 나뉨.
   

2.2 지갑과 어카운트

2.2.1 지갑(Wallet)

비트코인, 이더리움 등의 암호화폐를 보관할 수 있는 계정

지갑의 종류 데스크탑(PC)지갑 / 모바일 지갑 / 하드웨어 지갑 / 웹 지갑

지갑의 구조 주소(공개 키. Public Key)와 암호(개인 키. Private Key)로 구성

어카운트(Account) 이더리움 주소(Address)와 개인키(Private Key)의 조합을 어카운트(Account)이라고 합니다.

이더리움의 2가지 유형 계정 외부 소유 계정(EOA) 컨트랙트 계정(CA)

어카운트의 장단점 장점 : 단순성, 효율성 단점 : 이중 지불

2.2.2 UTXO(Unspent Transaction Outputs)

UTXO(Unspent Transaction Outputs)는 미사용 트랜잭션 출력값(미지출 거래 출력)을 뜻함.
코인이 지갑(Wallet)에 저장되는 것이 아니라, UTXO(Unspent Transaction Outputs)에 저장.

UTXO의 장단점 장점 : 이중 지불 방지, 잔고의 증명
단점 : UTXO가 너무 과하게 생성이 될 경우 불필요한 수수료를 내야 하는 단점

비트코인과 이더리움 비교 화폐의 역할에 충실해야 한다면 비트코인의 UTXO가 한번 사용되고 사라져 익명성과 보안성이 강하기 때문에 더 훌륭하지만, dApp과 같이 다양한 기능을 구현하고 싶다면 스마트 컨트랙트를 활용할 수 있는 이더리움의 어카운트가 좋다.

3. 비트코인과 이더리움

3.1 비트코인 코어(Bitcoin Core)

비트코인 코어(Bitcoin Core)는 비트코인의 레퍼런스 클라이언트이다.

개발자들은 비트코인 코어의 변경사항을 통해 기반이 되는 비트코인 프로토콜을 변경하게 되고, 비트코인 코어는 풀노드를 돌리는 것을 전제로 한 소프트웨어이므로 100GB가 넘는 블록체인 데이터를 다운로드 받아야 제대로 사용 가능하다.

비트코인은 다양한 언어로 개발되었고, C++이 주 언어.

비트코인 개발 언어의 비중 비트코인 개발 언어의 비중

3.2 이더리움 클라이언트(Ethereum Client)

이더리움 클라이언트(Ethereum Client)는 이더리움 블록체인 네트워크를 구성하는 개별 클라이언트 노드(Node)이기 때문에 중앙집중형 서버 프로그램이 따로 존재하지 않으며, 오로지 클라이언트 프로그램만 존재하게 된다.

Geth
Geth는 이더리움 재단(Ethereum Foundation)이 제공하는 공식 클라이언트 소프트웨어로써, Go언어로 개발.

Parity
패리티(Parity)는 이더리움 프로토콜의 또 다른 구현체이며, 러스트(Rust) 프로그래밍 언어로 개발.

3.3 블록체인의 거버넌스(Governance)

블록체인 네트워크를 유지하기 위해서는 구성원들간의 이해관계 조정하는 커뮤니티.

3.4 BIP / EIP / ERC / KIP

BIP(Bitcoin Improvement Proposal) : 비트코인의 개선 제안을 의미
EIP(Ethereum Improvement Proposal) : 이더리움의 개선 제안을 의미
ERC(Ethereum Request for Comment) : 이더리움의 표준이 될 만한 내용
KIP(Klaytn Improvement Proposals) : 클레이튼의 개선 제안을 의미

# 질문에 답하기

Q1. 퍼블릭 블록체인, 프라이빗 블록체인, 컨소시움 블록체인의 차이점은 무엇인가요? 또 하이브리드 블록체인이라고 하는것은 무엇인가요?

A1.

Q2. 프라이빗 블록체인인 하이퍼렛져 패브릭에서는 왜 UTXO를 사용할까요?

A2.

Q3. 하이퍼레저와 블록체인의 차이는 무엇인가요?

A3.

Q4. 왜 블록체인 네트워크들이 서로 다른 합의 알고리즘을 사용하나요?

A4.

Q5. 일반적인 원장과 블록체인 원장의 차이점은?

A5.

Q6. 이더리움에서 트랜잭션 Nonce가 필수인 이유는? 비트코인은 왜 트랜잭션 Nonce가 없나요?

A6.

Q7. 비트코인에서 트랜잭션 검증은 어떻게 이루어 지나요?

A7.

Q8. 이더리움에서 트랜잭션 검증은 어떻게 이루어 지나요?

A8.

Q9. PoW와 PoS의 가장 큰 차이점은 무엇이라고 생각하나요?

A9.

Q10. DPoS는 무엇인가요?

A10.

Q11. PBFT는 무엇인가요?

A11.

Q12. 이더리움에서 주소를 Public Key 자체가 아니라, 이더리움 경우 20byte로 줄여서 사용하는 이유는 무엇인가요 장점은? 줄여진 주소를 가지고 서명을 어떻게 확인 하나요?

A12.

Q13. UTXO 기반의 블록체인과 어카운트 기반의 블록체인의 차이점과 장단점은 무엇인가요?

A13.

Q14. 비트코인에서 UTXO는 무엇인가요?

A14.

Q15. 비트코인은 어떤 언어로 이루어져 있나요? 이더리움은 어떤 언어로 이루어져 있나요?

A15.

Q16. 비트코인 블록체인과 이더리움 블록체인의 차이는 무엇인가요?

A16.




https://www.codestates.com/


© 2022. Byungchan Park. All rights reserved.