본문으로 바로가기

block chain에 대한 이론 전반

category ⛓️ blockchain/⛓️ blockchain 2020. 12. 6. 02:05

blockchain

유튜브에 쉽게 설명한 영상이 너무나도 많다.

 

다만 암호 화폐의 인기 때문에, 블록체인이 곧 암호화폐인 것은 아니다.

  • 블록체인은 정보(데이터 블록)를 기록하는 특별한 기술입니다.
  • 암호 화폐는 블록체인을 이용하는 가장 인기있고, 잘 알려진 방법입니다.
  • 다음으로, 비트코인은 가장 인기있고, 잘 알려진 암호 화폐입니다.

 

Hash?

 

종종 해시 함수를 사용해왔는데 그래서 해시가 뭐냐?고 물으면 뭐라고 대답해야할까?

임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수다.  너무 추상적이다. 구체적으로는 단방향 암호화 정도로 말하면 된다.

 

해시 함수는 SHA-2(e.g.,SHA-256), SHA-3(e.g.,Keccak) 등이 널이 쓰인다. 요새 블록체인에서는 Keccak-256이 자주 사용된다고 함. 물론 SHA 256도 많이 쓰인다. 이더리움은 내장으로 keccak-256을 사용한다.

 

근데 왜 256일까?  해시 함수는 기본적으로 입력 스트링을 랜덤 256비트 16진수로 매핑하기 때문이다.

때문에 CE06092FB948D9FFAC7D1A376E404B26B7575BCC11EE05A4615FEF4FEC3A308B 이렇게 보인다.

 

1. 하나의 데이터에서 오직 단 하나의 해시가 도출

2. 임의의 데이터 X와 Y가 있을 때

  a. if X==Y then H(X)==H(Y)

  b. if X!=Y then H(X)!=H(Y)

  c. if H(X)==H(Y) then X==Y

 

 

block 생성 주기

각 block은 자신과 연결된 전 block의 hash를 가지고 있다. block이 전 block의 hash를 가리킴으로서 연결된다. 따라서 자료구조적으로 보면 링크드 리스트이다. 

 

block은 트랙잭션(거래 정보, Tx)을 가지고 있다. Tx 하나 당 블록 하나가 아니라 여러 트랙잭션을 모아 한 블럭이 된다. 비트코인의 경우 10분마다 블럭이 생성된다. 이더리움은 15초, 카카오톡에서 만든 klaytn은 1초 정도. 

블록 생성 시간이 일정한 경우를 '블록 생성 주기'라고 표현한다. 이 생성 주기가 딱 맞추는 건 아니다. 어느 정도 차이를 내며 생성된다. 일정한 생성 주기를 가지기 위해 POW 방식 코인의 경우 문제의 디피컬티를 조정한다.

 

음... 그런데 생각해보자. 비트코인으로 무언가를 샀다. (Tx 발생) 그리고 그 Tx가 블록에 편입되려면 최장 10분이 걸린다. 결제에 10분이 걸린다는 의미인데 이것이 서비스 적으로 가능한 일일까? 현장 결제에서 비트코인을 이용하면 블록 생성 주기 때문에 문제가 있다. 그래서 klaytn은 1초를 지향한다. 물론 보험 등 시간이 중요하지 않은 Tx의 경우 더 긴 시간의 블록 생성 주기가 존재하는 것도 사용할 수 있다.

 

 

그리고 block의 위치를 height라고 부른다. 블럭을 쌓으면 높아지니까 height라고 부른단다.

geneseis block의 경우 block height는 0이다.

비트 코인의 경우 block height가 210,000 정도 쌓일 때마다 반감을 한다. (채굴 보상이 반으로 줄어듦)

 

 

 

block의 구조

 

매우 간략하게 block chain을 그림으로 표현하자면 아래와 같다.

 

 

이렇게 간단히 알고 있었는데 정확히 block의 내부 구조가 어떻게 생겼는지 살펴보자.

 

 

- 블록 해시 (블록의 식별자)

 

블록 해시는 블록의 식별자 역할을 한다. 그렇다면 어떤 정보를 모아 해쉬화 한 것이냐?

이전 블록 해시, 머클 루트, 타임, bits, nonce 정보 등을 모두 더해 SHA256으로 2번 해쉬화 한 것이다.

이 블록 해시는 다음 블록의 previous block hash로 들어가게 된다.

 

- 블록 헤더

 

version : 소프트웨어/프로토콜 버전. 해당 블록을 만든 프로그램의 버전 정보

perviousblockhash : 블록 체인 상 해당 블록 이전에 위치한 블록의 블록 해시. 이를 통해 블록이 연결됨.

marklehash : 머클 해시는 개별 트랜잭션의 거래 해시를 2진 트리로 구성했을 때 트리 루트에 위치하는 해시값

time : 블록이 생성된 시간. timestamp다. 

bits : 난이도 조절용 수치. 정확히는 난이도 해시 목표값을 의미하는 지표

nonce : 블록을 새로 생성하는 과정에서 POW 방식에서 해시를 변환하여 퀴즈를 만들기 위해 넣는 더미값. 논스(nonce)는 블록체인에서 목표값 이하의 블록 해시를 찾기 위해 임시로 사용하는 숫자이다. 넌스, 난스 또는 임시값이라고도 한다. 채굴(Proof-of-work) 행위가 바로 이 nonce값을 찾는 행위이다.

 

 

- 블록 바디

 

당연히 트랜잭션들이 들어 있다. 각 트랜잭션들의 해시값들이 모인 형태를 머클 트리라고 부른다.

 

brownbears.tistory.com/371?category=281929

 

previous block hash를 통해 아래와 같이 block이 연결될 수 있습니다.

 

 

 

머클 트리, 머클 루트(해시)

 

머클 트리는 Raph Merkle이 1979년에 고안한 개념이다. 일반 트리 알고리즘과는 다르게 머클 트리의 목적은 빠른 검색이 아니라 데이터의 간편하고 확실한 인증을 위해 사용한다. 머클 트리의 최상위 부모 노드는 머클 루트라고 부릅니다. 이 머클 루트는 블록 헤더의 머클 해시로 들어간다. 

 

앞서 살펴본 블록에서 헤드에는 머클 해시라는 것이 존재한다. 머클 해시는 머클 트리의 상단 노드인 머클 루트다.

 

말이 조금 어려운데 그림을 보면 쉽다. 각 트랜잭션들을 sha256으로 암호화하고

짝을 지어 sha 256으로 또 해시화 합니다. 이를 반복하면 최종적으로는 하나의 해시값이 생기고 해당 해시값이 머클 루트로 들어갑니다.

 

 

 

 

블록 체인 네트워크

 

 

블록 체인은 기본적으로 p2p(peer to peer) 네트워크이다.

 

우리가 일반적으로 서비스를 구현할 때 클라이언트 - 서버 간 통신을 한다. 이 구조에서 일반적으로 클라이언트는 연산을 적게하고, 많은 양의 데이터나 연산이 필요한 경우 서버에 요청을 보낸다. 당연히 서버쪽이 연산력이 있는 컴퓨팅을 지원한다. 이러한 구조를 클라이언트 - 서버 구조라고 부른다.

 

그러나 p2p는 모든 노드가 연산력이 있고, 서로 req, res를 주고 받는다. 대표적인 p2p 네트워크로 토렌트가 존재한다. 블록체인의 개념이 p2p와 함께 사용된다.

 

여튼, p2p 네트워크에서 모든 노드는 모든 블록체인을 동일한 순서로 가지고 있다. 이는 특정 노드에서 변조가 일어나서 다른 노드와 공유하여 위조를 막을 수 있게되는 장점이 있다.

 

 

블록 체인에 블록을 추가하고 싶다? => 합의(consensus)

 

블록 체인에 블록을 추가하려고 한다. 블록 체인에 블록이 추가되려면 자격이 있는 노드가 추가를 제안한다.

 

블록 제안 자격은 채굴 조건을 만족했을 때이다. 특정 노드에서 비트코인을 POW 방식으로 채굴했다면 채굴한 해당 노드는 블록 체인에 새 블록을 넣자고 제안할 수 있는 자격이 되는 것이다.

 

체인에 추가하자고 제안된 블록은 노드 참여자들이 검증할 수 있어야 할 수 있어야 함.

 

이 제안에 대해 정해진 기준 혹은 과반수의 노드가 블록을 검증한 후 추가하자고 합의(consensus)한다면 블록체인에 추가된다.

 

블록체인에 블록이 추가되면 모든 노드들은 동일한 블록체인을 가지고 있어야 하므로 체인을 동기화한다.

 

 

 

 

채굴 방식(합의 알고리즘) POW, POS, DPOS...

 

POW(proof of work, 작업 증명) = 노가다

brownbears.tistory.com/366?category=281929

 

nonce 값을 찾는 것이 채굴이다. 그런데 이 해시 함수는 사용했다시피 단방향이다. 따라서 복호화는 불가능하고 일일히 대입 (소위 노가다)을 하셔서 nonce값을 때려 맞춰야 한다. 단순간 값을 병렬적으로 처리할수록 채굴에 유리하므로 GPU가 주로 사용된다. 이러한 작업을 POW(proof of work, 작업 증명)이라고 한다.

* 다 같이 모여 푸는 mining pool을 형성하여 풀 수도 있다.

 

모네로, 비트코인, 이더리움 등이 POW 방식으로 채굴된다.

 

POW 방식하면 GPU를 공장처럼 세워놓고 가동하는 채굴 공장이 떠오르는데 당연히 비트코인 채굴 보상보다 전기세가 더 많이 나오는 등의 부작용이 있어 비판의 대상이 되곤한다. 여튼, nonce 값을 찾은 노드는 블록 체인에 블록을 추가 제안을 할 수 있게 되고, 다른 노드들이 찬성하면 블록체인에 블록이 추가되게 된다.

 

비트코인 이야기를 하자면 블록 체인을 길게 가지고 있는 노드가 우선권을 가지므로 연산력이 뛰어난 노드가 51%를 차기하게 되면 악용의 문제가 있다.

 

 

POS (Proof of stake, 지분 증명) 

채굴기 없이 본인이 소유한 코인을 기반으로 채굴됨. 주식으로 치면 배당금 같은 느낌임.

퀀텀, 네오 등이 POS 방식으로 채굴된다. 순수 POS만 하지는 않고, 어느 정도 안정된 후 POS로 전환하는 경우도 있고...

 

 

DPOS (delegated poroof of stake)

위임 지분 증명. 위임된 POS다.

스팀, EOS 등이 DPOS 방식으로 채굴된다.

 

 

BFT-variants

동기화된 네트워크. 새 노드가 들어오면 모두가 확인하기 위해 기존 노드와 모두 통신을 해야 한다. 덕분에 자유로운 참여는 어렵고 속도도 느리다. 

 

 

이 외에도 여러 채굴 방식이 있다.

 

 

퍼블릭 블록체인 vs 프라이빗 블록체인

 

어느 기업 내부에서만 사용하는 블록체인이 퍼블릭 블록체인이고

누구나 참여할 수 있는 블록체인이면 프라이빗 블록체인이다.

 

 

퍼미션리스, 퍼미션 블록체인

 

네트워크에 참여할 수 있는가? 

p2p 네트워크에 참여할 수 있는가(넓게) 합의를 할 수 있는가 (좁게) 에 따라 정의함. 명확한 정의는 없음.

 

 

앞서 언급한 블록체인의 기준에 따라 2x2 매트릭스로 코인을 아래와 같이 구분할 수 있다.

 

 

 

 

블록체인과 공개키 암호

 

 

우선 아래 게시물을 먼저 읽자

darrengwon.tistory.com/1031

 

공개키 암호, 전자 서명, 메세지 해싱에 대한 개념적 이해

대칭키암호 / 비대칭키암호(공개키 암호) 암호화에 사용한 키와 복호화에 사용한 키가 동일한경우 대칭키 암호로 분류 암호화에 사용한 키와 복호화에 사용한 키가 다를 경우 비대칭키 암호

darrengwon.tistory.com

 

 

 

 

 

스마트 컨트랙트

Dapp 만들 때 스마트 컨트랙트가 언급되었더라. 

 

비트코인 프로토콜이 수년간 스마트 콘트랙트를 지원해 왔음에도 불구하고, 이는 이더리움의 창시자이자 공동 설립자인 비탈릭 부테린(Vitalik Buterin)에 의해 유명해졌습니다.

 

블록체인을 활용한 거래 기법이다. 은행과 같은 중개자 없이 p2p로 계약 체약이 가능한 거래를 말한다.  이는 단지 분산화된 시스템(블록체인)에서 작동하는 코드의 일부입니다.

 

핵심적인 것은 블록체인 스마트 콘트랙트를 통해 신뢰가 필요 없는 프로토콜을 생성할 수 있다는 것입니다. 이는 두 당사자가 서로가 누구인지 알거나 신뢰할 필요 없이 블록체인을 통해 약속할 수 있음을 의미합니다. 이들은 특정 조건이 충족되지 않으면, 계약[콘트랙트]이 실행되지 않음을 확신할 수 있습니다. 이 외에도 스마트 콘트랙트를 사용하면 중개자가 필요하지 않기 때문에, 운영 비용을 크게 낮출 수 있습니다.

 

스마트 컨트랙트를 구현하는 방법은 단 하나만 존재하는 것이 아니라 서로 다른 방법으로 스마트 콘트랙트를 구현할 수 있다는 것이다. 그래도 ETH 기반의 Soldity가 많이 사용된다.

 

 

academy.binance.com/ko/articles/what-are-smart-contracts

 

스마트 콘트랙트란 무엇인가요? | Binance Academy

스마트 콘트랙트는 이더리움 네트워크의 필수적인 부분입니다. 강력한 스마트 콘트랙트 기술과 더불어 왜 이것이 혁신적일 수 있는지 알아보고 싶으시다면 이곳을 클릭하시기 바랍니다.

academy.binance.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

참글)

 

academy.binance.com/ko/articles?page=1

 

Explore our content | Binance Academy

Learn all there is to know about blockchain, cryptocurrency, trading, and more. Get started by exploring all the content on Binance Academy.

academy.binance.com

 

brownbears.tistory.com/category/%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8

 

'블록체인' 카테고리의 글 목록

파이썬, 장고, GO, PostgreSQL 등등등...

brownbears.tistory.com

www.ohmynews.com/NWS_Web/view/raw_pg.aspx?CNTN_CD=A0002397089&isPc=true

 

비트코인 뭔데 이렇게 시끄럽냐? - 오마이뉴스

  투자냐, 투기냐? 이건 정말 오래된 논쟁이다. 솔직히 둘 사이의 구분을 명확히 할 수 있는 사람은 많지 않다. 사전적인 정의를 빌리자면 금전적 이익이 목적인 건 공통적인데, 대상에 시간과

www.ohmynews.com

 


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체