1일차-블록체인 기본 개념

블록체인의 정의와 기술적인 측면을 설명하고, 채굴원리 Consensus Algorithm인 리더선출(POW, POS)방식과 투표(BFT, DPOS)방식을 설명한다. 또한, 블록체인과 상호작용하는 스마트 컨트랙트를 살펴보고 비트코인, 이더리움 구조를 살펴보자.

4회차 핀테크 아카데미 블록체인 교육
2022-07-18 ~ 2022-07-22 (35H)

feat - 서중원 강사님


참고로
mastering bitcoin(이론), mastering ethereum(실습) 두가지 책을 제일 추천하셨다.



블록체인의 시작

많은 사람들이 비트코인을 사고팔고 하면서 관심이 많은데,
블록체인이 뭔지 설명할 수 있거나 관심이 있는 사람들은 적다.

비트코인의 시초는 전자 거래를 간단히 하기 위함에서 나왔다.



블록체인 정의

정의가 명확하게 내려진 게 아니기 때문에 핵심만 얘기하자면,
분산DB이고 신뢰를 만드는 기계이다.

1) 경제 돈이 되는 무언가(비트코인 같은것)

  1. 사회 현실을 바꿔줄 무언가(중앙 집중화에서 탈 중앙화 )
  2. 기술 혼합된 무언가(다양한 기술에 접목)


경제, 사회는 유튜브에 많으며 전문가들도 많다.
따라서 우리가 중점적으로 교육할 것은 기술 부분이다.



블록체인 근황 (2022년 기준)

블록체인은 사람들에게 알려지는 킬러앱이 없다. 아직은 비트코인이 강세이다.

코인 -> 스마트 컨트랙트(ICO) -> 분산 신원 인증(DID) -> 탈 중앙화 금융(DEFI) -> Metaverse, Non-Fungible Token(NFT), Play to Earn, Web3

요즘은 메타버스Web3가 블록체인의 최대 키워드이다.


NFT 정의에 의하면 거래 내역을 증명할 수 있으므로 소유권 증명이 가능하다고 했는데,
opensea에서 사진을 다운받아올 수 있고 사용해도 법적 제재를 아직은 받지 않는다.
이게 아직 현실의 문제점이므로 투자하려면 이건 꼭 감안하길 바란다.


Web1은 온라인에 접속하여 정보를 가져온다. (대표적 예시로 웹브라우저)

Web2는 온라인에 접속하여 사용자가 콘텐츠를 생성할 수 있다. 유튜브, OTT 같은 플랫폼들 이런 것들을 의미한다.

Web3 는 되게 호불호가 많이 갈린다. 유저가 읽기, 쓰기, 소유가 가능하다. 소유를 위한 암호화폐를 사용한다.
아직 완전하게 정착한 Web3 서비스는 없으며 모두 실험 단계이다.


핵심 기술 : Consensus Alog, P2P Network, Hash Alog, Key, Smart Contract



P2P Network

컴퓨터 간의 연결이 목적이며 www인 초기 인터넷과 유사하다.
현재 시대에서 예시로는 TORRENT(토렌트)

우리가 생각하는 클라/서버와 비교하자면 P2P서버가 없이 파일 공유 시스템이다.

Pure P2P(서버X)는 이상이고, 현실은 Hybrid P2P(인덱스 서버 필요)이다.
블록체인도 Hybrid P2P와 실제론 비슷하다고 한다.
현재까지는 이러한 구조이고, 서버를 없애고 싶어서 IP 리스트를 코드상에 넣어서 하는 곳도 있긴 하다고 한다.



Hash Algorithm

너무 기초 알고리즘이다. 궁금하면 구글링 하자.

다만, 한편으로 양자 컴퓨터가 발전되면 해시 키가 뚫릴 거라고 얘기도 하는데, 어차피 해시함수도 양자 컴퓨터로 만들면 되기 때문에 큰 문제는 없을 것이다.



Key

키가 없는 경우 누가 메시지를 보냈는지 모름

암호학에서의 키는 암호화, 복호화할 때 사용하며
통신에서의 키내가 보냈다는 것을 증명하기 위함인데, 블록체인도 마찬가지이다.

대칭키는 하나의 키로 암호화 복호화를 진행한다.
비 대칭키Pubilc key, Private key가 존재한다. 블록체인도 마찬가지이다.
private key가 pubilc key를 만든다. => 나중에 실습할 때 확인할 수 있다.


데이터의 출처를 밝히기 위해서 Key를 사용

  • Node A – (txt1) –> Private Key -> Signature -> Signature, Public Key -> Node B
    • 보통은 이런형태로 컴퓨터A -> 컴퓨터B로 데이터 전송하는데,
  • 해커 – (txt2) –> Node B
    • 해커처럼 키 없이(Public Key) 접근하면 컴퓨터B는 txt2 데이터를 받지 않는다.



Consensus Algorithm

리더 선출 - 특정 알고리즘을 통해 리더를 선출 후, 대표자가 블록을 생성한다.

  • 작업증명(POW), 지분증면(POS)

투표 - 모든 노드가 참가하여, 투표를 진행해서 리더가 존재한다.

  • 실용적 비잔틴 장애 허용(PBFT=BFT), 위임 지분 증명(DPOS)


작업증명(POW) = 채굴이란 특정 Hash 함수를 주고, Input 값을 맞추는 과정이다.

예로 처음 키가 helloworld123을 해시함수로 변환하면 해시키(엄청 긴)가 나오는데,
여기서 작업증명은 해시키에서 일련의 단어를 만들며 (helloworld xxx)
뒤에 xxx인 숫자 3개만 구해봐라 이런 것이고, helloworld 000부터 구해가면서
제일 먼저 helloworld 123을 구한 사람이 블록을 생성할 수 있는 권한을 가지는 것이다.

즉, Input 값을 가장 빨리 맞추는 사람이 블록 생성 권한 가지며 이 사람이 일을 제일 많이 했기 때문에 정직한 노드라 할 수 있다.

다만, 컴퓨터 자원 낭비가 심하다 - 작업 증명의 한계


지분증명(POS)은 이러한 자원 낭비 등을 해결하기 위함이다.(작업 증명의 한계 해결)
지분에 따라서 블록 생성 권한을 주는 방식이다.

예로 helloworld 1234를 helloworldxxxx에서 또 구해봐라 이러는데 여기서 hint를 주는형태이다. helloworld12xx 이나 helloworld123x 처럼 지분을 많이 가진 이에게 주는것이다.


실용적 비잔틴 장애 허용(PBFT=BFT)은 클라이언트가 블록을 제시하고 해당 블록에 대해서 매번 투표를 진행하는 방식


위임 지분 증명(DPOS)은 미국의 대통령 투표와 유사



Smart Contract

코드의 조각이며 블록체인과 상호작용을 하는 인터페이스이다. 이더리움에 적용하였다.

input -> output처럼 정말 간단한 코드이다. 자판기를 스마트 컨트랙트라고 생각하고, 동전을 넣으면 음료수를 뽑아주는데 이러한 원리이다.


블록체인 플랫폼 : 비트코인, 이더리움, 하이퍼레저 페브릭, 클레이튼



비트코인

블록체인 기반의 최초의 암호화폐

알고리즘에 의해 각 블록이 10min쯤마다 생성(POW알고리즘)

비트코인 원리


해시키 구조

비트코인의 해시키 구조



소프트포크, 하드포크

소프트포크 간단한 업데이트
하드포크 대규모 업데이트

소프트포크와 하드포크



블록구조

블록의 구조

블록헤더의 정보



거래과정

비트코인 거래과정

비트코인 거래과정 상세

비트코인 거래과정 상세2



노드의 구성

노드의 구성



키, 주소, 지갑

개인키 –(ESDSA)–> 공개키 –(Hash)–> 주소

ESDSA(타원곡선 디지털서명 알고리즘)도 다양한 알고리즘이 존재



합의 알고리즘(예:POW=작업증명)

비트코인의 총량이 약 2100만 비트코인으로 고정되어 있고,
2140년이 될 동안 작업증명(채굴)을 통해 생성된다.
해시 알고리즘의 특징을 활용하여 사용된 알고리즘이다.
10분 안에 풀 수 있게 되어있다.

nonce값은 문제의 정답인데, 10분보다 너무 빨리 맞추게 되면 난이도를 diff나 등등 올려서 nonce값이 좀 더 어려워진다. 반대로 10분보다 너무 늦게 맞추게 되면 nonce값이 좀 더 쉬워진다.



블록분기

6승인 덕분에 51% 어택이라는 해킹에 안전을 보장받을 수 있다.

블록분기 6승인



블룸필터

특정 원소가 집합에 속하는지 검사하기 위한 자료구조
비트코인에서는 거래 식별을 위해 사용
현재 잘 사용하지는 않는다고 함.

긍정 오류가 발생할 확률이 있으나, 틀린 건 확실하게 파악 가능

블룸필터



머글트리

블록 헤더에서 머글루트 쪽에 있으며, 이진 해시 트리이다.
해당 블록에 들어있는 모든 거래의 요약본이다.
특정 거래가 블록 내부에 포함되는지 여부를 검증하는 데 효율적이다.



이더리움

스마트 계약이 핵심인 비트코인처럼 암호화폐로 거래 중이다.

비트코인에 비해 블록헤더 부분에 좀 더 많은 것들이 들어가 있다.

인터넷처럼 새로운 인터넷 시대를 위한 기반이며 이를 목표로 하고 있다.

강사님은 탄생은 비트코인이지만 블록체인의 활성화와 미래는 이더리움이 계속 주목받는다고 생각하신다.



이더리움의 역사

ICO란 기업이 주식에 상장하는 것처럼 ICO코인으로 한다는 것.

Defi란 은행의 적금, 예금, 대출 이런 서비스들을 의미한다.

NFT란 스마트 컨트랙트 기반으로 동작한다.



블록구조

이더리움이 합의 알고리즘을 바꾸려고 노력 중이다. pow에서 pos나 poa, sharing등으로 쓴다고는 하는데 아직도 pow를 사용 중이다.

이더리움 블록구조

블록헤더



구성요소

총 3개의 머글 패트리샤 트리 를 활용
State Tire, Tranaction Tire, Receipts Tire
다만, 실습할 때는 이 자료구조는 볼 수 없을 것이다. 그냥 내부적으론 이러한 자료구조가 사용된다고 이해만 하자.


이더리움의 계정

이더리움 계정


이더리움의 트랜잭션

이더리움 트랜잭션


이더리움의 가스

무한 루프 등을 막기 위한 이더리움의 수수료
트랜잭션 실행을 위해서는 가스를 지불해야함


이더리움의 상태 데이터

이더리움 State



이더리움 도구

이더스캔 - 이더리움 네트워크가 어떻게 동작하는지 다 볼 수 있다.

고 이더리움-geth - 해당 클라이언트 이용해서 이더리움 네트워크를 사용할 수 있음

Remix - 개발 툴(이클립스처럼)

Ganache - 이더리움 네트워크를 가상머신으로 돌려준다.

Web3.js - Web3.js 이다. 실제로 우리가아는 Web3랑은 다른 개념인 패키지이다.



이더리움 가상머신

스마트 컨트랙트 배포 및 실행 처리를 담당한다.
튜링 완전한 기계가 가능하도록 한다.

말만 스마트 컨트랙트이지 코드의 조각일 뿐이다.
한번 배포하면 수정할 수 없기 때문에 반드시 많은 테스트 후 배포해야 하며,
그래도 문제 있을 때는 해당 스마트 컨트랙트를 없앨 수는 없고 재배포를 해야 한다.

이더리움 가상머신

스마트 컨트랙터 언어 Solidity를 제일 많이 사용
그다음으로는 Viper를 사용

네트워크는 노드(컴퓨터) 간에 연결(요청, 응답)된 구조이고,
모든 노드(컴퓨터)가 동일한 데이터(블록체인)를 보유한다.

스마트 컨트랙트 배포를 한다면? 블록체인에 블록을 추가할부분 찾아서(pending), 뒤에 추가하는 것 같다.
그리고 추가되면 다른 노드(컴퓨터)들도 네트워크 연결(요청, 응답)을 통해 해당 추가한 블록을 가져가서
자신의 블록체인에 추가하기 때문에 블록체인에 블록 추가가 가능한 것 같다.



하이퍼레저 페브릭

퍼블릭 블록체인 - 네트워크상 누구나 가능
프라이빗 블록체인 - 허가받은 자만 가능

퍼블릭과 브라이빗 블록체인 프로젝트

페브릭이 기술은 좋은데 너무 많은 시간을 투자해서 구축해야하기 때문에 요즘은 기업들이 사용하지 않으려고 한다고 한다.

BESU이더리움 기반인데 SAWTOOTH보다는 BESU 추천한다고 함. 이더리움GO언어, BESU자바 언어로 구성되어 있다.



하이퍼레저 베수

자바 언어로 작성된 이더리움 클라이언트
이더리움과 동일하게 동작하며, 이더리움의 테스트 넷에서도 동작
POW와 QBFT, IBFT를 사용
엔터프라이즈용



클레이튼

고정적인 노드가 있어서 이들이 네트워크를 구조하고 있다는 게 특징

외부에 EN이 사용자 노드이며, 트랜잭션이 발생하면 EN -> PN -> CN 이렇게 흘러간다.

자세한 내용은 구글링을 참고하자.

클레이튼

댓글남기기