SlideShare a Scribd company logo
블록체인(Block Chain)이란?
블록체인의 구성요소, 작동원리, 메커니즘의 이해
2017년 9월, 최용진
마인드맵
블록체인의 정의
P2P 네트워크 상에 노드의 수만큼 복제되어 분산 저장되어 있는 (공개) 거래 장부
P2P 네트워크라는 것이 네트워크 상의 모든 노
드가 직접 연결되어 있다는 것을 의미하지 않음.
서버/클라이언트 구조가 아니라 각 노드가 수평
적으로 네트워킹을 한다는 의미임. 따라서 필연
적으로 “라우팅”이 필요하게 됨.
가장 중요!!! ★★★★★
비트코인, 이더리움 등 대부분의 가상화폐 시스
템에서는 “공개” 방식이나 블록체인 기술이 진화
함에 따라 Public이 아닌 Private, Consortium
등의 형태가 나옴. 즉, 공개 블록체인이 아닐 수
있음.
P2P 네트워크 상에 연결되어 있는 컴퓨터를 말
함. 해당 노드가 어떤 역할을 하는지 (즉, 어떤 프
로그램이 깔려서 작동 중인지)에 따라 노드의 성
격과 명칭이 달라짐.
기본적으로 거래 내역이 담긴 동일한 DB를 각
노드가 각각 저장하고 있음. 단, 모든 노드가 Full
DB를 저장하고 있지는 않음.
거래 기록이 담긴 DB (예: 비트코인의 경우, “A
가 $10를 B에게 송금”  이러한 기록이 저장 됨)
등장 배경
블록체인 ≠ 비트코인
2009년 사토시 나카모토 (Satoshi Nakamoto, 가명의 개인 또는 단체)에 의해
블록체인의 근간 기술(거래 내역 저장을 위한 분산 DB)로서 개발되었음.
블록체인은 비트코인 시스템을 구성하고 있는 데이터 저장 기술임. 기술의 특징
(P2P, Hashing, 합의 알고리즘 등)으로 인해 해킹, 조작이 어려운 구조라는 것
이지 블록체인 자체가 인증기술은 아님. 따라서 가상화폐는 물론 인증 시스템,
금융, 자산거래, IoT 등에도 적용될 수 있음.
블록체인 구성요소 및 기술
구성요소 설명 비고
P2P 네트워크
블록체인 노드를 연결하는 Peer to Peer 방식의 수평적 네트워
크
모든 노드가 직접 연결되어 있는 것이 아니므로 노드 간 “라우
팅” 필요
노드
P2P 네트워크에 연결되어 있는 컴퓨터로서 실행하는 소프트웨
어의 종류 및 연산 능력에 따라 라우팅 노드, 풀 노드, DB노드,
경량 노드 등으로 구분됨
노드의 수가 많아질수록 해당 블록체인 네트워크의 연산 능력
이 높아지고 비례하여 해킹 가능성이 낮아짐
블록체인DB
특정 블록체인 네트워크가 시작된 이래 저장된 모든 거래 기록
의 검증 정보 또는 기록 전부를 저장하고 있는 데이터베이스
비트코인의 경우 2009년 부터의 모든 거래 기록을 저장하고
있는 DB의 크기가 130GB에 달하며 (2017년 9월 기준), 기
하급수적으로 크기가 커지고 있음
OSS
오픈 소스를 통해 누구나 생태계 구축, 운영에 참여, 기여할 수
있음
Private, Consortium 형태의 블록체인 네트워크에는 허가된
사람만 네트워크에 참여할 수 있음
기술 설명 비고
암호화 기술 거래 주체 식별, 전자서명 등에 필요한 암호화 기술 개인키, 공개키 기반 전자서명(ECDSA)
Hashing 알고리즘
거래 ID 생성, 블록에 저장된 데이터의 유효성 검증, 작업 증명
등에 사용
SHA256
합의 알고리즘
P2P 네트워크 상에 노드들이 각각의 장부를 저장하고 있으므로
누가 기록하는 것을 Valid 한 기록으로 볼 것이냐에 대한 노드
간 합의 방식
작업 증명 (PoW, Proof of Work), 자산 증명 (Proof of
Stake) 등
OSS
오픈 소스를 통해 누구나 생태계 구축, 운영에 참여, 기여할 수
있음
블록체인 Core, 서비스 등을 누구나 개발, 배포 – GitHub 등
블록 블록체인 블록체인 네트워크
• 블록 정보 = 블록체인마다 다름 (뒤에 나오는 비트코인
예시 참조)
• 이전 블록 ID = 이전 블록 “Header”의 Hash 값 (이전
블록 전체의 Hash 값 아님)
• (거래내역이 담긴) 블록이 새로 만들어지면 기존 블록
들의 연결(블록체인)에 새롭게 추가 연결 됨
• 연결 방식 = 새 블록이 이전 블록의 ID를 갖고 있음
• 블록체인 네트워크를 구성하는 각 노드들은 동일한 블
록체인 DB를 복제하여 각각 저장하고 있음
블록, 블록체인, 블록체인 네트워크?
<Header>
블록 정보
이전 블록 ID
<Body>
거래 기록
$10, A  B
$5, D  Z
$15, B  C
.
.
.
블록 정보 블록 정보
NULL 이전 블록 ID
블록 정보
이전 블록 ID
노드 A
Block A Block B Block C
노드 B
노드 D노드 C
블록 ID 블록 ID
NULL 이전 블록 ID
블록 ID
이전 블록 ID
블록 ID 블록 ID
NULL 이전 블록 ID
블록 ID
이전 블록 ID
블록 ID 블록 ID
NULL 이전 블록 ID
블록 ID
이전 블록 ID
블록 ID 블록 ID
NULL 이전 블록 ID
블록 ID
이전 블록 ID
A B C A B C
A B C A B C
합의 메커니즘은 무엇이고 왜 필요한가?
• 만약 동아리 모임의 회비관리(장부)를 1명에게 맡긴다면 우리는 “가장 믿을 만한 사람”(이하 “총무”)에게 맡길 것이다.
• 이 “가장 믿을 만한 사람”은 정말 믿을 수 있는가? 그를 완벽히 믿지 못하므로 그 사람을 감시할 “감사”를 두기도 한다.
• 금융 거래는 어떠 한가? 위에서 “총무”가 바로 은행이고, “감사”가 금융감독원쯤 되겠다.
• 우리는 은행을 정말 믿는게 아니라 달리 방법이 없기 때문에 (믿을 수 밖에 없기 때문에) 믿는 것은 아닐까?
• 현실 세계에서 은행도 믿지 못하는 사태가 종종 발생한다. - 2016년 9월, 미국 웰스파고 은행의 “유령 계좌 스캔들”
• 다시 돌아와서, “총무”와 “감사”를 둘 것이 아니라 동아리 멤버 전체가 같은 회비관리 장부를 갖고 있고, 입출금이 발생할 때
마다 모두의 장부에 해당 내용을 기입하면 어떨까?  이것이 블록체인의 기본 개념
• 위와 같은 방식은 언뜻 봐도 비효율적인 부분이 있지만 적어도 구성원 간 장부를 조작하기는 매우 어려울 것이다.  이것이
블록체인이 “해킹에 강하다”, “조작이 어렵다”라는 의미이다
• 위와 같은 방식으로 장부가 관리되고 있는 상황에서 신입회원이 들어와서 회비를 낼 경우, 다음 두가지를 생각해보자.
➢ 새로 받은 회비 기록은 어느 장부에 처음 기록할 것인가?  이것이 합의 메커니즘이 필요한 이유
➢ 나머지 회원들은 그 내용을 어떻게 믿고 자기 장부에 그대로 받아 적을 것인가?  이 때, “믿을 만한”에 대한 기준이
필요한데, 대표적인 기준이 “작업증명”과 “자산증명”이다.
✓ 작업증명 (PoW: Proof of Work) = 우리 동아리에서 제일 열심히 활동한 회원의 말에 따르자
✓ 자산증명 (PoS: Proof of Stake) = 우리 동아리에서 제일 지분이 많은 회원의 말을 따르자
합의 메커니즘은 어떻게 작동하나? (비트코인)
• 비트코인이 채택한 합의 메커니즘은 작업증명 방식이며, 그 이름은 “Hashcash”이다.
• 비트코인에서의 작업증명은 대량의 반복적인 Hash 연산 작업을 통해 특정 숫자를 찾는 방식으로 이루어진다.
• 이 숫자를 찾게 되면 새로운 거래기록이 담긴 새 블록을 기존 블록체인에 연결(추가)할 수 있는 권한이 생긴다.
• 이 숫자를 찾으면 작업증명이 완료된 것이고 블록발행 보상 명목으로 12.5BTC(2017년 9월 현재)를 지급받는데 이것이 바로 “채
굴”임
➢ 채굴자는 수고비 외에 본인이 채굴 성공한 블록에 저장되어 있는 거래들에 대한 수수료 또한 지급 받게 됨
➢ 비트코인은 오직 채굴을 통해서만 신규 발행됨
➢ 채굴 성공 시 지급되는 비트코인의 수량은 매 약 21만 블록(약 4년)마다 절반으로 줄어들도록 설계되어 있음
➢ 비트코인의 최대 개수는 2,100만개로 제한되어 있는데, 비트코인 총량이 2,100만개가 되는 시점에 비트코인 신규 발행은 중단됨  수량이
제한되어 있다는 측면에서 종종 금(Gold)에 비유되기도 하며, “채굴”이란 말 또한 이러한 연장선상에서 나온 말임
➢ 비트코인 지급이 중단되면 채굴자들은 어떤 동기에 의해 채굴을 계속할까?  새 블록에 저장된 거래에 대한 수수료를 받게 됨
• 작업증명 = 채굴 = 새 블록을 블록체인에 등록할 수 있는 권한을 획득하기 위해 다른 채굴 노드보다 먼저 특정 숫자를 찾는 행위
• 그렇다면 특정 숫자는 누가 정하는 것인가? 위 “채굴”에 대한 정의도 좀 두루뭉술하지 않나?  누가 정하는 것이 아니라 알고리
즘에 의해 정해지는 값을 찾는 것임. 좀 더 자세한 내용을 알기 위해서는 블록의 구조를 알아야 할 필요가 있음 (다음 페이지 참조)
블록의 구조 (비트코인)
비트코인 블록 구조
비트코인 블록의 헤더 구조
• Bits = Difficulty = 난이도 = 현재 비트코인 네트워크의 연산 능력, 네트워크 속도 등을 고려하여 약 10분 내에 찾을 수 있는 정도
• 블록 헤더의 Hash 값이 난이도에 제시된 값보다 작은 값이 나오게 하는 Nonce 값을 찾는 과정= 새 블록을 블록체인에 등록할 수 있는 권한을 획
득하기 위해 다른 채굴 노드보다 먼저 특정 숫자를 찾는 행위 = 채굴 = 작업증명
작업 증명 (채굴) 절차
시작
Mempool에 쌓인 처리해야 할
트랜잭션 취합 및 블록 생성
블록 헤더의 Nonce 값 증가
블록 헤더 Hashing (BHH)
난이도 < BHH
종료
Y
N
A
B
C
D
A. 거래는 발생했으나 아직 블록체인에 들어가지 못한 거래 내역은 Mempool이라고 하는 저장소에 임시 저장된다. 확
인 대기 중인 트랜잭션의 총 크기를 확인하려면 여기를 클릭
B. 블록의 바디에는 거래내역이 들어가 있으니 건드릴 수 없고, 블록 헤더의 6개 값 중에도 건드릴만한 값이 없으니,
Nonce라는 임시 값을 두고, 그 값을 건드려가면서 난이도(Bits) 목표치에 도달하는 방식을 취하는 것임
C. Nonce 값을 1비트라도 바꾼 후 헤더를 SHA256으로 Hashing – 2017년 9월 22일 현재 비트코인 블록체인의 마지
막 Hash 값  0000000000000000008be44bcfd2f0a72decbad2e57126b9d315154a805088e1
D. 위 Hash 값을 보면 앞에 0이 많이 붙어 있는 것을 볼 수 있는데, 난이도(Bits) 값이 바로 0의 개수, 더 자세히 말하면
Nonce 값을 증가시키고 헤더를 Hashing한 값이 Bits가 정한 값보다는 작아야 한다는 의미이다. 특정 값보다 작아야
하기 때문에 Hash 값의 앞에 0이 많이 붙어 있다.
B  D 작업의 반복이 채굴 과정이다.
1비트만 값을 바꾸고 Hashing을 해도 결과 값의 변화가 심하고 Input 값을 증가시킨다고 해도 Hash 값이 증가
하기만 하는 것은 아닌데, Hash의 결과 값이 특정 값 (Bits) 보다 작은 값을 찾는 것은 말 그대로 노가다이며, 매
우 많은 컴퓨팅 연산과 전력 소비가 필요로 하다. 이러한 비효율적인 면 때문에 PoW 방식에 대한 문제가 이슈
가 되고 있다.
• 이 시간은 앞서 말한 난이도(Bits) 값에 의해 결정된다. 즉, 현재 비트코인 네트워크의 컴퓨팅 파워 (하드웨어 성능, 노드 수 등)를 고려해서 10분만
에 Nonce 값을 찾을 수 있을 정도의 Bits 값을 정하는 것이다.
• 즉, Nonce 값을 5분 만에도 찾을 수 있고 20분이 지나도 못 찾을 수 있는 것이다.
• 난이도(Bits) 목표는 2016개의 블록을 생성하는데 2주가 소요되어야 한다는 것이다. (2016블록*10분=2주)
• 난이도 값을 정하는 로직은 아래와 같으며, 난이도를 조정하는 시점은 매 2016번째 블록마다(약 2주) 이루어진다.
➢ 매 2016번째 블록이 생성된 후, 2016 이전 번째 블록의 생성일로부터 2주가 넘었는가?  Bits 값을 크게 조정해서 난이도 낮춤
➢ 매 2016번째 블록이 생성된 후, 2016 이전 번째 블록의 생성일로부터 2주가 안 넘었는가?  Bit 값을 낮게 조정해서 난이도 올림
➢ 매 2016번째 블록이 생성된 후, 2016 이전 번째 블록의 생성일로부터 딱 2주가 지났으면  Bits 값 유지
10분마다 블록이 추가된다 또는 10분마다 채굴 된다는 말의 의미는?
• 비트코인 창시자인 사토시 나카모토가 그렇게 정한 것이다.
• 엄밀히 말하면 정확히 10분은 아니고, 10분 정도에 하나씩 블록이 생겨났으면 좋겠다는 것이다. (아래 그림은 실제 생성된 블록에 대한 정보)
6분 차이
8분 차이
7분 차이
6번 인증을 통과해야 안전하다는 말은 어떤 의미일까?
• 채굴에 성공하면 (= Bits에서 제시한 난이도 값보다 낮은 Nonce 값을 찾으면 = 신규 블록을 추가할 수 있는 권한을 갖게 되면)
채굴자는 새 블록을 인접 노드들에게 Broadcast 하여 알리게 된다.
• 새 블록을 받은 노드들은 해당 블록이 규격에 맞는지를 간단히 검사한 후에 자신의 다른 인접 노드들에게 전파시킨다.
• 다시 한번 블록체인의 정의를 상기시켜 보면, 각 노드들이 모두 연결되어 있지 않다고 했다. 따라서, 전체 노드들에게 새 블록이
전파되는 데 시간이 걸린다.
• 또한, 여러 채굴자들이 경쟁적으로 새 블록을 만드는데, A, B라는 채굴자가 1초의 차이로 각각 채굴에 성공했을 경우, 물리적 거
리 때문에 A지역에는 a블록이 떠돌아 다니고, B지역에는 b블록이 떠돌아 다닐 수 있다.
• 이 때, 중간 지역의 C노드가 a, b블록 모두들 받았을 경우 어느 블록을 인정할 것인가? 정답은 난이도가 더 높은 블록을 인정해
준다.
• 그런데 이 난이도조차 동일할 경우는?  채굴자는 a, b블록 중 하나를 잡아서 다음 블록을 만들고 있을 것이다. 그렇게 a1, b1
블록이 생겨난다.
• a1, b1블록도 난이도 검사를 할 것이고 이 중 난이도가 높은 블록을 인정해 준다. 그런데 딱 한번 이러한 일이 6번이나 반복되는
사건이 있었고, 이 때 비트코인 개발진이 강제적으로 블록 하나를 잡아서 인정하고 나서야 사건이 마무리된 적이 있었다.
• 이 사건을 계기로 6번 인증 통과가 되어야 안전하다는 말이 생겨 났다.
참고 자료
설명 URL 중요도
블록체인, 비트코인에 대한 원리 설명, 깔끔한 설명, 정제
된 언어, 깊이도 어느 정도 있음, 가장 좋았던 글
http://www.mobiinside.com/kr/2017/03/20/blockchain_1-2/ ★★★★★
노드에 대한 자세한 설명 (영문), 깊이 있는 자료
https://github.com/bitcoinbook/bitcoinbook/blob/second_edition/ch08.asciid
oc#full_node_reference
★★★★☆
비트코인 거래 원리에 대한 설명 http://blog.naver.com/PostView.nhn?blogId=allthatbtc&logNo=20204252383 ★★★☆☆
블록체인 기본 원리에 대한 동영상 (영문), 학습 초반에 도
움이 된 영상
https://www.youtube.com/watch?time_continue=4&v=_160oMzblY8 ★★★★☆
블록체인, 비트코인에 대한 원리 설명 http://d2.naver.com/helloworld/8237898 ★★★★☆
블록체인, 비트코인에 대한 원리 설명
http://homoefficio.github.io/2016/01/23/BlockChain-
%EA%B8%B0%EC%B4%88-%EA%B0%9C%EB%85%90/
★★★★☆
블록체인, 비트코인에 대한 원리 설명
http://www.seunghwanhan.com/2016/07/introduction-to-bitcoin-
blockchain.html
★★★★☆
기술사가 작성한 글, 기술 관점의 설명 http://blog.naver.com/PostView.nhn?blogId=renucs&logNo=220958282185 ★★★★★
국내 2위 암호화폐 거래소 회사에서 발간한 문서 https://assets.korbit.co.kr/docs/Korbit-White_Paper-Block_Chain_Primer-1.pdf ★★★★★
비트코인 블록체인 정보 제공 사이트 https://blockchain.info/ 참고
비트코인 네트워크 노드 정보 제공 사이트 https://bitnodes.21.co/ 참고

More Related Content

What's hot

해 싱(Hashing)
해     싱(Hashing)해     싱(Hashing)
해 싱(Hashing)
KimKyungKun
 

What's hot (20)

해 싱(Hashing)
해     싱(Hashing)해     싱(Hashing)
해 싱(Hashing)
 
비트코인과 블록체인 핵심개념정리
비트코인과 블록체인 핵심개념정리비트코인과 블록체인 핵심개념정리
비트코인과 블록체인 핵심개념정리
 
ブロックチェーンの基本構造
ブロックチェーンの基本構造ブロックチェーンの基本構造
ブロックチェーンの基本構造
 
Blockchain
BlockchainBlockchain
Blockchain
 
Blockchain Tokenization
Blockchain TokenizationBlockchain Tokenization
Blockchain Tokenization
 
Blockchain Training | Blockchain Tutorial for Beginners | Blockchain Technolo...
Blockchain Training | Blockchain Tutorial for Beginners | Blockchain Technolo...Blockchain Training | Blockchain Tutorial for Beginners | Blockchain Technolo...
Blockchain Training | Blockchain Tutorial for Beginners | Blockchain Technolo...
 
Bitcoin
BitcoinBitcoin
Bitcoin
 
Blockchain
BlockchainBlockchain
Blockchain
 
Public Blockchain Scalability (April 2018)
Public Blockchain Scalability (April 2018)Public Blockchain Scalability (April 2018)
Public Blockchain Scalability (April 2018)
 
Blockchain
BlockchainBlockchain
Blockchain
 
Blockchain, Ethereum and ConsenSys
Blockchain, Ethereum and ConsenSysBlockchain, Ethereum and ConsenSys
Blockchain, Ethereum and ConsenSys
 
Block chain
Block chainBlock chain
Block chain
 
Introduction to Blockchains
Introduction to BlockchainsIntroduction to Blockchains
Introduction to Blockchains
 
Understanding Proof of Work (PoW) and Proof of Stake (PoS) Algorithms
Understanding Proof of Work (PoW) and Proof of Stake (PoS) AlgorithmsUnderstanding Proof of Work (PoW) and Proof of Stake (PoS) Algorithms
Understanding Proof of Work (PoW) and Proof of Stake (PoS) Algorithms
 
Blockchain concepts
Blockchain conceptsBlockchain concepts
Blockchain concepts
 
Business & Decision - Blockchain et applications : Etat de l'art
Business & Decision - Blockchain et applications : Etat de l'artBusiness & Decision - Blockchain et applications : Etat de l'art
Business & Decision - Blockchain et applications : Etat de l'art
 
Bitcoin technology
Bitcoin technologyBitcoin technology
Bitcoin technology
 
Introduction to Blockchain
Introduction to BlockchainIntroduction to Blockchain
Introduction to Blockchain
 
Bitcoin and Blockchains
Bitcoin and BlockchainsBitcoin and Blockchains
Bitcoin and Blockchains
 
Blockchain Technology | Blockchain Explained | Blockchain Tutorial | Blockcha...
Blockchain Technology | Blockchain Explained | Blockchain Tutorial | Blockcha...Blockchain Technology | Blockchain Explained | Blockchain Tutorial | Blockcha...
Blockchain Technology | Blockchain Explained | Blockchain Tutorial | Blockcha...
 

Similar to 블록체인(Block Chain)이란? - 블록체인의 구성요소, 작동원리, 메커니즘의 이해

Similar to 블록체인(Block Chain)이란? - 블록체인의 구성요소, 작동원리, 메커니즘의 이해 (20)

Blockchain Basic Concept Theory (Beginner Version) / 초보자를 위한 블록체인 기초 개념 이론
Blockchain Basic Concept Theory (Beginner Version) / 초보자를 위한 블록체인 기초 개념 이론Blockchain Basic Concept Theory (Beginner Version) / 초보자를 위한 블록체인 기초 개념 이론
Blockchain Basic Concept Theory (Beginner Version) / 초보자를 위한 블록체인 기초 개념 이론
 
비트코인에 관한 교육자료 입니다.
비트코인에 관한 교육자료 입니다.비트코인에 관한 교육자료 입니다.
비트코인에 관한 교육자료 입니다.
 
초심자를 위한 블록체인 기초
초심자를 위한 블록체인 기초초심자를 위한 블록체인 기초
초심자를 위한 블록체인 기초
 
블록체인 개요
블록체인 개요블록체인 개요
블록체인 개요
 
Blockchain 101
Blockchain 101Blockchain 101
Blockchain 101
 
Block chain introduction slideshare
Block chain introduction   slideshareBlock chain introduction   slideshare
Block chain introduction slideshare
 
코어 이더리움
코어 이더리움 코어 이더리움
코어 이더리움
 
비트코인 개인간 전자화폐시스템 요약 설명
비트코인 개인간 전자화폐시스템 요약 설명비트코인 개인간 전자화폐시스템 요약 설명
비트코인 개인간 전자화폐시스템 요약 설명
 
Bitcoin Basics Part4
Bitcoin Basics Part4Bitcoin Basics Part4
Bitcoin Basics Part4
 
전자상거래 보안-블록체인(Blockchain) 기술
전자상거래 보안-블록체인(Blockchain) 기술전자상거래 보안-블록체인(Blockchain) 기술
전자상거래 보안-블록체인(Blockchain) 기술
 
Introblockchaininfra 180806105137
Introblockchaininfra 180806105137Introblockchaininfra 180806105137
Introblockchaininfra 180806105137
 
Proof of work
Proof of workProof of work
Proof of work
 
쉽게 풀어쓴 블록체인과 이더리움
쉽게 풀어쓴 블록체인과 이더리움쉽게 풀어쓴 블록체인과 이더리움
쉽게 풀어쓴 블록체인과 이더리움
 
V SYSTEMS Whitepaper_KR
V SYSTEMS Whitepaper_KRV SYSTEMS Whitepaper_KR
V SYSTEMS Whitepaper_KR
 
가상화폐와 블록체인 기술 Cryptocurrency & Blockchain Technology (KOR ver.)
가상화폐와 블록체인 기술 Cryptocurrency & Blockchain Technology (KOR ver.)가상화폐와 블록체인 기술 Cryptocurrency & Blockchain Technology (KOR ver.)
가상화폐와 블록체인 기술 Cryptocurrency & Blockchain Technology (KOR ver.)
 
블록체인
블록체인블록체인
블록체인
 
Bitcoin Basics Part3
Bitcoin Basics Part3Bitcoin Basics Part3
Bitcoin Basics Part3
 
블럭체인과 암호화폐
블럭체인과 암호화폐블럭체인과 암호화폐
블럭체인과 암호화폐
 
블록체인과 암호화폐 그리고 악성코드
블록체인과 암호화폐 그리고 악성코드블록체인과 암호화폐 그리고 악성코드
블록체인과 암호화폐 그리고 악성코드
 
Blockchain 1st bitcoin_core
Blockchain 1st bitcoin_coreBlockchain 1st bitcoin_core
Blockchain 1st bitcoin_core
 

블록체인(Block Chain)이란? - 블록체인의 구성요소, 작동원리, 메커니즘의 이해

  • 1. 블록체인(Block Chain)이란? 블록체인의 구성요소, 작동원리, 메커니즘의 이해 2017년 9월, 최용진
  • 3. 블록체인의 정의 P2P 네트워크 상에 노드의 수만큼 복제되어 분산 저장되어 있는 (공개) 거래 장부 P2P 네트워크라는 것이 네트워크 상의 모든 노 드가 직접 연결되어 있다는 것을 의미하지 않음. 서버/클라이언트 구조가 아니라 각 노드가 수평 적으로 네트워킹을 한다는 의미임. 따라서 필연 적으로 “라우팅”이 필요하게 됨. 가장 중요!!! ★★★★★ 비트코인, 이더리움 등 대부분의 가상화폐 시스 템에서는 “공개” 방식이나 블록체인 기술이 진화 함에 따라 Public이 아닌 Private, Consortium 등의 형태가 나옴. 즉, 공개 블록체인이 아닐 수 있음. P2P 네트워크 상에 연결되어 있는 컴퓨터를 말 함. 해당 노드가 어떤 역할을 하는지 (즉, 어떤 프 로그램이 깔려서 작동 중인지)에 따라 노드의 성 격과 명칭이 달라짐. 기본적으로 거래 내역이 담긴 동일한 DB를 각 노드가 각각 저장하고 있음. 단, 모든 노드가 Full DB를 저장하고 있지는 않음. 거래 기록이 담긴 DB (예: 비트코인의 경우, “A 가 $10를 B에게 송금”  이러한 기록이 저장 됨)
  • 4. 등장 배경 블록체인 ≠ 비트코인 2009년 사토시 나카모토 (Satoshi Nakamoto, 가명의 개인 또는 단체)에 의해 블록체인의 근간 기술(거래 내역 저장을 위한 분산 DB)로서 개발되었음. 블록체인은 비트코인 시스템을 구성하고 있는 데이터 저장 기술임. 기술의 특징 (P2P, Hashing, 합의 알고리즘 등)으로 인해 해킹, 조작이 어려운 구조라는 것 이지 블록체인 자체가 인증기술은 아님. 따라서 가상화폐는 물론 인증 시스템, 금융, 자산거래, IoT 등에도 적용될 수 있음.
  • 5. 블록체인 구성요소 및 기술 구성요소 설명 비고 P2P 네트워크 블록체인 노드를 연결하는 Peer to Peer 방식의 수평적 네트워 크 모든 노드가 직접 연결되어 있는 것이 아니므로 노드 간 “라우 팅” 필요 노드 P2P 네트워크에 연결되어 있는 컴퓨터로서 실행하는 소프트웨 어의 종류 및 연산 능력에 따라 라우팅 노드, 풀 노드, DB노드, 경량 노드 등으로 구분됨 노드의 수가 많아질수록 해당 블록체인 네트워크의 연산 능력 이 높아지고 비례하여 해킹 가능성이 낮아짐 블록체인DB 특정 블록체인 네트워크가 시작된 이래 저장된 모든 거래 기록 의 검증 정보 또는 기록 전부를 저장하고 있는 데이터베이스 비트코인의 경우 2009년 부터의 모든 거래 기록을 저장하고 있는 DB의 크기가 130GB에 달하며 (2017년 9월 기준), 기 하급수적으로 크기가 커지고 있음 OSS 오픈 소스를 통해 누구나 생태계 구축, 운영에 참여, 기여할 수 있음 Private, Consortium 형태의 블록체인 네트워크에는 허가된 사람만 네트워크에 참여할 수 있음 기술 설명 비고 암호화 기술 거래 주체 식별, 전자서명 등에 필요한 암호화 기술 개인키, 공개키 기반 전자서명(ECDSA) Hashing 알고리즘 거래 ID 생성, 블록에 저장된 데이터의 유효성 검증, 작업 증명 등에 사용 SHA256 합의 알고리즘 P2P 네트워크 상에 노드들이 각각의 장부를 저장하고 있으므로 누가 기록하는 것을 Valid 한 기록으로 볼 것이냐에 대한 노드 간 합의 방식 작업 증명 (PoW, Proof of Work), 자산 증명 (Proof of Stake) 등 OSS 오픈 소스를 통해 누구나 생태계 구축, 운영에 참여, 기여할 수 있음 블록체인 Core, 서비스 등을 누구나 개발, 배포 – GitHub 등
  • 6. 블록 블록체인 블록체인 네트워크 • 블록 정보 = 블록체인마다 다름 (뒤에 나오는 비트코인 예시 참조) • 이전 블록 ID = 이전 블록 “Header”의 Hash 값 (이전 블록 전체의 Hash 값 아님) • (거래내역이 담긴) 블록이 새로 만들어지면 기존 블록 들의 연결(블록체인)에 새롭게 추가 연결 됨 • 연결 방식 = 새 블록이 이전 블록의 ID를 갖고 있음 • 블록체인 네트워크를 구성하는 각 노드들은 동일한 블 록체인 DB를 복제하여 각각 저장하고 있음 블록, 블록체인, 블록체인 네트워크? <Header> 블록 정보 이전 블록 ID <Body> 거래 기록 $10, A  B $5, D  Z $15, B  C . . . 블록 정보 블록 정보 NULL 이전 블록 ID 블록 정보 이전 블록 ID 노드 A Block A Block B Block C 노드 B 노드 D노드 C 블록 ID 블록 ID NULL 이전 블록 ID 블록 ID 이전 블록 ID 블록 ID 블록 ID NULL 이전 블록 ID 블록 ID 이전 블록 ID 블록 ID 블록 ID NULL 이전 블록 ID 블록 ID 이전 블록 ID 블록 ID 블록 ID NULL 이전 블록 ID 블록 ID 이전 블록 ID A B C A B C A B C A B C
  • 7. 합의 메커니즘은 무엇이고 왜 필요한가? • 만약 동아리 모임의 회비관리(장부)를 1명에게 맡긴다면 우리는 “가장 믿을 만한 사람”(이하 “총무”)에게 맡길 것이다. • 이 “가장 믿을 만한 사람”은 정말 믿을 수 있는가? 그를 완벽히 믿지 못하므로 그 사람을 감시할 “감사”를 두기도 한다. • 금융 거래는 어떠 한가? 위에서 “총무”가 바로 은행이고, “감사”가 금융감독원쯤 되겠다. • 우리는 은행을 정말 믿는게 아니라 달리 방법이 없기 때문에 (믿을 수 밖에 없기 때문에) 믿는 것은 아닐까? • 현실 세계에서 은행도 믿지 못하는 사태가 종종 발생한다. - 2016년 9월, 미국 웰스파고 은행의 “유령 계좌 스캔들” • 다시 돌아와서, “총무”와 “감사”를 둘 것이 아니라 동아리 멤버 전체가 같은 회비관리 장부를 갖고 있고, 입출금이 발생할 때 마다 모두의 장부에 해당 내용을 기입하면 어떨까?  이것이 블록체인의 기본 개념 • 위와 같은 방식은 언뜻 봐도 비효율적인 부분이 있지만 적어도 구성원 간 장부를 조작하기는 매우 어려울 것이다.  이것이 블록체인이 “해킹에 강하다”, “조작이 어렵다”라는 의미이다 • 위와 같은 방식으로 장부가 관리되고 있는 상황에서 신입회원이 들어와서 회비를 낼 경우, 다음 두가지를 생각해보자. ➢ 새로 받은 회비 기록은 어느 장부에 처음 기록할 것인가?  이것이 합의 메커니즘이 필요한 이유 ➢ 나머지 회원들은 그 내용을 어떻게 믿고 자기 장부에 그대로 받아 적을 것인가?  이 때, “믿을 만한”에 대한 기준이 필요한데, 대표적인 기준이 “작업증명”과 “자산증명”이다. ✓ 작업증명 (PoW: Proof of Work) = 우리 동아리에서 제일 열심히 활동한 회원의 말에 따르자 ✓ 자산증명 (PoS: Proof of Stake) = 우리 동아리에서 제일 지분이 많은 회원의 말을 따르자
  • 8. 합의 메커니즘은 어떻게 작동하나? (비트코인) • 비트코인이 채택한 합의 메커니즘은 작업증명 방식이며, 그 이름은 “Hashcash”이다. • 비트코인에서의 작업증명은 대량의 반복적인 Hash 연산 작업을 통해 특정 숫자를 찾는 방식으로 이루어진다. • 이 숫자를 찾게 되면 새로운 거래기록이 담긴 새 블록을 기존 블록체인에 연결(추가)할 수 있는 권한이 생긴다. • 이 숫자를 찾으면 작업증명이 완료된 것이고 블록발행 보상 명목으로 12.5BTC(2017년 9월 현재)를 지급받는데 이것이 바로 “채 굴”임 ➢ 채굴자는 수고비 외에 본인이 채굴 성공한 블록에 저장되어 있는 거래들에 대한 수수료 또한 지급 받게 됨 ➢ 비트코인은 오직 채굴을 통해서만 신규 발행됨 ➢ 채굴 성공 시 지급되는 비트코인의 수량은 매 약 21만 블록(약 4년)마다 절반으로 줄어들도록 설계되어 있음 ➢ 비트코인의 최대 개수는 2,100만개로 제한되어 있는데, 비트코인 총량이 2,100만개가 되는 시점에 비트코인 신규 발행은 중단됨  수량이 제한되어 있다는 측면에서 종종 금(Gold)에 비유되기도 하며, “채굴”이란 말 또한 이러한 연장선상에서 나온 말임 ➢ 비트코인 지급이 중단되면 채굴자들은 어떤 동기에 의해 채굴을 계속할까?  새 블록에 저장된 거래에 대한 수수료를 받게 됨 • 작업증명 = 채굴 = 새 블록을 블록체인에 등록할 수 있는 권한을 획득하기 위해 다른 채굴 노드보다 먼저 특정 숫자를 찾는 행위 • 그렇다면 특정 숫자는 누가 정하는 것인가? 위 “채굴”에 대한 정의도 좀 두루뭉술하지 않나?  누가 정하는 것이 아니라 알고리 즘에 의해 정해지는 값을 찾는 것임. 좀 더 자세한 내용을 알기 위해서는 블록의 구조를 알아야 할 필요가 있음 (다음 페이지 참조)
  • 9. 블록의 구조 (비트코인) 비트코인 블록 구조 비트코인 블록의 헤더 구조 • Bits = Difficulty = 난이도 = 현재 비트코인 네트워크의 연산 능력, 네트워크 속도 등을 고려하여 약 10분 내에 찾을 수 있는 정도 • 블록 헤더의 Hash 값이 난이도에 제시된 값보다 작은 값이 나오게 하는 Nonce 값을 찾는 과정= 새 블록을 블록체인에 등록할 수 있는 권한을 획 득하기 위해 다른 채굴 노드보다 먼저 특정 숫자를 찾는 행위 = 채굴 = 작업증명
  • 10. 작업 증명 (채굴) 절차 시작 Mempool에 쌓인 처리해야 할 트랜잭션 취합 및 블록 생성 블록 헤더의 Nonce 값 증가 블록 헤더 Hashing (BHH) 난이도 < BHH 종료 Y N A B C D A. 거래는 발생했으나 아직 블록체인에 들어가지 못한 거래 내역은 Mempool이라고 하는 저장소에 임시 저장된다. 확 인 대기 중인 트랜잭션의 총 크기를 확인하려면 여기를 클릭 B. 블록의 바디에는 거래내역이 들어가 있으니 건드릴 수 없고, 블록 헤더의 6개 값 중에도 건드릴만한 값이 없으니, Nonce라는 임시 값을 두고, 그 값을 건드려가면서 난이도(Bits) 목표치에 도달하는 방식을 취하는 것임 C. Nonce 값을 1비트라도 바꾼 후 헤더를 SHA256으로 Hashing – 2017년 9월 22일 현재 비트코인 블록체인의 마지 막 Hash 값  0000000000000000008be44bcfd2f0a72decbad2e57126b9d315154a805088e1 D. 위 Hash 값을 보면 앞에 0이 많이 붙어 있는 것을 볼 수 있는데, 난이도(Bits) 값이 바로 0의 개수, 더 자세히 말하면 Nonce 값을 증가시키고 헤더를 Hashing한 값이 Bits가 정한 값보다는 작아야 한다는 의미이다. 특정 값보다 작아야 하기 때문에 Hash 값의 앞에 0이 많이 붙어 있다. B  D 작업의 반복이 채굴 과정이다. 1비트만 값을 바꾸고 Hashing을 해도 결과 값의 변화가 심하고 Input 값을 증가시킨다고 해도 Hash 값이 증가 하기만 하는 것은 아닌데, Hash의 결과 값이 특정 값 (Bits) 보다 작은 값을 찾는 것은 말 그대로 노가다이며, 매 우 많은 컴퓨팅 연산과 전력 소비가 필요로 하다. 이러한 비효율적인 면 때문에 PoW 방식에 대한 문제가 이슈 가 되고 있다.
  • 11. • 이 시간은 앞서 말한 난이도(Bits) 값에 의해 결정된다. 즉, 현재 비트코인 네트워크의 컴퓨팅 파워 (하드웨어 성능, 노드 수 등)를 고려해서 10분만 에 Nonce 값을 찾을 수 있을 정도의 Bits 값을 정하는 것이다. • 즉, Nonce 값을 5분 만에도 찾을 수 있고 20분이 지나도 못 찾을 수 있는 것이다. • 난이도(Bits) 목표는 2016개의 블록을 생성하는데 2주가 소요되어야 한다는 것이다. (2016블록*10분=2주) • 난이도 값을 정하는 로직은 아래와 같으며, 난이도를 조정하는 시점은 매 2016번째 블록마다(약 2주) 이루어진다. ➢ 매 2016번째 블록이 생성된 후, 2016 이전 번째 블록의 생성일로부터 2주가 넘었는가?  Bits 값을 크게 조정해서 난이도 낮춤 ➢ 매 2016번째 블록이 생성된 후, 2016 이전 번째 블록의 생성일로부터 2주가 안 넘었는가?  Bit 값을 낮게 조정해서 난이도 올림 ➢ 매 2016번째 블록이 생성된 후, 2016 이전 번째 블록의 생성일로부터 딱 2주가 지났으면  Bits 값 유지 10분마다 블록이 추가된다 또는 10분마다 채굴 된다는 말의 의미는? • 비트코인 창시자인 사토시 나카모토가 그렇게 정한 것이다. • 엄밀히 말하면 정확히 10분은 아니고, 10분 정도에 하나씩 블록이 생겨났으면 좋겠다는 것이다. (아래 그림은 실제 생성된 블록에 대한 정보) 6분 차이 8분 차이 7분 차이
  • 12. 6번 인증을 통과해야 안전하다는 말은 어떤 의미일까? • 채굴에 성공하면 (= Bits에서 제시한 난이도 값보다 낮은 Nonce 값을 찾으면 = 신규 블록을 추가할 수 있는 권한을 갖게 되면) 채굴자는 새 블록을 인접 노드들에게 Broadcast 하여 알리게 된다. • 새 블록을 받은 노드들은 해당 블록이 규격에 맞는지를 간단히 검사한 후에 자신의 다른 인접 노드들에게 전파시킨다. • 다시 한번 블록체인의 정의를 상기시켜 보면, 각 노드들이 모두 연결되어 있지 않다고 했다. 따라서, 전체 노드들에게 새 블록이 전파되는 데 시간이 걸린다. • 또한, 여러 채굴자들이 경쟁적으로 새 블록을 만드는데, A, B라는 채굴자가 1초의 차이로 각각 채굴에 성공했을 경우, 물리적 거 리 때문에 A지역에는 a블록이 떠돌아 다니고, B지역에는 b블록이 떠돌아 다닐 수 있다. • 이 때, 중간 지역의 C노드가 a, b블록 모두들 받았을 경우 어느 블록을 인정할 것인가? 정답은 난이도가 더 높은 블록을 인정해 준다. • 그런데 이 난이도조차 동일할 경우는?  채굴자는 a, b블록 중 하나를 잡아서 다음 블록을 만들고 있을 것이다. 그렇게 a1, b1 블록이 생겨난다. • a1, b1블록도 난이도 검사를 할 것이고 이 중 난이도가 높은 블록을 인정해 준다. 그런데 딱 한번 이러한 일이 6번이나 반복되는 사건이 있었고, 이 때 비트코인 개발진이 강제적으로 블록 하나를 잡아서 인정하고 나서야 사건이 마무리된 적이 있었다. • 이 사건을 계기로 6번 인증 통과가 되어야 안전하다는 말이 생겨 났다.
  • 13. 참고 자료 설명 URL 중요도 블록체인, 비트코인에 대한 원리 설명, 깔끔한 설명, 정제 된 언어, 깊이도 어느 정도 있음, 가장 좋았던 글 http://www.mobiinside.com/kr/2017/03/20/blockchain_1-2/ ★★★★★ 노드에 대한 자세한 설명 (영문), 깊이 있는 자료 https://github.com/bitcoinbook/bitcoinbook/blob/second_edition/ch08.asciid oc#full_node_reference ★★★★☆ 비트코인 거래 원리에 대한 설명 http://blog.naver.com/PostView.nhn?blogId=allthatbtc&logNo=20204252383 ★★★☆☆ 블록체인 기본 원리에 대한 동영상 (영문), 학습 초반에 도 움이 된 영상 https://www.youtube.com/watch?time_continue=4&v=_160oMzblY8 ★★★★☆ 블록체인, 비트코인에 대한 원리 설명 http://d2.naver.com/helloworld/8237898 ★★★★☆ 블록체인, 비트코인에 대한 원리 설명 http://homoefficio.github.io/2016/01/23/BlockChain- %EA%B8%B0%EC%B4%88-%EA%B0%9C%EB%85%90/ ★★★★☆ 블록체인, 비트코인에 대한 원리 설명 http://www.seunghwanhan.com/2016/07/introduction-to-bitcoin- blockchain.html ★★★★☆ 기술사가 작성한 글, 기술 관점의 설명 http://blog.naver.com/PostView.nhn?blogId=renucs&logNo=220958282185 ★★★★★ 국내 2위 암호화폐 거래소 회사에서 발간한 문서 https://assets.korbit.co.kr/docs/Korbit-White_Paper-Block_Chain_Primer-1.pdf ★★★★★ 비트코인 블록체인 정보 제공 사이트 https://blockchain.info/ 참고 비트코인 네트워크 노드 정보 제공 사이트 https://bitnodes.21.co/ 참고