블록체인 입문서 정리 ( 블록체인 무엇인가? - 정리 )

요약

블록체인 개념

책/강의 내용을 나중에 다시 학습하기 쉽게 압축한 노트입니다.

핵심 포인트

  • 블록체인 개념
  • Daniel drescher - blockchain basics 25
  • 목차
  • 책 개요 & 후기
  • 블록체인 무엇인가?

지식 그래프

정리 내용

Daniel drescher - blockchain basics 25

목차

책 개요 & 후기

Daniel drescher - blockchain basics 25라는 책의 한국어 번역판으로 블록체인의 대한 기초지식을 담았다, 수학적 이론, 전공 용어를 모두 배재한 블록체인 입문서이다. 비전공자도 읽기 쉬운 입문서로 블록체인에 관심이 많은 사람이라면 이 책으로 시작하는 것을 추천합니다. → 이 포스팅은 개발자 입장에서 정리해 생략된 부분이 많습니다

블록체인 무엇인가?

총 4개의 챕터로 이루어졌고, 25단계의 블록체인 입문 지식을 담고 있습니다.

블록체인의 작동원리를 25단계로 설명한 블록체인 입문서!

25단계 정리

  1. 소프트웨어 공학에서 변하지 않는 주요 개념들 - 1단계 - 시스템을 보는 눈 장착하기 - 시스템을 계층과 측면으로 분리해 분석하기 - 2단계 - 큰 그림으로 바라보기 - 소프트웨어 아키텍처란 무엇이고 블록체인과 어떤 관계인가 - 3단계 - P2P 시스템의 엄청난 잠재력 - P2P 시스템이 세상을 어떻게 바꿀 것인가?
  2. 왜 우리에게 블록체인이 필요한가? - 4단계 - 블록체인에게 떨어진 미션 - 독립적인 컴퓨터를 무리짓게 만들어라 - 5단계 - 그래서 블록체인이 뭔가요? - 블록체인을 정의하는 네 가지 방법 - 6단계 - 소유권의 본질 이해하기 - 내가 가진 것이 내 것이라고 어떻게 증명할까? - 7단계 - 이중사용, 블록체인이 해결한다 - P2P 시스템의 취약성을 이용한 범죄 예방책
  3. 블록체인은 어떻게 작동하는가? - 8단계 - 블록체인의 청사진 그리기- 블록체인으로 소유권을 관리하기 위한 밑그림 - 9단계 - 소유권 기록에서 모든 것이 시작된다 - 이력으로 현재 소유권 상태 알아내기 - 10단계 - 데이터 해싱하기 - 지문처럼 만들어 데이터 식별하기 - 11단계 - 해시값은 어디서 어떻게 사용될까? - 데이터 비교하고, 계산 퍼즐 만드는 다섯 가지 이야기 - 12단계 - 암호화 기법을 소개합니다 - 사용자 계정 식별하고 보호하는 방법 - 13단계 - 노드 여러분, 트랜잭션을 승인합니까? - 디지털 서명 만들어 검증에 사용하기 - 14단계 - 블록체인-데이터-구조를 만들어봅시다 - 전체 트랜잭션 데이터 구축 및 유지하기 - 15단계 - 잘 뜨개질된 블록체인, 어떻게 변경할까? - 새 트랜잭션 추가 및 변경하기 - 16단계 - 블록체인이 데이터를 보호하는 방법 - 조작할 때 드는 비용을 높여 포기하게 만들기 - 17단계 - 컴퓨터들이 정보를 배분하는 방법 - 그 소식 들었어? 새로운 피어가 들어왔대! - 18단계 - 블록체인 속 무한경쟁 사회 - 당근과 채찍으로 새 트랜잭션 검증 및 추가하기 - 19단계 - 컴퓨터들도 라인을 잘 타야 살아남는다 - 노드들이 갈림길에서 일관되게 선택하는 방법 - 20단계 - 참 잘했어요. 보상은 비트코인입니다 - 보상으로 지불할 결제 수단의 조건 - 21단계 - 블록체인이라는 퍼즐 완성하기 - 앞단계에서 배운 내용 총정리
  4. 블록체인의 한계는 무엇이고 어떻게 극복할 것인가? - 22단계 - 냉정하게 한계점 바라보기 - 블록체인의 기술적, 비기술적 제약사항 - 23단계 - 다시 태어난 블록체인 - 한계 극복을 위한 네 가지 변형 등장
  5. 오늘, 그리고 앞으로의 블록체인 - 24단계 - 우리도 블록체인을 써볼까? - 유망한 응용분야 알아보고, 타당성 확인하기 - 25단계 - 블록체인의 미래 그려보기 - 블록체인의 변화 과정, 성과, 잠재적 약점

내용 정리

소프트웨어 공학에서 변하지 않는 주요 개념들

이 챕터에서는 소프트웨어 공학에 대한 주요 개념과 블록체인의 기초 개념에 대한 개략적인 이해를 위한 설명을 한다.

1단계 - 시스템을 보는 눈 장착하기 - 시스템을 계층과 측면으로 분리해 분석하기

시스템은 응용 계층과 구현 계층 & 기능적 측면과 비기능적 측면 으로 구분해서 분석할 수 있다.
#휴대폰을 머릿속으로 계층화시킨 예시
| 열 1 | 열 2 | 열 3 |
| --- | --- | --- |
|   | 기능적 측면 | 비기능적 측면 |
| 응용 계층 | 사진촬영, 전화걸기, 메일 보내기, 인터넷 검색 등등 | UI/UX, 빠른 메시지 전송 |
| 구현 계층 | 사용자 데이터 저장, 디지털 카메라 픽셀에 대한 접근 등등 | 효율적인 데이터 저장, 에너지 절약, 무결성 관리, 개인정보 보호 |
사용자에게 가까운 직접적인 영향을 미치는 부분인 응용계층과 기능적 측면에는 많은 관심이 있지만, 비기능적인 측면 특히 구현-비기능적 측면은 잘 알지 못한다.
모든 소프트웨어 시스템에서 무결성은 가장 중요한 측면이다(비기능적 측면) 
- 데이터 무결성
- 작동 무결성
- 보안
데이터 손실, 비논리적 작동 등 소프트웨어의 이슈를 야기하고 오작동을 야기하는 것은 무결성을 침해된 결과이다.
> [!note] 블록체인은 P2P 환경에서 무결성을 지키는 부분이 가장 중요한 부분이다.

시스템의 무결성의 중요성과 무결성의 종류를 알려주고 싶었던거 같다.

2단계 - 큰 그림으로 바라보기 - 소프트웨어 아키텍처란 무엇이고 블록체인과 어떤 관계인가

시스템의 작동 방식은 대표적으로 두 가지가 있다. 본 책에서는 엔진으로 표현한 부분으로 아래 정리한 내용이다.
- 중앙 통제 방식(centralized) & 분산 방식(distributed)
> [!note] 옮긴이주 - 노드, 컴퓨터, 피어(peer)는 동일한 의미를 가지고 있지만 반드시 그렇지는 않다. 노드 - 전체 시스템 내 한 요소임을 강조

컴퓨터 - 공유하는 자원의 측면에서 강조 피어 - 1대1의 의미 강조, 특정 행위를 강조 분산 시스템의 장점 - 계산 능력이 뛰어남 - 비용 절감 - 안정적이다 - 확장성이 뛰어나다 분산 시스템의 단점 - 조정 오버헤드 발생 → 구성요소(노드) 들을 control하는 중앙 통제가 없어서 - 통신 오버헤드 발생 → 피어간 통신이 중요한 시스템이라 - 네트워크 의존도가 높음 - 프로그램이 복잡해짐 → 중앙 통제가 없기 때문에 - 보안에 신경써야함 → 네트워크의 public문제 분산 시스템의 단점들을 보완한 혼합 시스템이 존재함. - 분산 시스템 내의 중앙 통제 & 중앙 통제 시스템 내의 분산 시스템 > 분산 시스템 구분 방법! > 전체 시스템을 동시에 종료할 수 있는 단일 요소가 있다면 분산이 아니라고 말할 수 있다! > [!note] 이 부분에서 주목할 점은 분산 시스템이다. 분산 시스템에서 시스템의 무결성을 확보하게 해주는 도구가 바로 블록체인이라는 점을 주목하자

3단계 - P2P 시스템의 엄청난 잠재력 - P2P 시스템이 세상을 어떻게 바꿀 것인가?

P2P시스템의 장점은 중개자 없이 사용자끼리 직접 상호 작용할 수 있다는 것이다.
이 책에서는 음악 시장에서의 사례를 가져왔다. “냅스터”는 정통적인 음악시장에 파일 공유 시스템이라는 새로운 세계로 이끌어 나갔다. 기존 시장에 CD를 통해서 음악을 듣고 판매하려면 스튜디오를 가진 중개자가 필요했다. 이는 음악을 녹음하는 가수, 음악을 듣는 사용자 사이에 스튜디오라는 중개자가 생긴다. (스튜디오는 녹음, cd생산, 판매등 중개자의 역할을 진행한다)
하지만 냅스터라는 시스템을 사용하면 모든 User가 사용자가 되어 서로의 데이터를 공유할 수 있다. 냅스터의 경우 데이터가 음악이 되어서 p2p시스템을 구성한 경우이다.
이 사업 모델을 통해서 P2P 시스템의 위력을 보여줬다.
→ 이 사업을 통해서 기존 중개자 역할을 하던 스튜디오는 경제적인 타격을 입을 수 밖에 없다.
> [!note] 본 챕터에서는 P2P시스템의 사례를 알아봤다. P2P 시스템은 탈중개화를 통한 산업 생태계를 변화시킬 잠재력을 가지고 있다. 이미 많은 분야에서 적용되어 생태계를 바꿨다.

블록체인은 P2P 시스템의 무결성을 확보하기 위한 도구로 탈중개화를 원하는 이들의 요구사항을 채워줄 수 있다.

왜 우리에게 블록체인이 필요한가?

이 챕터는 블록체인이 왜 필요한지, 블록체인으로 어떤 문제들을 해결할 수 있는지 설명한다.

4단계 - 블록체인에게 떨어진 미션 - 독립적인 컴퓨터를 무리짓게 만들어라

P2P 시스템에서 무결성과 신뢰성은 가장 중요한 관심거리이다. 무결성과 신뢰성을 해치는 2가지 원인이 존재한다.
- 기술적 결함 & 악의적 피어
P2P시스템은 각 피어가 연결된 시스템으로 개별 피어의 문제가 생기면 무결성과 신뢰성이 무너질 수 있다. 특히 악의적인 피어는 신뢰성을 해치는 주된 원인으로 P2P시스템의 근간이 흔들릴 수 있다. 
무결성을 확보하기 위해 전체 피어 개수에 대한 정보와 각 피어의 신뢰성에 대한 정보를 가지고 있어야한다.
이런 문제를 업계에서는 비잔틴 장군의 딜레마로 알려져있다.
> [!note] 블록체인에서 중요한 개념 중 비잔틴 장군의 문제가 나온 챕터이다.

간단하지만 복잡한 문제로 블록체인이 이 딜레마를 해결하는 과정을 뒤쪽에서 설명한다

5단계 - 그래서 블록체인이 뭔가요? - 블록체인을 정의하는 네 가지 방법

블록체인이란 용어는 다음 네 가지 다른 의미로 쓰이고 있습니다.
- 데이터 구조의 명칭
  - 공간을 서로 분리하고 연결한다. 책에서는 페이지(책 내용)들을 각 페이지 번호를 통해서 연결한다, 블록체인에서는 연결 방식을 고유의 특수한 방식으로 매김한다. 이 내용은 뒤쪽에서 풀어준다
- 알고리즘의 명칭
  - 순수 분산 P2P 시스템에서 데이터 구조내의 정보 내용을 민주주의 투표 방식과 비슷한 방법을 써서 서로 협상하는 일련의 명령어를 의미한다. → 협상 알고리즘
- 기술 묶음의 명칭
  - 알고리즘, 데이터 구조, 암호화, 보안 등 여러 기술의 조합을 의미하며 응용분야와 상관없이 순수 분산 P2P시스템을 확보하는 데 이용할 수 있다.
- 일반 응용분야를 가지는 순수 분산 P2P시스템을 포괄하는 용어
  - 기술 묶음을 활용하는 거래장부(ledger)들의 순수 부산 P2P 시스템을 지칭하는 포괄적인 용어로 사용된다. 소프트웨어의 한 단위만 의미하는 것이 아닌 순수 분산 시스템 전체를 의미한다는 점이다.
> [!note] 블록체인이란, 무결성을 확보하고 유지하기 위해 순서에 따라 연결된 블록들의 정보 내용을 암호화 기법과 보안기술을 이용해 협상하는 알고리즘으로 구성된 소프트웨어 요소를 활용하는 원장의 분산 P2P시스템을 의미한다. 

6단계 - 소유권의 본질 이해하기 - 내가 가진 것이 내 것이라고 어떻게 증명할까?

> 다수의 목격자로 소유권을 증명한다!
동일한 사실을 증명하는 독립적인 목격자가 많을수록 그 사실은 진실일 가능성이 높아진다.
이 아이디어가 블록체인의 핵심 개념 중 하나이다.
→ 독립적인 목격자들이 많아서 상호 영향을 받지 않는 증언을 많이 확보하는 것이 진실을 찾기 위한 이 접근 방식의 핵심이다.
소유권 입증에 필요한 3요소
- 소유자가 누구인가
- 소유 물건은 무엇인가
- 소유자와 물건의 매핑
속성으로 보안의 3가지 개념
- 식별 → 사용자를 식별하는 것
- 인증 → 사용자가 누구인지 증명하는 것
- 승인 → 사용자의 접근을 허가하는 것
> [!note] 소유권이 가지는 주요 특성에 대해 조명했고, 원장의 특성과 어떻게 연계되는지 살펴보았다.

7단계 - 이중사용, 블록체인이 해결한다 - P2P 시스템의 취약성을 이용한 범죄 예방책

P2P 시스템에 모든 원장이 같은 날 같은 시간에 갱신되지 않는 점을 악용한 부분이다. 즉시 갱신되어 최신상태를 유지하는 피어는 취약점에서 벗어나지만, 갱신이 늦은 피어는 먼저 최신 정보를 획득한 피어에게 악용된 정보를 넘겨받을 수 있다.
대표적인 이중사용 문제 3가지
- 디지털 재화를 복사하여 발생하는 문제
  - 같은 돈이 여러 사람에게 지불되어서는 안된다. 
- 원장의 분산 P2P시스템에서 발생하는 문제
  - 정보의 전달 시간으로 생기는 문제, 일부 피어에서 서로 상이한 소유권 정보를 가지는 경우 발생하는 문제이다.
- 순수 분산 P2P시스템의 무결성이 침해되는 문제
  - 이 문제점들을 추상적으로 바라볼 때, 결국 데이터의 일관성을 지키지 못해 생기는 문제이다. 이는 곧 데이터의 무결성으로 이어지는 심각한 문제이다.
> [!note] 위에서 주목할 점은 P2P시스템에서 발생할 수 있는 무결성 관련 문제점들이다. 블록체인의 알고리즘(합의) 등을 통해서 무결성을 지킬 수 있다는 것이 핵심이다.

블록체인은 어떻게 작동하는가?

이 책의 핵심 부분으로, 블록체인 내부 작동 원리를 설명한다. 15개의 개별 기술에 대한 분명한 개념을 설명하고, 블록체인이라는 거대한 시스템에서 상호 작용하는 방법에 대해 설명한다.

8단계 - 블록체인의 청사진 그리기- 블록체인으로 소유권을 관리하기 위한 밑그림

블록체인은 순수 분산 P2P 시스템이고, 각 사용자가 기여한 계산 자원으로 이루어진다.
노드의 개수, 신뢰성, 안정성을 전혀 알 수 없는 상황에서 디지털 재화의 소유권 관리를 진행해야한다.
위 과제를 세부화하여 7가지의 과제로 나눴다.
- 소유권 기술
- 소유권 보호
- 트랙잭션 데이터 저장
- 신뢰할 수 없는 환경에 배분할 원장 준비
- 원장 배분
- 원장에 새 트랙젝션 추가
- 어느 원장이 진실인지 판단

9단계 - 소유권 기록에서 모든 것이 시작된다 - 이력으로 현재 소유권 상태 알아내기

블록체인에 소유권을 기록하려면 두 가지가 필요하다.
- 소유권 이전을 기술
- 트랜잭션 이력의 유지
작동하는 이유
트랜잭션의 전체 이력만 존재하면 각각의 계정에 대해 소유권을 이전받은 계정, 이전된 아이템과 총액에 대한 소유권 정보들을 재구성할 수 있기 때문이다.
→ 따라서 트랜잭션 순서가 매우 중요하다.
트랜잭션 이력의 무결성을 유지하기 위한 3요소
- 형식적 정확성
  - 트랜잭션의 모든 데이터가 정확한 형식으로 저장
- 의미상 정확성
  - 해당 사업 영역에 대한 데이터 의미가 정확해야 한다
- 승인
  - 계좌 소유자가 소유권 이전에 동의한다는 정보

10단계 - 데이터 해싱하기 - 지문처럼 만들어 데이터 식별하기

암호화 해시값이라 불리는 이 개념은 블록체인에서 정말 중요한 개념이다.
암호화 해싱으로 트랜잭션의 데이터를 최대한 빨리 비교하고 식별한다.
해시 함수는 input의 값이 무엇이던, 고정된 길이의 output을 출력하는 함수이다.
- 어떤 종류의 데이터든 즉시 해시값 제공
  - 어떤 데이터이든 빠르게 해시값을 제공해야한다
- 확정적
  - 동일한 입력, 동일한 출력
- 의사 난수
  - input을 보고 output을 예측할 수 없어야한다
- 일방 함수
  - 비가역 함수 → 역산 불가
- 충돌 회피
  - 같은 값의 해시값이 나올 수 있다.(확률적으로) 하지만 내부적으로 이런 충돌을 회피하기 위해 엄청난 노력을 하고 있고, 계속 연구가 진행 중 이다
해싱된 데이터의 5가지 패턴
- 독립, 반복, 결합, 순차적, 계층적
- https://ihpark92.tistory.com/60

11단계 - 해시값은 어디서 어떻게 사용될까? - 데이터 비교하고, 계산 퍼즐 만드는 다섯 가지 이야기

![[_attachments/notion/블록체인-입문서-정리-(-블록체인-무엇인가---정리-)/245172a556d6812782b3c6b3db51517e.png]]
해시를 사용하는 부분
- 데이터 비교
- 데이터 변경 감지
  - 데이터의 무결성, 신뢰성과 관련된 내용으로 변경되면 안되는 데이터(블록체인은 기본적으로 변경을 장려하지 않고 계속해서 추가하는 구조)가 변경되었는지 감지
- 변경-감지 방식의 데이터 참조
  - 데이터가 해시로 엮여있는 형태
- 변경-감지 방식의 데이터 저장
  - 머클 트리(git) 형식
- 시간-소모적 계산량 유발
  - 계산량이 높은 과제 출제→ 작업 증명

12단계 - 암호화 기법을 소개합니다 - 사용자 계정 식별하고 보호하는 방법

법적으로 허가된 사람만 그 자산에 접근할 수 있도록 보장하는 것
→ 계정에 할당된 자원에만 접근 가능 하도록 하는 것
블록체인에서 암호화 기법
- 계정 식별 (공개키→ 개인키)
  - 모두 작성 가능 But 읽는 거는 계정 주인만
  - A 사용자의 공개키는 공개되어 있다 따라서 A의 공개키로 메세지를 암호화하여 전달할 수 있다. → 이는 A의 개인키로만 복호화할 수 있기 떄문에 공개키를 아는 모든 사용자가 A사용자에게 메세지를 보낼 순 있지만, 메세지 내용은 A사용자만 볼 수 있다. → 메일함에 메일을 넣는 방식과 비슷함
- 트랜잭션 승인 ( 개인키→ 공개키)
  - 모두 읽기 가능 But 작성은 계정 주인만
  - A사용자가 트랜잭션의 소유권 이전을 승인하고 그 내용을 개인키로 암호화한다, 전체 사용자는 공개키를 통해서 그 내용을 읽고 트랜잭션의 승인을 판단할 수 있지만, 악의적인 사용자가 승인 내용을 임의로 작성할 순 없다. (개인키가 없기 떄문에)

13단계 - 노드 여러분, 트랜잭션을 승인합니까? - 디지털 서명 만들어 검증에 사용하기

디지털 서명은, 일종의 자필 서명과 비슷하다, 우리는 이것을 전자 원장에 트랜잭션에 동의한다고 표시하는 개념 이라고 설명한다.
즉, 합법적인 소유자로만 이전 권한을 제한하는 동시에 개방성을 유지해야 한다는 목표를 가지고 있다.
디지털 서명의 주요 기능
- 서명의 생성 → 트랜잭션 승인
  - 트랜잭션 내용(데이터)를 해시값으로 변환한다. → 내용의 무결성 유지
  - 해시값을 개인키로 암호화한다. → 사용자 특정 가능
  - 모든 피어들에게 전송한다 → 전체 공개지만 무결성은 유지되고 사용자가 명확함
- 서명을 이용한 데이터 검증 →  트랜잭션 검증
  - 공개키로 복호화하여 해시값 복원
  - 데이터 내용 해시값으로 변환
  - 두 해시값 비교 → 같으면 무결성 인증 완료 및 사용자 특정 가능
- 서명을 이용한 사기 판별
  - 위 두 과정을 통해서 데이터의 무결성과 사용자의 명확성(승인, 인증)을 보장받을 수 있다. → RSA암호화가 뚫리기 전까진
![[_attachments/notion/블록체인-입문서-정리-(-블록체인-무엇인가---정리-)/245172a556d68114b867f78ba7692cca.png]]

14단계 - 블록체인-데이터-구조를 만들어봅시다 - 전체 트랜잭션 데이터 구축 및 유지하기

블록체인의 목표는 트랜잭션 이력을 정렬 상태로 유지하는 것이다.
→ 변경이 이론상 가능하지만 무척 어렵고, 계속해서 추가하는 형태의 매커니즘
변경이 있으면 신속하게 감지하고 저장할 수 있어야한다.
→ 해시 참조를 사용하여 변경-감지 방식으로 저장
아래와 같은 구조 블록의 구조
![[_attachments/notion/블록체인-입문서-정리-(-블록체인-무엇인가---정리-)/245172a556d681e89eadfabeff950951.png]]

15단계 - 잘 뜨개질된 블록체인, 어떻게 변경할까? - 새 트랜잭션 추가 및 변경하기

본 책에서는 블록체인을 뜨게질과 비교한다, 뜨개질을 계속하다 보면 중간에 이상하게 떠진 코가 있을것이다. 이런 코를 고치기 위해서는 마지막코부터 중간까지 모두 풀러야하는데 블록체인도 그렇다.
![[_attachments/notion/블록체인-입문서-정리-(-블록체인-무엇인가---정리-)/245172a556d68133a32ad6917c8f2ebf.png]]
머클트리와 이전 헤더와도 다음 헤더와 해시화 작업을 할 때 같이 데이터를 넣기 때문에 중간에 한 블록만 변경이 불가능하다.

16단계 - 블록체인이 데이터를 보호하는 방법 - 조작할 때 드는 비용을 높여 포기하게 만들기

과거를 위조할 수는 있지만 극단적으로 비용이 많이 소모된다는 사실을 잘 보여준다.
블록체인의 특성 상, 시스템을 개방한 채 조작이나 위조의 위험으로부터 트랜잭션 데이터를 보호하는 것이 과제이다.
- 트랜잭션 이력을 저장할 때 아무리 사소한 조작이라도 바로 드러날 수 있게함
  - 사소한 변경이라도, 해시 참조에 손상이 발생하여 변경이 뚜렷함
- 트랜잭션 이력에 변경된 데이터를 끼워넣으려면 엄청난 양을 다시 작성하도록 강제함
  - 원하는 지점부터 마지막까지 전체를 다 바꿔야함
- 트랜잭션 이력에 데이터를 추가 벼녕 재작성하는 작업에 엄청난 계산량이 필요하도록 함
  - 블록체인에서는 해시 퍼즐을 풀게 한다
    - 해시 퍼즐은 난스와 데이터의 조합으로 원하는 형식의 해시함수를 나오게하는 간단하지만 리소스가 많이 소요되는 퍼즐이다
→ 난이도는 조정이 가능하며, 각 블록체인 환경에서 조정 정책이 존재한다.
  → 비트코인의 경우, 600초에 1개 블록이 생성되도록 유도한다.
![[_attachments/notion/블록체인-입문서-정리-(-블록체인-무엇인가---정리-)/245172a556d6810caf90e29768ff2d42.png]]

17단계 - 컴퓨터들이 정보를 배분하는 방법 - 그 소식 들었어? 새로운 피어가 들어왔대!

P2P 시스템은 구성하는 개별 컴퓨터들이 트랜잭션이 발생할 때마다 적절히 통보받아 자신의 트랜잭션 데이터 이력을 관리할 수 있도록 보장해 주는 것이다.
→ 해결해야할 과제 : 시스템의 모든 노드가 중앙에 의지하지 않고 모든 트랜잭션 정보를 수신하도록 ㅎ주는 것이다.
작동원리
- 기존 연결 유지 → 네트워크 유지
  - 각 피어는 독립적인 피어 리스트를 유지한다. → 전체 피어의 부분 집합
- 새로운 연결 → 네트워크 추가
  - 시스템의 추가 요청을 보내면, 각 피어가 요청에 대한 리스폰을 한다. 리스폰된 피어는 요청한 피어의 피어 리스트에 들어간다
- 새로운 정보 배포 → 트랜잭션 추가
  - 지속적인 방식
    - 새로운 정보 발생 동시에 시스템에 배포 → 궁극적으로 모든 피어에 전송
  - 갱신 방식
    - 재연결되었을 때, 끊긴 시간동안 있었던 정보를 모두 수령받는다
  - 온보징 정차의 일부로 갱신
    - 새로운 피어가 추가되면 정보가 하나도 없다. 이런 경우 모든 정보를 제공한다.
> 궁극적으로는 모든 피어가 정보를 받는다

18단계 - 블록체인 속 무한경쟁 사회 - 당근과 채찍으로 새 트랜잭션 검증 및 추가하기

트랜재션의 검증과 추가 과정은 블록체인 알고리즘의 꽃이다.
이 과정에서 필수 요소는 5가지이다
검증 규칙 
  - 유효한  트랜잭션 데이터와 블록 헤더만으로 구성되어야 한다. 
  - 작업 증명의 확인과 해시 퍼즐을 통해서 정당성을 검증 받는다
보상
  - 블록 생성하려면 고유의 해시 퍼즐을 풀어야 한다. 해시 퍼즐을 풀기 위해서는 현실의 리소스와 자본이 소비되고 이를 보상하는 제도가 필요할 것이다. (비트코인 채굴 같은 느낌)
처벌
  - 현실의 리소스와 자본이 소비된다고 했다. 만약 보상을 받지 못하면 현실에서 소비된 자원은 회복할 수 없기 때문에 보상이 없다면 일종의 처벌이 된다.
경쟁
  - 기여한 바가 없거나, 미미한 노드에게는 보상을 지급하여 자원(내부 자원)을 낭비하는 것을 방지해야한다. 속도의 경쟁, 품질의 경재을 유도한다
피어 통제
  - 시스템의 모든 노드는 유효하지 않은 트랜잭션 데이터와 블록의 감지, 거절, 제거에 기여한다.
부정직한 행위
- 다른 사람으로 위장해 트랜잭션 제출
- 유효하지 않은 트랜잭션 데이터나 블록을 인정
- 노드를 다운시키기 위해 수많은 트랜잭션 데이터를 전송
- 특정 트랜잭션의 처리를 거부
- 정보 전달의 거부
부정직한 경우 처리 방법
- 공개키, 개인키를 기반으로 소유권을 인증 및 승인
- 소문 형식의 통신은 결국 모든 노드가 모든 정보를 수신받는다
- 전체 시스템은 계속 작동하도록 시스템 아키텍처를 구성
- 블록체인-알고리즘 ( 합의 알고리즘)
> 항상 모든 전제는 정직한 노드가 51% 이상이여야한다.

19단계 - 컴퓨터들도 라인을 잘 타야 살아남는다 - 노드들이 갈림길에서 일관되게 선택하는 방법

명확한 단일 트랜잭션 이력만 유지하도록 하여, 항상 동일한 요청에 대한 결과를 유도
중앙 통제 방식에 의존하지 않고 단일 트랜잭션 이력을 식별하는 방법을 찾아야한다
독립적으로 행동하는 개인들(피어)에 의해 합의한다 → 분산 합의
계산의 노력이 가장 큰 트랜잭션을 권위 이력이라 칭하고 이를 정식 트랜잭션으로 인정한다.
계산에 대한 노력을 측정하는 방법은 두가지가 존재한다
- 가장 긴 체인
  - 체인의 길이
- 가장  무거운 체인
  - 난이도를 계산(가중치)
선택 받지 못한 체인
- 고아 블록
  - 권위 체이이 아닌 모든 블록은 버려지게 되는데 이 블록을 고아블록이라 한다
- 보상 회수
  - 블록을 추가하면서 받았던 보상들을 회수한다.
- 소유권 명확화
  - 고아 블록은 발생한 적 없었던 블록으로 취급받는다
- 트랜잭션 재처리
  - 고아 블록들은 다시 수신함으로 들어가 재처리된다
- 공통 몸통의 성장
  - 공통 몸통을 깊게 들여다 볼 수 록 권위 체인이 명확해 진다.
- 궁극적 일관성
  - 권위 체인의 성장은 항상 피어들에게 결정되고 공평하다. 순전히 해시 퍼즐을 푸는 실력에 달린 문제이다. → 시간이 지나며 블록이 많아 질수록 권위 체인에 포함될 가능성이 높아지는 현상
- 조작에 대한 견고성
  - 대다수 노드가 유지하는 경로를 뒤집어 엎는 행위는 가능하지만 불가능하다 → 이론상 가능
> 권위 체인의 블록 일부를 고아 블록으로 만들고 트랜잭션 데이터의 새로운 권위 체인을 생성하여 공격자에게 혜택이 돌아가게 조작하는 행위 → 이 행위는 자신의 권위가 51% 이상이여야 가능하다
그 유명한 51% 공격
→ 개인의 권위는 투표용지와 비교된다. 자신이 얼마나 해시 퍼즐을 풀었는지, 얼마나 어려운 퍼즐을 풀었는지 가 자신의 권위를 나타내고 권위 체인 선정에 영향력을 끼친다. 어느 한 개인에게 이 투표용지가 쏠리면 안된다. 따라서 시스템은 이런 사용자의 퍼즐 난이도를 상승 시켜 블록의 생성 속도를 조절한다

20단계 - 참 잘했어요. 보상은 비트코인입니다 - 보상으로 지불할 결제 수단의 조건

블록체인의 중요한 개념인 보상과 처벌은 트랜잭션 수수료와 작업 증명에 기반을 두고 구현된다.
- 시스템 무결성에 대한 영향
  - 보상으로 사용되는 결제 수단의 가치에 대한 이슈가 생기면 무결성도 깨진다
- 시스템 개방성에 대한 영향
  - 보상이 만약 특정 국가에서만 통용된다면? 특정 국가만 결국 이 시스템을 사용할 것이다.
- 시스템의 분산 속성에 대한 영향
  - 지불 수단이 만약 중앙기관의 통제를 받는 다면? 결국 블록체인 전체가 통제 받는 셈
- 시스템 철학에 대한 영향
  - 결제 수단의 특성에 대한 문제, 보상에 대한 신뢰성을 어떻게 담보할 것인가?
바람직한 결제 수단의 조건
- 디지털 형태로 제공해야한다.
- 실생활 결제 수단으로 인정 받아야한다.
- 모든 국가에서 인정된 수단이여야 한다
- 이동에 제한이 있어서는 안된다.
- 안정적인 가치를 가져야한다.
- 신뢰성이 있어야한다.
- 국가의 통제를 받아서는 안된다.
조건이 너무 어렵다 ^^ → 현재 존재하는 모든 통화 조차 이 조건을 모두 만족하지 못함
빵집에서 월급을 빵으로 주는 것으로 이 책에서는 블록체인을 비교했다.
비트 코인에서 채굴을 진행하면 비트 코인을 주는 것 처럼 말이다.

21단계 - 블록체인이라는 퍼즐 완성하기 - 앞단계에서 배운 내용 총정리

앞 내용 정리!
블록 체인은 소유권 관리의 다음 측면을 다루는 순수 분산 P2P 시스템이다.
- 소유권 기술 : 데이터 이력
- 소유권 보호 : 디지털 서명
- 트랜잭션 데이터 저장 : 블록체인-데이터-구조
- 배포할 원장의 준비 : 불변성
- 원장 배포 : 네트워크를 통한 소문 형식의 정보 전달
- 새로운 트랜잭션 처리 : 블록체인-알고리즘
- 진실을 담고 있는 원장 찾기 : 분산 합의
…

블록체인의 한계는 무엇이고 어떻게 극복할 것인가?

주요 제약 사항을 살펴보고, 그 이유와 극복 방법에 대한 아이디어를 개략적으로 설명한다.

22단계 - 냉정하게 한계점 바라보기 - 블록체인의 기술적, 비기술적 제약사항

기술적 문제점 7가지
- 개인정보 보호의 부재
  - 블록체인의 투명성(데이터)은 개인정보보호에 치명적인 제약 요인이다
- 보안 모델
  - 개인키의 분실하면 계좌가 뻇긴다 → 사실 문제점은 아닌거같음 개인키는 자기가 지켜야지..
- 제한적 확장성
  - 데이터 추가(블록 추가)를 의도적으로 제한했다 → 권위의 공평성 →  이점으로 처리 속도가 줄었고 이어서 확장성 역시 제한되었다.
- 고비용
  - 전체 비용은 해시 퍼즐의 난이도에 달려있다. → 정책 설정의 중요성
- 숨겨진 중앙 통제
  - 시스템의 무결성의 소수의 권위자에 의해 결정되는 상황
- 유연성의 부재
  - 블록체인 프로토콜의 버그를 고치거나 수정하는 것이 무척 어렵다
- 임계 크기
  - 대다수의 시스템 계산 자원이 정직한 노드에 의해 통제된다는 가정에 기반, 최소한의 규모를 넘어서는 것이 모든 블록체인이 무방비로 노출되어 있는 51% 공격을 막아낼 수 있는 방법이다.
비기술적 문제점 2가지
- 법적 수용성 부재
- 사용자 수용성 부재

23단계 - 다시 태어난 블록체인 - 한계 극복을 위한 네 가지 변형 등장

두가지 갈등 상황을 해결하기 위한 4가지 버전의 블록체인
- 투명성 vs 개인정보보호 → 데이터 읽기와 관련
- 보안 vs 속도 → 데이터 쓰기와 관련
→ 공개 & 승인 ⇒ 쓰기 비허용, 읽기 허용
→ 비공개 & 승인 ⇒ 쓰기 비허용, 읽기 비허용
→ 공개 & 무승인 ⇒ 쓰기 허용, 읽기 허용
→ 비공개 & 무승인 ⇒ 쓰기 허용, 읽기 비허용
공개 - 무승인 → 모든 권한 허용이 블록체인이다 → 순수 P2P 시스템

오늘, 그리고 앞으로의 블록체인

블록체인을 어떻게 사용할 수 있는지, 응용 프로그램을 선택할 때 어떤 질문을 가지고 접근해야하는지 설명한다.

24단계 - 우리도 블록체인을 써볼까? - 유망한 응용분야 알아보고, 타당성 확인하기

블록체인은 어떤 데이터든 저장하고, 영향받지 않는다
- 존재 증명
- 비존재 증명
- 시간 증명
- 순서 증명
- 신원 증명
- 저작권 증명
- 소유권 증명
뜨는 응용 분야
- 결제
- 암호화폐
- 소액결제
- 디지털 자산
- 디지털 식별
- 공즈
- 준법 감시 감사
- 세금
- 투표
- 기록관리

25단계 - 블록체인의 미래 그려보기 - 블록체인의 변화 과정, 성과, 잠재적 약점

블록체인은 탈중개화, 자동화, 스마트 계약, 등 여러 대안의 혁신적인 기술은 분명하다, 아직까지 여러 연구가 진행 중이고, 지속적인 발전과 개선이 이뤄지고 있다.
문제점
- 개인정보 보호의 부재
- 개인적 책임감 상실
- 실업
- 재중개

출처