1.1 4차 산업혁명
(1) IoT, 로보틱스, 자율주행자동차, 드론 3D 프린팅, 나노기술, 챗봇, 핀테크 등
(2) 각종 센서를 통한 수 많은 데이터 전송
(3) 데이터 저장, 가공, 분석 예측 및 보안
(4) 인공지능과 블록체인이 핵심 역할을 할 것으로 예상
(1) 온라인에서 오프라인(red)으로
(2) ICT와 제조 서비스업이 결합된 온라인 투 오프라인(O2O) 서비스를 통해 실생활과 디지털 세계를 통합
(3) 인공지능의 빅데이터 분석을 통한 예측 및 의사결정
- 신뢰할 수 있는 데이터?
- 의사와 환자
(1) 초연결성과 초지능성에 의한 다양한 신기술로 경제 및 산업 등 모든 분야에 영향을 미치고 생산성을 향상
▷ 신뢰할 수 없는 사회에서의 의사결정 : 블록체인
(2) 인간의 실생활과 업무 방식, 서로의 관계를 맺는 방식까지 바꿔 놓을 기술혁명
(3) 기존 1~3차 산업혁명과는 차원이 다른 파급력을 가질 것으로 예상
(1) 낙관론
- 적게 일하고 더 잘사는 세상이 올 것
- 과거 증기기관을 통한 1차 산업혁명이 인류를 고된 육체노동에서 해방시켰듯이 4차 산업혁명의 디지털기술이 정신노동을 대체할 것
- 글로벌 경제의 저성장 문제를 해결해 줄 열쇠
(2) 비관론
- 부의 불평등 더 심화될 것
- 일자리 부족
- 기계의 지배와 인류의 멸망?
(3) 부정확한 정보와 블록체인
Twitter - Yann LeCun
Tech Insider - Sophia
1.2 블록체인: 탐험의 시대
* 블록체인 기술은 완성된 프로그램이 아님
* 무수히 많은 시행착오, 선택의 갈림길, 실패를 접하게 될 것임
* 수학적 원리, 알고리즘, 코딩 뿐만 아니라 법률적 문제(특히 스마트 컨트랙트), 비즈니스 활용 등등 문제가 산적해 있음
* 단순한 테크닉을 학습하는 것이 아니기 때문에 복잡하게 얽힌 문제에서 핵심을 파악하고 단순화하여 해결하는 능력의 극대화, 비즈니스의 접목 능력이 모두 필요함
* 궁극적으로 가치에 대한 확신과 신념, 철학이 필요함
2.1 암호화폐(cryptocurrency)
* 화폐?
* 결제 수단?
* 자산?
* 자산
▷ 개인이나 법인이 소유하고 있는 경제적 가치가 있는 유형 무형의 재산
2.2 암호화폐 vs 가치 vs 자산?
조르주 쇠라: * 그랑자트 섬의 일요일 오후 * 신인상주의 선언문 레오나르도 다빈치 * 살바토르 문디 * 경매가 약 5000억원
|
* 디지털 시대의 전자화폐의 가능성 연구 * 더블 스펜딩과 중앙관리시스템 * 가치 0? * 자산? |
2.3 암호화폐(cryptocurrency)의 탄생
3.1 전자화폐
* 전자상거래의 발전에 따른 사회적 니즈
▷ 인터넷 상거래는 대부분 금융기관을 제 3자 신용기관으로 하는 전자지불 방식에 의존
* 198?3년 암호학자 David Chaum이 처음으로 digital cash라는 개념을 도입
* 전자화폐의 문제점
▷ 중앙관리시스템과 더블 스펜딩
3.1 전자화폐의 발전
3.3 비잔틴 장군 문제
* 실제 있었던 일이 아니라 컴퓨터 공학에서 만든 가상의 문제로 비잔틴 장군들이 적군을 공격하기 위해 서로 합의를 하는 문제
* 전자화폐가 당면한 문제: 신뢰할 수 없는 사람들끼리의 계약
* 장군들은 지리적으로 떨어져 있고 다음의 2가지를 가정
▷ 장군들 중 배신자가 존재
▷ 장군들 사이에 메세지가 위조될 수도 있음
* 1982년 비잔틴 장군 문제에서 합의 결과를 정확하게 아는 방법을 발견
* 믿을 수 있는 장군이 2/3 이상일 때 승리할 수 있다고 증명
* 비트코인은 비잔티움 장군 문제에 대한 최초의 기술 구현(proof of work 사용)
4.1 비트코인
* 분산공유원장 : 금융기관 대신, 참여자 모두가 모든 거래내역을 블록체인으로 공유
* 해시와 전자서명 : 위변조 방지를 통해 소유자 보증
▷ 누구 계좌인지는 모름, 비밀번호 소유자가 주인
* PoW(Proof of Work)를 통해 블록을 생성할 수 있는 권한 부여
▷ 블록을 임의로 생성하지 못하도록 하고 거래의 시간을 기록
* 마이닝 : 코인을 지급하여 네트워크의 지속가능성 확보
* 머클트리 : 트리구조의 데이터 저장
* P2P 분산 네트워크
4.2 비트코인의 핵심기술
4.3 해시(Hash)
* (예시) x → x¹²³⁴ + 5678x + 90, 1234567890으로 나눈 나머지
* 지문처럼, 주어진 데이터는 단 하나의 해시 값을 가짐
* 데이터의 극히 일부만 바뀌어도 해시 값은 완전히 달라짐
* 해시 값으로 원래의 데이터를 거꾸로 유추하는 것은 불가능
* 데이터를 해시 알고리즘을 이용하여 동일한 길이의 문자로 변환하며 블록체인에서는 보통 16진수 64자리 사용
* 활용(암호, 데이터 무결성, PoW)
4.4 Merkle tree
4.6 작업증명(Proof-of-Work)
* P2P(peer-to-peer) 기반으로 분산 네트워크에서 블록체인을 작업증명 시스템을 이용하여 구현
* 원하는 형태의 해시를 제일 먼저 찾아내는 노드에 블록을 형성할 권리를 제공
* 원하는 해시는 해시의 첫 부분을 차지하는 0 비트의 개수를 말하며 작업의 난이도는 0의 개수에 따라 지수적으로 증가
* 주어진 개수의 0으로 시작하는 해시 값을 찾기 위하여 nonce를 변화시킴
4.7 Mining
* 주어진 조건의 해시를 찾은 노드가 새로운 블록을 구성하고 타임스탬프를 기록
* 네트워크는 대략 10분 간격으로 하나의 블록을 생성하도록 난이도 조정
* 각 블록은 타임 스탬프, nonce, 이전 블록에 대한 해시 및 이전 블록 이후에 발생한 모든 트랜젝션의 목록을 포함
* 시간이 지남에 따라 Bitcoin 원장의 상태를 지속적으로 업데이트하는 끊임없이 증가하는 블록 체인이 생성
* 노드는 항상 가장 긴 체인을 올바른 것으로 간주하고 확장을 계속 수행
4.8 Mining Process
채굴자 A
1. 블록체인 #1000번 채굴 중(nonce를 바꾸며 주어진 조건에 맞는 해시값 찾는 중)
2. 채굴하는 동안 새롭게 거래되는 정보를 메모리풀에 수집(다음 채굴 대비)
3. 블록체인 #1000번 채굴 정보 도착한다면...(예, 채굴자 B가 먼저 채굴 성공)
4. 채굴자 B가 만든 블록에 이상이 없는지 확인하고 이상이 없는 경우 이 블록을 인정하고 그 뒤에 #1001번째 블록을 만들 작업 준비
5. 메모리풀에서 1000번 쨰 블록에 포함된 거래 삭제(최근 거래라서 많이 겹치지는 않을 것임)
6. 메모리 풀에 있는 거래를 이용하여 후보블록을 만들고 1001번째 블록 채굴 시작
5.1 Protecting from an attacker
거래의 순서를 공격하는 공격자의 전략
1. 100 BTC를 신속하게 배송하는 판매자에게 전송
2. 물건을 배송 받음
3. 동일한 100 BTC를 자신에게 보내는 또 다른 거래 생성
4. 네트워크에 자신의 트랜잭션이 먼저라고 알림
1) 앞의 1번 단계가 수행되면 몇 분 후에 블록에 거래가 포함 (예 : 블록 번호 70)
2) 약 1시간 후에 해당 블록 다음에 5개의 블록이 체인에 추가
3) 추가된 블록들이 거래를 추가적으로 확인
4) 이 시점에서 상인은 지급액을 확정된 것으로 간주하여 제품을 인도 배송은 즉시 이루어진다고 가정
5) 이제 공격자는 100BTC를 보내는 다른 트랜잭션을 생성
5.2 51% 공격
6) 공격자는 블록 체인의 "포크 (fork)"를 생성
▷ 부모가 동일한 블록 69이지만 다른 버전의 블록 70를 채굴
▷ 블록 데이터가 다르므로 작업 증명을 다시 실행
▷ 또한 공격자와 새 버전 70 블록은 다른 해시를 가지고 있으므로 원래 블록 71에서 75까지는 포함하지 않으므로 원래의 블록과 공격자의 새로운 블록은 완전히 별개
7) 블록체인 네트워크에서는 포크에서 가장 긴 블록체인을 진짜로 받아들이기 때문에 다른 채굴자들은 75 블록에서 작업을 하고 공격자만 70 블록에서 작업을 수행
8) 따라서 공격자가 자신의 블록 체인을 가장 길게 만들기 위해서는 나머지 네트워크보다 더 많은 계산 능력이 필요(51% 공격)
5.3 Genesis block
5.4 Bitcoin as a state transition system
* 상태와 상태변환함수로 구성된 시스템
▷ 상태 : 소유자의 비트코인 주소와 아직 지출되지 않은 모든 금액
(UTXO, Unspent Transaction Outputs)의 집합
▷ 주소 : 20 바이트로 주어지며 본질적으로 암호 공개 키임
▷ 상태변환함수, APPLY(S, TX) → S' 또는 Error
* APPLY({ Alice: $50, Bob: $50 }, "send $20 from Alice to Bob")
=▷ { Alice: $30, Bob: $70 }
* APPLY({ Alice: $50, Bob: $50 }, "send $70 from Alice to Bob")
=▷ Error
5.5 Bitcoin 스크립트와 Turing-incompleteness
* Bitcoin 프로토콜 수행을 위한 프로그램
* Bitcoin 스크립트 언어가 지원하는 많은 작업이 있지만 for 문과 같은 loop 기능은 제공하지 않음
* 트랜잭션 검증 중에 무한 루프에 빠지지 않게 하기 위함이 목적
* if 문으로 기본 코드를 여러 번 반복함으로써 모든 루프를 시뮬레이션 할 수 있지만 비효율적
6.1 Ethereum의 출현
* 2세대 블록체인 : 새로운 블록체인 이더리움 구축
* 2013년 백서 발간(비탈릭 부테린)
* 2015년 프레임 공개
* 일반화 된 프레임워크
* 비트코인의 스크립트 개선하여 스마트 컨트랙트 구성