블록체인 - 채굴

BBinss·2025년 1월 9일
post-thumbnail

🔹 새로운 블록 생성 과정

1. 트랜잭션 생성 및 전파

사용자가 A → B로 비트코인을 전송하면, 새로운 트랜잭션(Transaction)이 생성됩니다.
이 트랜잭션은 네트워크에 있는 풀노드(Full Node)에게 전파됩니다.
풀노드는 트랜잭션의 유효성을 검증하고, 미확인 트랜잭션 풀(Mempool)에 저장합니다.

2. 채굴자가 트랜잭션을 블록에 추가

채굴자는 미확인 트랜잭션 풀(Mempool)에서 일부 트랜잭션을 선택하여 새로운 블록을 만듭니다.
보통 수수료가 높은 트랜잭션을 먼저 포함함.

3. (핵심) 작업 증명(Proof of Work, PoW) 수행 (채굴 과정)

✅ 핵심 목표

임의의 문제를 풀어야 블록이 유효함 → 블록 생성을 어렵게 만듦
검증은 매우 쉬움 → 블록이 맞는지만 확인하면 됨
네트워크 공격(51% 공격 등)을 어렵게 만듦
PoW에서 채굴자들은 특정 조건을 만족하는 해시값을 찾는 경쟁을 합니다.

🔸 1) 블록 헤더(Block Header) 생성

✅ 블록 헤더 구성 요소

필드명 설명

🔸 2) 해시 계산(SHA-256 연산)

Block Hash=SHA256(SHA256(Block Header))

블록 헤더를 두 번 SHA-256으로 해싱하여 최종 해시값을 생성합니다.

🔸 3) 난이도 목표(Difficulty Target) 비교

계산된 해시값이 난이도 목표보다 작아야 블록이 유효합니다.

✅ 조건

Block Hash<Target Difficulty

Target Difficulty는 블록체인의 난이도 설정 값이며, 숫자가 작을수록 블록을 찾기 어려움.
해시값이 이 목표보다 크면 블록이 무효하므로, 논스(Nonce)를 바꿔 다시 해시를 계산해야 함.

🔸 4) 논스(Nonce) 변경 및 반복 연산

만약 해시값이 000000f3a2b4c...처럼 목표보다 크다면?
→ Nonce 값을 증가시키고 다시 해싱
목표보다 작은 값이 나오면?
→ 블록이 유효하므로 채굴 성공!

✅ 난이도 목표 공식

✅ 난이도 조정

비트코인의 경우, 2016 블록(약 2주마다) 난이도를 조정하여 블록 생성 속도를 평균 10분으로 유지함.
새로운난이도=기존난이도×(20160분 / 실제 걸린 시간)

4. 블록 검증 및 체인에 추가

채굴자가 블록을 발견하면, 이를 네트워크의 모든 노드에게 전파합니다.
네트워크의 풀노드들은 다음 검증을 수행합니다.

✅ 블록 검증 과정

  • 신규 블록 헤더를 두번 SHA-256 해시한 값
    • 예) 00000000000000000005abcdef1234567890abcdef1234567890abcdef123456
    • 10진수 정수 변환 > BigNumber(123456789123456789...)
  • 네트워크 풀노드가 가지고 있는 난이도 목표(Target Difficulty) 값
    • 예) 0000000000000000000abcdef123456789fffffffffffffffffffffffffffff
    • 10진수 정수 변환 > BigNumber(987654321987654321...)

✔️ 두가지 모두 256비트 (32바이트) 해시 16진수 문자열 형태 (binary).
10진수 정수 변환으로 비교.

Block Hash (123456789123456789...) < Target (987654321987654321...)
  • 블록의 해시값이 난이도 조건을 만족하는가?
  • 이전 블록의 해시값이 올바른가? (체인 연결 확인)
  • 트랜잭션이 유효한가? (더블 스펜딩 방지, 서명 검증)
    모든 검증을 통과하면 블록체인에 정식 추가됩니다.

5. 블록체인 동기화 및 보상 지급

새 블록이 체인에 추가되면, 모든 노드는 이를 받아들여 블록체인을 동기화합니다.
블록을 채굴한 채굴자는 블록 보상(Block Reward) + 거래 수수료(Transaction Fee) 를 받습니다.
현재 비트코인의 블록 보상: 6.25 BTC (2024년에는 반감기로 인해 3.125 BTC로 감소 예정)

📑 새로운 블록 생성시 동시 생성에 대한 일관성 유지 방법과 과정

🔧 작동 방식

  1. 먼저 A, B 블록이 동시에 생성될 경우 두개의 해시는 서로 다르다.
    (이전 블록해시, 타임스탬프 등의 값 기반으로 생성됨)

  2. 네트워크 전파에 따라 노드들은 A와 B 체인 위에 확정되지 않은 상태로 쌓이게 되지만
    결국 전체 노드들은 A와 B 둘 중에 하나의 체인을 따르게 된다.

  3. 분기된 상황에서 결국은 자연스럽게 하나의 체인으로 수렴하게 되는데 아래의 방식들을 사용.

  • 가장 긴 체인을 유효한 체인으로 간주 (Longest Chain Rule)
  • 새로운 블록이 여러 개 추가될수록 역사적으로 변경될 확률이 낮아짐
    • 비트코인의 경우 6개의 블록(약 1시간)이 추가되면 사실상 0에 수렴하는 변경 불가능 상태 (확정)
  • 체인 난이도 조정을 통해 체인 분기를 덜 발생 시킴
  • Gossip Protocol을 통해 주변 노드에 신속히 전파


📑 트랜잭션이란?

// 예제
{
  "txid": "9b8f0a1d3c7e2b567bf8c1b2a9e4f2a1d1c6a5b4e2c3f1b9a7e2d6f8b5c7a4e1",
  "inputs": [
    {
      "txid": "3a5c7d8e9b1f2a3b4c6d7e8f9b1a2c3e4d5f6a7b8c9d1e2f3a4b5c6d7e8f9a1",
      "vout": 0,
      "scriptSig": "3045022100a7f9c9e8f1b2a9c4d7e3a5b6f1d8c7e9a5c4b6d7e8f9a1c2a7f8c9e1b5d3f9a1",
      "sequence": 4294967295
    }
  ],
  "outputs": [
    {
      "value": 1.0,
      "scriptPubKey": "OP_DUP OP_HASH160 76a91489abcdefabbaabbaabbaabbaabbaabbaabbaabbaabba88ac"
    },
    {
      "value": 0.4999,
      "scriptPubKey": "OP_DUP OP_HASH160 76a914f8c7e9a5b4c6d7e8f9a1c2a3b4c6d7e8f9a1c2a7f8c988ac"
    }
  ],
  "locktime": 0
}  

사용자간의 데이터 교환 기록. 하나의 블록은 여러 개의 트랜잭션을 포함할 수 있다.

  • 자산 이동 기록
  • 스마트 계약 실행
  • 특정 데이터 저장
profile
궁빈

1개의 댓글

comment-user-thumbnail
2025년 7월 23일

신규 채굴 블록을 통한 일관성 보장 과정중 "포크"상태로 일시적으로 여러 신규 블록들을 노드들이 다른 체인 형태로 가질수 있다.
다만 채굴 보상을 실제로 쓸려면 반드시 "100블록"이 더 쌓인 후 사용할 수 있으므로,
고아 블록으로 획득한 보상을 즉시 사용할 수는 없다.

답글 달기