본문 바로가기
티끌모아 투자

비트모빅 모빅아카데미 2기_주말반 2주차 강의 정리

by 푸른새벽105 2025. 3. 22.
반응형
 
모빅아카데미 2기 주말반 2주차



HD월렛 실습이 있는 날이라 노트북을 챙기고,
꽃샘 추위에 비예보도 있어서
장우산까지 들고 지하철 탑승~
 
수업시간 1시간 일찍 도착, 
서울역 11번 출구 나와서
커피 테이크 아웃 하러 가는 길에 보이는 #남산타워뷰
 
 
 
 

역시나 기본 개념도 부족한데 강의 속도까지 빠르다 보니,
강의안을 보며 교재에서 관련 내용을 찾느라 따라가기 바빴다.
수업은 맛보기 수준이고,
배운 내용을 정리하고 복습하는 게 필수라는 걸 알기에
이제는 당황하지 않고 그러려니 하며 넘어간다.
 
마지막 타임에는 니모닉 문구를 생성해서
HD 월렛의 주소를 만드는 실습을 진행했는데,
직접 해보니 감독관님이 설명해주신 내용들이 조금은 이해가 가는 느낌...!
 
정신없이 지나간 3시간의 수업.
뭔가 많이 배운 것 같긴 한데,
머릿속에는 배운 단어들만 둥둥 떠다니고 정리가 안 되는 기분.
(BIP-32, BIP-39, BIP-44는 각각 뭐가 다른지,
SHA-256 함수는 여기저기 많이 쓰이는구나...)


 
 

 


 

끝나고 집으로 바로 가려니 허기가 져서
후암동 맛집 산동만두에서 가서 둘이 만두 3접시를 헤치웠다. 허허허
 
그리고 집에 와서 유투브에서 블록체인, 채굴, 트랜잭션, UXTO 등의 검색어로 영상들을 찾아봤는데
그래도 주워 들은게 있어서인지 중간중간 빈 퍼즐들이 맞춰지는 느낌!!
특히 ‘김필산의 사이언스비치’ 채널에서 ‘블록체인과 비트코인 #1~#6’ 영상들이 많은 도움이 되었다. https://www.youtube.com/watch?v=mC0Dr5Xv2QM
 
이제 과제풀이 해볼 차례~!
배운 내용 정리하려면 시간이 많이 걸릴 것 같아
일단 과제 풀면서 내가 모르는 부분에 대해
챗GPT에게 질문하면서 답을 찾고, 정리했다.
정리한 내용을 바탕으로 챗GPT에게
문제를 내도록 해서 풀어보는 방법도 아주 유용했다.
챗GPT는 국영수포자인 내 눈높이에 맞게
예제도 들어가며 아주 잘 설명을 해주었다.
 
그간에 오태민 작가님 책이나 영상보면서
블록체인이나 비트코인의 기술적 용어들(특히 채굴관련) 때문에
내용을 이해하지 못하고 넘어간 부분이 많았는데
모빅아카데미 수업을 통해서 궁금증들이 많이 해결되고 있다.
정말 아는 만큼 보이는 듯!
 


 

Chapter 1. 주소체계

 

1.1 비트코인 주소 개요

       비트코인 주소는 공개키를 해시 처리하여 생성, 거래에서 송금 대상이 되는 식별자 역할을 한다.
        주소는 Base58Check 인코딩을 통해 사람이 읽기 쉽게 변환된다.
 


1.2 주소 생성 과정

  • ECDSA 알고리즘을 사용하여 개인 키를 생성한다.
  • 개인 키로부터 공개 키를 생성한다.
  • 공개 키를 SHA-256 및 RIPEMD-160 해싱 후 Base58Check 인코딩을 적용하여 최종 주소를 생성한다.

 

  •   Base58Check 인코딩 : 혼동될 수 있는 문자(O, I, l, 0)를 제외하여 가독성을 높이고, 체크섬을 포함하여 주소 입력 오류를 방지.

 
1.3 니모닉(Mnemonic)

  • 비트코인  지갑을 복구하는 열쇠
  • 니모닉 문구는 12~24개의 영단어로 구성, 사용자가 기억하기 쉽게 한다.
  • 올바른 순서대로 입력하면 원래의 비밀키를 복구할 수 있음.

 
1.4 니모닉-시드-비밀키 생성 과정

  • 니모닉 코드로부터 시드를 생성하고, 이를 기반으로 HD 지갑 구조를 통해 다수의 키를 파생한다.

     1) 난수 생성

  • 128~256비트 길이의 무작위 숫자(Entropy)를 생성

    2) 체크섬 추가

  • 난수에 SHA-256 해싱을 적용하여 체크섬(검증용 숫자)을 생성
  • 체크섬은 난수 길이의 1/32 크기로 생성
  • 예: 128비트 난수를 사용하면 체크섬은 4비트

   3) 최종 비트 스트링 생성

  • 난수와 체크섬을 합쳐 최종적으로 132~264비트의 비트 스트링을 만듦

   4) 단어로 변환

  • 비트 스트링을 11비트씩 나눔
  • 11비트 그룹 하나가 2048개의 단어 목록(BIP-39 Word List) 중 하나에 대응됨
  • 예: 132비트 데이터를 11비트씩 나누면 12개의 단어가 생성됨

   5) 니모닉 단어로 시드(Seed) 생성(BIP-39 표준)

  • PBKDF2-HMAC-SHA512 알고리즘을 사용해 512비트 Seed(시드)를 생성
  • 이 Seed가 비트코인 지갑의 핵심 키 역할을 함

   6) 시드를 기반으로 마스터키, 비밀키 생성(BIP-32 -> BIP-44, 49, 84)

  • BIP-32 -> 파생경로(BIP-44, 49, 84)에 따라 시드에서 계층적 결정론적 지갑(HD Wallet)을 사용해 여러 개의 비밀 키를 생성
  • BIP-44(1로 시작), BIP-49(3으로 시작), BIP-84(bc1q로 시작),
  • 시드는 하나의 루트 키로 사용되고, 이를 통해 여러 개의 자식 키를 생성할 수 있음
  • 이를 통해 사용자는 여러 개의 주소와 비밀 키를 관리할 수 있음

 
 

Chapter 2. 비트코인의 채굴 이해하기

2.1 해시함수란?

  • 해시함수(Hash Function)는 임의의 데이터를 입력하면, 고정된 길이암호화된 값(해시값)을 출력하는 함수
  • 쉽게 말해 입력값을 변환해서 특정한 코드(해시값)로 바꿔주는 수학적 변환기
  • 블록체인에서는 SHA-256이라는 해시함수를 사용

해시함수의 5가지 주요 특성

  1. 단방향성(One-way Function)
    • 입력값 → 해시값 변환은 쉽지만, 해시값 → 입력값 복원은 불가능
    • 해시값만 보고 원래 입력을 유추할 수 없음
  2. 입력이 조금만 달라도 완전히 다른 결과(Avalanche Effect)
    • 입력값이 1글자만 달라도 완전히 다른 해시값이 나옴
    • 예시:
      SHA-256("bitcoin") = 6b6a...SHA-256("Bitcoin") = 9c41...
      
  3. 고정된 길이의 출력(Fixed Output Length)
    • 입력 데이터 크기가 크든 작든 해시값의 길이는 항상 일정함
    • SHA-256을 사용하면 결과는 항상 256비트(64자리 16진수) 길이
  4. 충돌 저항성(Collision Resistance)
    • 서로 다른 입력값이 같은 해시값을 가질 확률이 극도로 낮음
    • 해시 충돌이 발생하면 블록체인 보안이 무너질 수 있음
  5. 빠른 연산 속도(Efficiency)
    • 입력값을 해싱하는 속도가 빨라야 함
    • 비트코인 네트워크에서는 초당 수천 개의 해시를 계산해야 함

 
해시함수의 블록체인 활용

  1. 블록의 연결
    • 각 블록이 이전 블록의 해시값을 포함하는 방식으로 연결됨
    • 어떤 블록이 변조되면 이후 블록들이 모두 영향을 받아 위변조가 탐지됨
  2. 채굴 과정(Proof of Work, 작업증명)
    • 채굴자는 특정 조건을 만족하는 해시값을 찾기 위해 수많은 해시 계산을 수행
    • 예: 해시값이 0000으로 시작하는 값을 찾기 위해 논스(nonce)를 계속 변경하며 해시 계산
  3. 전자서명 및 보안
    • 비트코인 지갑 주소 생성에 해시함수 사용
    • 트랜잭션 위변조 방지에 활용

 

2.2  채굴과 난이도 조정

2.2.1 채굴 개요

  • 작업 증명(Proof-of-Work) 방식을 이용하여 새로운 블록을 생성하고 보상을 얻는 과정

 

2.2.2 비트코인 채굴 과정(Proof of Work, PoW)

  1. 새로운 거래가 발생하고 네트워크에 전파됨
  2. 채굴자가 거래를 선택하여 블록 생성
  3. SHA-256을 두 번 적용하여 블록 해시 값 계산
  4. 난이도(Target Difficulty)보다 작은 해시 값을 찾을 때까지 논스(Nonce) 값 변경
  5. 유효한 블록을 찾으면 네트워크에 전파
  6. 채굴 보상으로 비트코인 지급(2024년 기준: 6.25 BTC → 2024년 반감기 이후 3.125 BTC)

 
2.2.3 채굴 난이도와 해시레이트
- 채굴 난이도(Difficulty)

  • 비트코인 블록을 생성하는 데 필요한 문제(해시 퍼즐)의 어려운 정도
  • 난이도가 높을수록 블록을 찾기 더 어려워짐
  • 비트코인은 평균적으로 10분마다 새로운 블록이 생성되도록 설계됨
  • 난이도 조정을 통해 10분 주기를 유지함

- 해시레이트(Hash Rate)

  • 채굴자들이 초당 수행하는 연산(해시 계산) 속도
  • 단위: H/s (Hash per Second), 보통 TH/s(테라해시)나 PH/s(페타해시) 단위로 표현
  • 해시레이트가 높을수록 블록을 채굴할 확률이 높아짐

 
2.2.4 채굴 난이도 조정(Difficulty Adjustment)

  • 비트코인은 매 2,016개 블록(약 2주마다) 채굴 시간을 분석하여 난이도를 자동으로 조정
  • 해시레이트 증가 → 난이도 상승
  • 해시레이트 감소 → 난이도 하락

난이도 조정 예시

  1. 채굴자가 많아질 때
    • 채굴 장비가 강력해지고, 많은 채굴자가 네트워크에 참여
    • 블록 생성 속도가 빨라짐(예: 9분마다 블록 생성)
    • 난이도 조정 시, 난이도가 증가하여 블록 생성 시간이 다시 10분으로 맞춰짐
  2. 채굴자가 줄어들 때
    • 비트코인 가격 하락으로 일부 채굴자가 떠남
    • 블록 생성 속도가 느려짐(예: 12분마다 블록 생성)
    • 난이도 조정 시, 난이도가 감소하여 블록 생성 시간이 다시 10분으로 맞춰짐

 

2.3 코인베이스 코인_트랜잭션(Coinbase Transaction)

  • 새로운 블록이 생성될 때 채굴자가 보상을 받기 위해 포함하는 특별한 트랜잭션
  • 일반적인 트랜잭션과 달리 입력(Input)이 없는 유일한 트랜잭션

 
코인베이스 트랜잭션의 특징

  1. 입력(Input)이 없음
    • 일반적인 트랜잭션은 기존의 비트코인을 사용하기 위해 '입력'이 필요하지만, 코인베이스 트랜잭션은 새로운 코인을 생성하므로 입력이 없음
  2. 블록 보상(Block Reward) 포함
    • 블록이 생성될 때 채굴자가 받는 블록 보상이 포함됨
  3. 채굴자의 주소로 지급됨
    • 보상은 채굴자가 설정한 지갑 주소로 전송됨
  4. 채굴자가 메모를 남길 수 있음
    • 비트코인 첫 번째 블록(제네시스 블록)에는 사토시 나카모토가 남긴 유명한 문구가 들어 있음: "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks."

코인베이스 트랜잭션 예시

{
  "txid": "4d5e4...",
  "vin": [],
  "vout": [
    {
      "value": 6.25,
      "scriptPubKey": "76a914..."
    }
  ]
}
  • "vin": [] → 입력이 없음(새로 생성된 코인)
  • "value": 6.25 → 채굴자가 받은 블록 보상(6.25 BTC)
  • "scriptPubKey" → 채굴자의 주소

 
코인베이스 트랜잭션과 채굴 보상 변화
비트코인은 약 4년마다(210,000블록마다) 블록 보상이 절반으로 줄어드는 반감기(Halving)가 있음:

반감기 횟수연도블록 보상 (BTC)
0 (제네시스)200950 BTC
1201225 BTC
2201612.5 BTC
320206.25 BTC
42024(예정)3.125 BTC

 
 

일반 트랜잭션과 코인베이스 트랜잭션의 차이

구분일반 트랜잭션코인베이스 트랜잭션
입력이전 트랜잭션의 해시 포함없음 (새로운 비트코인 생성)
출력받는 사람 주소 포함채굴자 주소 포함
수수료있음없음 (보상 자체가 수익)
예시A → B 송금채굴자가 블록 보상 받음

 
 
 
 

Chapter 3. 블록체인 데이터구조

3.1 블록체인이란?

  • 거래 데이터를 블록(Block) 단위로 저장
  • 각 블록은 이전 블록과 연결되어 체인(Chain) 형태를 형성
  • 각 블록은 이전 블록의 해시 값을 포함하여 조작이 어렵도록 설계 됨

 

3.2 블록의 주요 구성 요소

    • 블록 헤더(Block Header): 블록의 핵심 정보 저장
    • 머클 루트(Merkle Root): 트랜잭션 데이터를 요약한 최종 해시 값, 트랜잭션 검증 및 데이터 무결성을 보장. 머클트리는 트랜잭션을 계층적으로 해시 처리하여 최종적으로 하나의 루트 해시를 생성하는 구조.

         * 머클 트리의 트랜잭션 검증 과정

  • 트랜잭션 데이터는 각각 SHA-256 해시를 적용하여 개별 해시 값으로 변환.
  • 인접한 트랜잭션 해시 값 두 개를 결합하여 다시 해싱하는 과정을 반복하여 트리 구조를 형성.
  • 최종적으로 단 하나의 머클 루트 해시가 생성.
  • 특정 트랜잭션이 블록 내에 포함되었는지 검증할 때, 머클 루트와 해당 트랜잭션의 경로를 비교하여 빠르게 확인할 수 있다.

 

  • 이전 블록 해시(Previous Block Hash): 블록 간 연결을 담당
  • 타임스탬프(Timestamp): 블록이 언제 생성되었는지 기록하는 시간 정보
  • 난이도 목표(Target/Bits): 채굴 난이도를 나타내는 값
  • 논스(Nonce): 채굴할 때 정답을 찾기 위해 계속 바꾸는 숫자

 

3.3 트랜잭션(Transaction)이란?

  • 비트코인을 주고받는 거래
  • 트랜잭션이 블록체인에 기록되면 거래가 완료됨
  • 중개인(은행) 없이 블록체인을 통해 직접 처리

 
트랜잭션의 기본 구조

  1. 입력(Input)
    • 어디서 비트코인을 가져왔는지를 나타냄
    • 이전 트랜잭션에서 받은 비트코인을 사용하므로 기존 트랜잭션의 해시값을 포함
    • 보낼 사람(A)의 전자서명(Private Key로 서명)이 포함됨 → 소유권 증명
  2. 출력(Output)
    • 어디로 보낼 것인지를 나타냄
    • 받을 사람(B)의 비트코인 주소(Public Key Hash) 포함
    • 보내는 금액 설정 가능
  3. 수수료(Fee)
    • 채굴자에게 주는 수수료
    • 트랜잭션을 빠르게 처리하려면 수수료를 높게 설정하는 게 유리함
    • 수수료 = 입력 금액 - 출력 금액으로 계산됨

 

트랜잭션 구성 요소들

  1. 트랜잭션 ID(Transaction ID, TXID)
    • 트랜잭션을 고유하게 식별하는 해시값
    • SHA-256 해시 함수를 두 번 적용해서 생성됨
    • 블록체인 탐색기에서 특정 트랜잭션을 조회할 때 사용됨
  2. 트랜잭션 크기(Transaction Size)
    • 트랜잭션 데이터의 크기(단위: 바이트)
    • 트랜잭션이 클수록(입력과 출력이 많을수록) 더 많은 수수료가 필요함
    • 평균적인 트랜잭션 크기는 250~500바이트, 복잡한 경우 1000바이트 이상
  3. 락타임(Locktime, nLockTime)
    • 트랜잭션이 특정 시간 또는 블록 높이 이후에만 유효하도록 설정하는 값
    • 기본값은 0(즉시 유효)
    • 특정 블록 높이(예: 800000) 또는 특정 타임스탬프(예: 1700000000초) 이후에만 실행되도록 입력
  4. 서명(Signature, ScriptSig)
    • 트랜잭션 입력 부분에는 서명이 포함됨
    • 서명은 개인키(Private Key)로 생성되며, 공개키(Public Key)로 검증됨
    • 서명이 유효해야만 트랜잭션이 승인됨
    • 스크립트 기반으로 동작(Bitcoin Script 사용)

 
 

트랜잭션의 특징

  1. 변경 불가능(Immutable)
    • 블록체인에 기록된 트랜잭션은 변경하거나 삭제할 수 없음
    • 조작하려면 모든 이후 블록을 다시 계산해야 하므로 사실상 불가능
  2. 공개(Transparent)
    • 비트코인 트랜잭션은 블록체인 탐색기(Block Explorer)를 통해 누구나 볼 수 있음
    • 개인정보는 보호됨(주소만 보이고, 이름은 보이지 않음)
  3. 수수료 필요(Fee)
    • 비트코인 트랜잭션은 채굴자가 블록에 포함시켜야 함
    • 수수료를 높게 설정하면 채굴자들이 더 빠르게 처리해 줌
  4. 부분 사용 불가(UTXO 모델)
    • 비트코인은 지폐처럼 사용됨
    • 기존 트랜잭션(UTXO)을 한 번에 사용하고, 남는 금액은 거스름돈으로 다시 돌려받음

트랜잭션 예제

{
  "txid": "e98d5a4...",
  "vin": [
    {
      "txid": "abc123...",
      "vout": 0,
      "scriptSig": "3045..."
    }
  ],
  "vout": [
    {
      "value": 0.5,
      "scriptPubKey": "76a914..."
    },
    {
      "value": 0.49,
      "scriptPubKey": "76a914..."
    }
  ],
  "fee": 0.01
}
  • "txid": 트랜잭션의 고유한 ID
  • "vin": 입력(이전 트랜잭션에서 가져온 비트코인)
  • "vout": 출력(받는 사람, 거스름돈)
  • "fee": 수수료

 
 

3. 4  UTXO(Unspent Transaction Output) 모델

  • 비트코인 네트워크에서 계좌 잔액의 개념 대신 사용되는 모델
  • 기본 개념: 비트코인은 계좌 기반이 아니라 트랜잭션 기반으로 동작함

 

UTXO의 동작 방식

  1. 송금하기 전: 기존 UTXO 보유
    • 사용자는 이전 트랜잭션에서 받은 미사용 출력(UTXO)을 보유하고 있음
    • 예: A가 1 BTC를 가지고 있다면, A의 지갑에는 "1 BTC의 UTXO"가 저장됨
  2. 송금할 때: 기존 UTXO를 입력으로 사용
    • A가 B에게 0.6 BTC를 보내면, 기존 1 BTC의 UTXO를 사용해서 새로운 트랜잭션을 생성함
    • 트랜잭션 구성:
      • 입력(Input): A의 1 BTC UTXO
      • 출력(Output):
        1. B의 주소로 0.6 BTC 전송(새로운 UTXO 생성)
        2. A의 주소로 0.4 BTC 거스름돈(새로운 UTXO 생성)
        3. 수수료(Fee)로 0.01 BTC 지급
  3. 송금 후: 새로운 UTXO 생성
    • 트랜잭션이 완료되면, 기존 1 BTC UTXO는 사용됨(소멸됨)
    • 새로운 두 개의 UTXO가 생성됨:
      • B의 지갑: 0.6 BTC(새로운 UTXO)
      • A의 지갑: 0.39 BTC(거스름돈 UTXO, 수수료 제외)

UTXO의 역할 및 특징

  1. 계좌 잔액 대신 "사용 가능한 금액"을 추적
    • 전통적인 은행 시스템은 "계좌 잔액"을 저장하지만, 비트코인은 모든 사용자의 잔액을 별도로 저장하지 않음
    • 각 사용자가 가진 UTXO의 총합을 계산해서 잔액을 확인함
  2. 이중지불(Double Spending) 방지
    • 한 번 사용된 UTXO는 다시 사용할 수 없음
    • 같은 UTXO를 두 번 사용하려고 하면, 네트워크에서 감지하고 거부함
  3. 검증이 간단하고 빠름
    • 블록체인 노드는 모든 사용자의 계좌 잔액을 저장할 필요 없이, UTXO 목록만 추적하면 됨
    • 새 트랜잭션이 들어오면, 해당 UTXO가 존재하는지만 확인하면 되므로 연산이 단순하고 빠름

UTXO 모델 vs. 계좌(Account) 모델 비교

항목 UTXO 모델 (비트코인)   계좌 모델 (이더리움 등)
잔액 추적 방식사용되지 않은 트랜잭션 출력(UTXO)계정의 잔액(balance)
보안성UTXO는 변경 불가능, 보안성이 높음계정 시스템은 스마트 컨트랙트 공격에 취약할 수 있음
검증 속도개별 UTXO만 확인하면 되므로 빠름잔액을 업데이트해야 하므로 상대적으로 복잡함
트랜잭션 방식기존 UTXO를 완전히 사용하고 새 UTXO를 생성기존 잔액에서 차감 후 송금

 

 
 
 

* 블록체인에서 **노드(Node)**와 **채굴(Mining)**의 역할 차이
https://www.youtube.com/watch?v=0-FUC4QNlS8

 
 
1. 노드(Node) = 블록체인의 운영자
📌 주요 역할:
✅ 블록체인 데이터 저장 (블록과 트랜잭션 정보 보관)
✅ 트랜잭션 검증 (올바른 거래인지 확인)
✅ 네트워크에 트랜잭션 전파 (다른 노드와 정보 공유)
💡 비유:
노드는 마치 회계팀처럼 모든 거래 내역을 기록하고 검증하는 역할을 합니다. 하지만 새로운 거래(블록)를 직접 만드는 건 아님.
 
 
2. 채굴(Mining) = 새로운 블록을 만드는 경쟁자
📌 주요 역할:
✅ 새로운 블록 생성 (블록에 트랜잭션을 담음)
✅ 작업증명(Proof of Work) 수행 (복잡한 수학 문제 풀기)
✅ 블록을 성공적으로 생성하면 보상(BTC) 받음
💡 비유:
채굴자는 마치 시험 문제를 푸는 학생과 같다. 가장 먼저 정답(올바른 해시 값)을 찾는 사람이 새로운 블록을 만들고 보상을 받는다.
 

🚀 정리:

  • 노드(Node)블록체인 데이터를 저장하고 트랜잭션을 검증하는 운영자
  • 채굴(Mining)새로운 블록을 만들기 위해 문제를 풀고 경쟁하는 사람

 
 
 

Chapter 4. 하드포크

포크(Fork)란?

  • 블록체인의 합의 규칙이 변경되며 새로운 체인이 분기되는 현상

 
소프트포크(Soft Fork) vs. 하드포크(Hard Fork)

  • 소프트포크: 기존 체인과 호환되는 업그레이드
  • 하드포크: 기존 체인과 호환되지 않는 업그레이드로 체인이 분리됨

 
 

Chapter 5. 블록체인 탐색기(Block Explorer)

  • 블록, 트랜잭션, 주소, 해시 값 등을 검색할 수 있는 도구

Mobick Explorer
 
 

728x90
반응형