본문 바로가기
자기계발/코딩 공부

1. 비트코인 (블록체인~작업증명)

by 매드메드 2024. 3. 11.
728x90
반응형

 

[블록과 체인]

블록체인

  • 블록: 거래데이터를 묶어서 저장하는 데이터베이스
  • 거래데이터: 누가 누구에게 얼마를 보냈는지 등의 내용을 포함. 블록체인에서는 암호화폐의 단위로 거래가 이루어짐

해시(Hash)

  • 해시: 각 블록이 가지고 있는 고유값으로, 블록에 있는 데이터를 가지고 도출되는 값
  •  즉, 블록 내 데이터가 바뀌면 해시값도 무작위로 다른 값으로 바뀜
  • 이전 블록의 해시 (Previous Block Hash): 이전 블록이 가진 해시값으로, 하나의 블록이 가진 해시값과 다른 블록의 '이전 블록의 해시' 값이 같을 경우 두 블록은 체인으로 연결된다. 
  • 블록들의 연결되어 있으면 누군가가 임의로 블록 내 값을 조작할 수 없다. 조작할 경우 블록 내의 해시값이 변하게 되고, 다음 블록의 '이전 블록의 해시' 값이 일치하지 않아서 블록 간의 연결이 끊기게 된다.

 

 

[분산원장]

분산원장: 원장(Ledger)을 여러 곳에 분산시키는 것

  • 원장(Ledger): 거래 내역을 상세하게 기록한 문서
  • 즉, 블록체인에서는 거래 내역을 담고 있는 각각의 블록이 원장에 해당한다
  • 분산 (Distribution): 원장의 복사본을 여러 개 만들어 다른 컴퓨터에 저장하는 것
    • 이때, 각각의 컴퓨터를 노드(node)라고 하고, 노드들은 네트워크를 통해 연결되어 서로 데이터를 주고받을 수 있다. 
  • 중앙서버에서 모든 데이터를 저장하고 관리할 경우, 중앙서버가 다운되었을 때 서버를 복구할 때까지 서비스를 이용할 수 없다. 하지만 분산원장을 사용하는 블록체인은 수많은 노드에 데이터를 분산시키기 때문에 시스템이 항상 안정적으로 작동할 수 있다. 

 

또, 모든 노드가 동일한 데이터를 항상 가지고 있어야 하므로 누군가가 임의적으로 데이터를 조작하기 어렵다. 

 

탈중앙화(Decentralization): 분산원장이 추구하는 목표로, 일부 개인이나 집단에 관리 권한이 집중되지 않게 하고, 여러 곳에 권한을 분산하는 것이다 

  • 블록체인에서는 체인을 구성하는 노드가 거래 데이터를 직접 관리하고, 노드들이 블록체인의 운영 권한을 나눠 가진다 
  • 따라서, 서비스를 운영하는 기업에서 운영 방침을 독단적으로 결정할 수 있는 중앙화 시스템과 달리, 블록체인에서는 노드 간의 합의를 도출할 수 있는 규칙이 필요하다 (= 합의 알고리즘)

합의 알고리즘: 

  • 작업 증명
  • 지분 증명

 

 

[암호화폐(Cryptocurrency)]

암호화폐: 블록체인에서 거래수단으로 사용되는 디지털 화폐

  • 암호화 기술을 기반으로 만들어져 안전하게 거래할 수 있다는 특징이 있다

비트코인: 사토시 나카모토라는 익명의 개발자에 의해 2008년에 처음 세상에 등장했다. 

  • 비트코인은 사이퍼펑크(Cypherpunk)라는 사회운동에 기반을 두고 있다
    • 사이퍼펑크: 기업/정부에서 수집한 개인정보가 감시나 검열에 악용되는 것에 대한 반발로 시작된 사회 운동
    • 사이퍼펑크 운동가들은 개인정보를 보호하기 위한 암호화 기술을 주로 연구했다

비트코인은 은행과 같은 중앙시스템을 거칠 필요 없이 개인 간 자유로운 거래가 가능하다 

  • 거래내역은 블록에 저장되어 수많은 노드에 동일하게 기록된다. 

나라마다 사용하는 화폐가 다르듯이 다양한 종류의 블록체인마다 사용하는 암호화폐가 다르다. 

  • ex) 비트코인, 이더리움(이더) 등

비트코인은 채굴(Mining)이라는 과정을 통해 발행된다. 

  • 채굴(Mining): 노드가 새로운 블록을 만든 것에 대한 보상으로 새로 발행된 비트코인을 지급받는 것

중앙은행이 화폐를 발행할 때는 발행량을 마음대로 조절할 수 있지만, 암호화폐 블록체인에서는 정해진 규칙에 의해서만 화폐가 발행될 수 있다

  • 비트코인은 총 발행량이 2,100만개로 한정되어 있고, 새로운 블록이 생성되는 약 10분을 주기로 일정한 양이 발행된다
  • 또, 비트코인의 발행량은 4년마다 반으로 줄어든다
    • 비트코인이 처음 발행된 2009년에는 블록 하나당 코인이 50개씩 발행되었지만, 2012년 말에는 25개, 2016년에는 12.5개, 2020년에는 6.25개 이런 식으로 발행량이 계속 줄어들고 있다 
      • 2024년 3.125개, 2028년 1.5625개, 2032년 0.78125개 등...
      • 2140년 경에는 발행량이 모두 소진되어서 이미 발행된 비트코인을 주고받는 것만 가능해질 예정이다 (=희소성)

 

 

[암호화폐 지갑과 개인키, 주소]

  • 주소(Address): 계좌번호와 비슷한 개념
  • 개인키(Private Key): 계좌 비밀번호와 비슷한 개념
    • 시스템에서 개인키가 무작위로 만들어진 후 해당 값을 가지고 주소값이 만들어진다 (반대로 주소를 가지고 개인키를 알아내는 것은 불가능하다)
    • 문제는 자신의 개인키를 잃어버렸을 때 그걸 다시 알아낼 수 있는 방법이 없다는 것이다. 
  • 암호화폐 지갑: 개인키를 보관하고 생성할 수 있는 곳
    • 핫 월렛: 항상 인터넷에 연결된 지갑으로, 소프트웨어 형태의 지갑. 개인키나 지갑을 생성 및 보관할 수 있다
      • ex) METAMASK, Trust Wallet, EXODUS
    • 콜드 월렛: 인터넷에 연결되어 있지 않은 지갑으로, 주로 개인키를 보관할 수 있는 저장장치를 가르킨다
      • ex) USB 등의 저장장치를 개발하는 기업 LEDGER, TREZOR 

 

 

[암호화폐 거래 과정 Overview]

  • 비트코인의 최소 거래단위: 0.00000001 BTC (= 1사토시)
  • 트랜잭션(Transaction): 보내는 사람, 받는 사람, 수량, 수수의 정보를 담고 있는 데이터 
  • 디지털 서명(Digital Signature): 보내는 사람의 개인키가 있어야만 만들 수 있는 서명으로, 트랜잭션에 포함한다

이러한 트랜잭션 데이터를 블록체인 네트워크에 전송하면 각 노드는 해당 트랜잭션이 유효한지 검증한다. 잔액, 디지털 서명 진위 여부 등을 확인하고 유효하다고 판단되면 Mempool이라는 임시저장소로 데이터를 보낸다. 

  • 이후, 누군가가 Mempool의 해당 데이터를 블록에 담아 블록체인에 연결해주어야 트랜잭션이 확정된 것이다. 이렇게 새로운 블록을 만든 노드에게는 새로운 비트코인이 보상으로 주어진다. 
  • 이 모든 과정을 "채굴(Mining)"이라고 한다.

 

 

[작업 증명과 채굴]

트랜잭션 데이터의 유효성을 검증하는 노드를 결정할 때는 "합의 알고리즘"을 이용하여 대표노드를 정한다. 해당 과정을 비트코인 거래 과정에서는 "작업 증명(Proof of Work; PoW)"라고 부른다. 

  • 작업 증명(PoW): 노드가 풀어야 하는 어려운 연산문제가 시스템에서 자동으로 주어지고, 이 문제의 답을 가장 빨리 찾는 노드에게 블록을 만들고 암호화폐를 받을 수 있는 권한을 준다. 

작업 증명의 준비물 및 과정: 

  • 채굴자(Miner): 비어있는 블록에 새 트랜잭션을 채워넣는다. 블록 하나당 수백~수천개의 트랜잭션이 담긴다. 
  • 연산문제 풀기: "타겟"이라는 값보다 작거나 같은 블록의 해시값을 찾아내는 것이다. 
    • 타겟: 채굴을 위해 시스템에서 자동으로 주어지는 값이다. 
    • 타켓과 블록의 해시는 16진법으로 표시한 숫자값으로, 채굴자는 조건에 맞는 해시값을 구하기 위해 블록에 있는 "논스"라는 값을 사용한다
    • 논스는 채굴자가 마음대로 정할 수 있는 숫자값으로, 보통 0부터 시작해 숫자를 하나씩 올린다. 논스값이 바뀔때마다 해시값이 무작위로 바뀌게 되고, 조건에 맞는 해시값이 나올때까지 논스값을 바꿔야 한다. 
    • 따라서 해당 작업을 빠르게 할 수 있는 높은 사양의 컴퓨터를 사용하면 채굴에 성공할 확률이 높아지는 것이다. 조건에 맞는 해시값을 찾으면 그 값을 새로운 블록의 해시값이 되고, 채굴자는 새로 발행된 암호화폐와 트랜잭션에 기록된 수수료만큼을 보상으로 받을 수 있다. 

 

 

[작업 증명의 안정성]

새로운 블록이 만들어지면 체인에 추가되기 전 다른 노드들의 검증을 거쳐야 한다. 

  • 블록의 해시값이 타겟보다 실제로 작거나 같은지, 해시값 일치 여부, 트랜잭션 데이터 진위 여부 등을 검증한다. 
  • 과반수 이상의 노드가 유효하다고 판단할 경우 블록에 추가된다

만약 누군가가 과반수의 노드를 통제할 수 있다면 트랜잭션을 마음대로 조작하고 블록을 추가하는 것도 가능하다. 이것을 "51% 공격"이라고 한다. 

  • 비트코인처럼 노드가 전세계에 퍼져있는 경우에는 51% 공격이 어렵지만, 노드 수가 많지 않는 소규모 알트코인의 경우에는 이런 공격이 좀 더 쉽게 일어날 수 있다. 
  • 하지만 블록체인의 특성 상 51% 공격은 큰 메리트가 없다. 누군가 실제로 51% 공격이 가능하다면 채굴만을 통해서도 보상을 많이 챙겨갈 수 있고, 이러한 공격이 일어난 코인은 안전하지 못하다고 판단되어 다른 사람들의 신뢰를 잃고 결국 가치가 폭락한다. 

 

** 코드잇(Codeit)에서 공부한 내용을 개인적으로 정리한 내용임을 밝힙니다. 

 

끝. 

 

728x90
반응형