본문 바로가기
etc/블록체인 뉴딜일자리사업

블록체인 이론: PoW, PoS, 디파이

by vellahw 2023. 5. 5.

 

 

💭 교육 3일차 

오늘은 오전, 오후 모두 블록체인 이론을 이해하는 시간을 가졌다. 똑같은 내용을 듣고 있는 것 같지만 반복해서 들으니 더욱 익숙해져 가는 느낌이다.

 

 

 

 


블록체인 이론 

 

 

 

✔️ 블록체인의 블록 구조

블록체인은 헤더(Header)와 바디(Body)로 구분된다.

블록 헤더에는 해시(Hash)와 Version, Previous Hash, Merkle Hash, Timestamp, Bits, Nonce 여섯개로 구성되어 있고 바디에는 여러개의 거래와 기타 정보로 포함하며 전체 해시암호 방식으로 연결된다.

블록체인은 P2P 네트워크에서 일정 시간마다 새로운 거래내역을 담은 신규 블록이 형성되어 기존 블록에 계속 연결(chain) 되는 데이터베이스 구조를 가진다.

 

 

 

✔️ ASCII 코드와 16진수

비트코인은 SHA256 해쉬 구조로 256비트, 16진수(숫자 0~9, 알파벳 A~F), 64자리로 표현되며, 채굴의 작업증명(PoW)은 특정 해쉬가 특정 숫자보다 낮게 나올 때의 Nonce 값을 찾는 것으로 블록당 625BTC를 보상한다.

 

SHA256은 항상 임의의 입력값에 매칭되는 고정된 출력값(16진수, 64자리)을 갖고 암호화되며, 반대의 출력값으로 입력값을 찾는, 복호화가 불가능한 단방향 특징(output으로 Input 유추 불가)으로 작업증명(PoW)에 활용된다.

 

SHA256?

SHA-256은 SHA(Secure Hash Algorithm) 알고리즘의 한 종류로서 256비트로 구성되며 64자리 문자열을 반환한다. 표준 해시 알고리즘인 SHA-2 계열 중 하나이며 블록체인에서 가장 많이 채택하여 사용하고 있다. 이름에 내포되어 있듯
2 256승

만큼 경우의 수를 만들수 있다.

 

예시

위와 같이 일반적으로 입력값이 조금만 변동하여도 출력값이 완전히 달라지기 때문에 출력값을 토대로 입력값을 유추하는 것은 거의 불가능하다.

아주 작은 확률로 입력값이 다름에도 불구하고 출력값이 같은 경우가 발생하는데 이것을 충돌이라고 한다. 개인용 컴퓨터로 무차별 대입을 수행해 해시 충돌 사례를 찾으려고 할 때 많은 시간이 소요될 정도로 큰 숫자이므로 충돌로부터 비교적 안전하다고 평가된다. (출처)

 

 

 

✔️ 블록체인 거래내역 검증과 블록 생성 과정

비트코인의 경우 사용자, 거래소, 채굴자들이 거래내역을 담은 신규 블록에 대해 작업증명 과정을 통해암호기반의 수학적 모델로 유효성을 검증한 후 거래를 승인하고 신규 블록을 연결한다. 이 과정을 자세히 풀어보면 아래와 같다.

 

 

 

채굴자는 거래소 또는 개인에게 전달받은 거래 내역의 입력값(입금액)과 출력값(출금액)을 송신자의 거래키로 검증한다.

즉, 거래소 B가 보내온 홍길동의 거래내역을 홍길동의 공개키를 이용하여 검증하는 것이다.

그리고 채굴자는 채굴자의 거래내역 풀(Pool)에 이체 내역을 저장한다.

 

이전 블록에 거래내역을 연계하여 신규 블록을 생성한다. 즉, 버전값, 이전 블록 해시값, 거래내역(머클루트) 해시값, 시간값, 비츠값(난이도), 넌스값을 하나로 연결하여 해시값을 생성한다.

 

채굴자는 목표값보다 작은 해시값이 나올 때까지 임의의 숫자인 넌스값을 반복적으로 넣는 작업증명을 수행한다. 즉, 작업증명 과정을 통해 신규 블록을 계속 연결하게 된다.

 

 

 

✔️ 블록체인 암호 및 전자서명 

블록체인 시스템은 거래의 무결성과 기밀성을 유지하기 위해 해시 알고리즘, 전자서명, 지갑 등에 다양한 암호 방식을 사용하며, 전자서명에는 일반적으로 양방향 공개키 방식 중의 하나인 타원곡선암호(ECC)인 ECDSA 알고리즘을 적용한다.

 

원본을 안전하게 전송하기 위해 보내는 사람은 개인키와 공개키로 구성된 한 쌍의 키를 생성하고 개인키는 서명할 때, 공개키는 검증할 때 사용한다.

송신자 A는 거래내용 원본을 해싱하여 해시값을 얻고 이를 개인키로 암호화하여 수신자 B에게 공개키와 함께 전송한다.

 

수신자 B는 송신자 A의 공개키로 복호화하여 해시 값을 구하고 전송 받은 거래내용 원본의 해시값과 동일 여부를 검증한다. 동일하면 데이터가 변조되지 않은 것이다.

 

 

 

✔️ 블록체인 개인키, 공개키, 지갑 생성 예시 

https://royalforkblog.github.io/2014/08/11/graphical-address-generator/

위 링크를 참고해서..

 

개인키는 256개의 임의 비트이다.

 

 

임의의 비트 앞에 버전 번호를 붙이고 압축 플래그를 맨뒤에 추가한다. 그리고 체크섬을 맨뒤에 또 추가한다. 

Base58로 인코딩 한다. Base58로 인코딩 된 데이터는 보다 쉽게 읽고 관리할 수 있다.

 

개인키에 타원곡선 생성점을 곱하여 공개키를 얻는다. 공개키는 타원곡선의 한 점이며 x, y 좌표를 갖는다.

따라서 공개키를 나타내려면 y 좌표 식별자와 전체 x 좌표를 사용한다.

 

공개키를 두 번 해시한다. 이 과정으로 공개키가 난독화 되고 단축된다.

 

 

버전번호를 맨앞에 붙이고 체크섬을 맨뒤에 추가한다. 이때 버전 번호는 앞의 버전 단계와는 다르다.

또 다른 Base58로 인코딩 된 후에 공개 지갑 주소를 가지게 된다.

 

위와 같은 방식으로 지갑 주소가 생성되기 때문에 충돌 없이 안전하다!

 

 

 

✔️ 블록체인 거래 Transaction

블록체인에서의 거래(Transaction)란 특정 정보의 입력과 출력을 말한다. 

주소를 통해 이동하는 형태로 구성하고 개별 거래를 구별하기 위해 TXID(Transaction ID) 또는 TxHash를 부여하여 거래시 발행되는 해시값을 통해 송수신 주소, 수량, 컨펌, 시간 등을 확인할 수 있다.

 

👀 UTXO(Unspent Transaction Output)

자신에게 보내진 거래 출력(Transaction Output) 중 아직 다른 사람에게 전송되지 않은 미사용 데이터 구조를 말하며 블록체인 지갑 주소에서 잔액 개념이다. 이중지불을 방지하기 위해 사용된다.

 

 

 

✔️ Proof of Work vs Proof of Stake

Proof of Work(작업증명)

Miner가 해시연산을 하는 하드웨어를 가지고 작업증명 메커니즘을 통해 블록을 생성한다.

연산 능력에 비례해서 데이터 업데이트 권한을 획득한다.

좀 더 보안적이지만 환경 파괴적이라는 평가를 받는다. 

 

Proof of Stake(지분증명)

Validator가 현재 보유하고 있는 자산(Stake)양에 비례해서 데이터 업데이트 권한을 획득한다.

블록에는 검증자들 각자가 자산을 보유하는 자산증명리스트를 포함하고 있다.

주식과 유사한 형태를 띄고 있으며 클라우드 기반의 운영이다.

이더리움이 쓰기 시작하며 요즘 대세이기도 하다고.. 

하지만 확장성이 높지만 탈중앙화를 어느정도 포기해야한다는 단점이 있다고 한다. 

 

 

✔️ 트릴레마를 해결해줄 PoS 

트릴레마(Trilemma)는 3가지의 문제들이 서로 해결할 수 없는 상황을 만드는, 3중고 또는 세 가지 딜레마를 뜻한다.

블록체인에서의 트릴레마란 탈중앙화, 확장성, 보안성 세 가지 문제는 한번에 해결할 수 없음을 뜻한다.

 

기존의 PoW 방식은 블록체인의 정당성을 확인할 수 있지만 채굴노드의 경우 하드웨어를 직접적으로 갖춰야하고 에너지 소모가 굉장히 크다. 게다가 채굴기 자체에서 발생하는 열과 소음이 상당하기 때문에 대량의 채굴기를 돌리는 경우 지리적으로도 넓은 평지를 가지고 있어야 가능하다.

PoW가 값비싼 컴퓨터 사용을 요구하고 이로인한 환경오염의 문제가 발생한다면 PoS가 값비싼 컴퓨터의 사용과 엄청난 양의 자원의 사용을 요구하지 않는다고 한다.

PoW에서 51%의 해시파워를 가지는 비용이 약 2500억원이라면 PoS에서 전 세계 자산의 51%는 약 25조원이라고 한다. 이렇게 100배 가량의 차이가 나기 때문에 PoS가 중앙집권화가 더 어렵고, 코인을 가진 노드 누구나 네트워크에 허락없이 참여하기 때문에 오히려 분산화가 더 잘된다고 볼 수 있다. 따라서 더 많은 사람들이 의사결정 과정에 쉽게 참여할 수 있는 것이라고 한다.

 

 

 

✔️ 블록체인 레이어 

Layer0 인터넷 

Layer1 블록체인 네트워(비트코인, 이더리움 등)

Layer2 다른 블록체인 위에 구축된 네트워크, 기존 블록체인의 확장성을 개선, Layer1에 기생함

Layer3 앱 App ===> 탈중앙화 앱(dApp)

Layer4 서비스 제공 

 

 

 

✔️ 블록체인의 종류 

1. Monolithic

  • 나 혼자 다 한다! (단일 블록체인에 합의-저장-실행의 작업을 모두 수행하는 것, 확장성이 없음)
  • 대표적으로 비트코인

2. Modular

  • 네 가지 과정을 각자한다. 분업화!
  • 대표적으로 이더리움 
  • 모듈러로 인해 트릴레마의 문제(탈중앙화와 확장성 공존 불가능)를 어느정도 극복했다고 한다.

 

💡 Modular의 4가지 과정

- Data Ability

데이터 이용성

데이터를 누구나 찾아볼 수 있고 사용할 수 있다.

 

- Consensus (합의)

내가 올리고 싶은 블을 전파 -> 승인 해달라고 허락 구하고다님 -> 51%가 합의하면 올라감 

 

- Settlement 

 

- Excusion (실행)

 

 

 

 

✔️ 디파이(DeFi)란?

Decentralized Finance 탈중앙화 금융을 말한다.

디파이 상품은 네 가지 특징을 가진다.

1. Stake 예치: 토큰을 예치해서 이자를 받는 행위 

2. Swap 스왑: 서로 다른 이중토큰을 교환 AAA -> BBB

3. Lend 대출: 예치된 토큰을 남에게 빌려주는 것 (예대마진: 예금 대출 사이에서 마진 먹기)

4. Farm 파밍: 유동성을 공급한 대가로 수수료를 받는 것  

 

 

디파이 내 금융 서비스를 제공하는 사람들?

- MakeDAO: 블록체인 기술을 활용해서 처음 탈주앙화 금융 내 머니마켓을 개척한 프로토콜(단기 상품을 거래하는 시장임)

- Compound: 은행과 같은 수신업을 제공하고 대출을 제공 해주는 프로토콜이다. 이더리움 DAI 를 수신하고 대출해주는 중간자. DeFi 유동성을 높이는 큰 역할을 함

- Aave(아베): 다수의 거래를 1개의 거래로 만들어서 수수로를 절감해주고 빠르게 거래를 처리함

-Uniswap: 환전소 같은 너낌  2중 토큰/코인을 교환해주는 은행과 달리 개인들이 환전소의 금고에 여러가지 토큰을 예ㅣ하고 예치한 토큰 거래에서 나오는 수수료를 유동성 공급자, 즉 개인이 가진다.

 

 

 

 

💭 마치며

수업 전후로 틈틈이 정리 했는데 몸이 안 좋아 기절해서 하루 지나 글을 발행한다.

블록체인을 공부는 하고 있지만 이 기술을 가지고 코인 거래소 같은걸 만들고자 하는 생각은 여전히 안 드는데 수업을 듣다보니 디지털 지갑을 만들어보고 싶다. 디지털 지갑 개발에 대한 기업들의 관심도가 올라가고 있다고도 하고! 개발환경이 어떻게 되는지 어서 배우고 실습해보고싶다 🤩

 

 


 

댓글