
🔹 새로운 블록 생성 과정
사용자가 A → B로 비트코인을 전송하면, 새로운 트랜잭션(Transaction)이 생성됩니다.
이 트랜잭션은 네트워크에 있는 풀노드(Full Node)에게 전파됩니다.
풀노드는 트랜잭션의 유효성을 검증하고, 미확인 트랜잭션 풀(Mempool)에 저장합니다.
채굴자는 미확인 트랜잭션 풀(Mempool)에서 일부 트랜잭션을 선택하여 새로운 블록을 만듭니다.
보통 수수료가 높은 트랜잭션을 먼저 포함함.
✅ 핵심 목표
임의의 문제를 풀어야 블록이 유효함 → 블록 생성을 어렵게 만듦
검증은 매우 쉬움 → 블록이 맞는지만 확인하면 됨
네트워크 공격(51% 공격 등)을 어렵게 만듦
PoW에서 채굴자들은 특정 조건을 만족하는 해시값을 찾는 경쟁을 합니다.
✅ 블록 헤더 구성 요소
필드명 설명

Block Hash=SHA256(SHA256(Block Header))
블록 헤더를 두 번 SHA-256으로 해싱하여 최종 해시값을 생성합니다.
계산된 해시값이 난이도 목표보다 작아야 블록이 유효합니다.
✅ 조건
Block Hash<Target Difficulty
Target Difficulty는 블록체인의 난이도 설정 값이며, 숫자가 작을수록 블록을 찾기 어려움.
해시값이 이 목표보다 크면 블록이 무효하므로, 논스(Nonce)를 바꿔 다시 해시를 계산해야 함.
만약 해시값이 000000f3a2b4c...처럼 목표보다 크다면?
→ Nonce 값을 증가시키고 다시 해싱
목표보다 작은 값이 나오면?
→ 블록이 유효하므로 채굴 성공!
✅ 난이도 목표 공식

✅ 난이도 조정
비트코인의 경우, 2016 블록(약 2주마다) 난이도를 조정하여 블록 생성 속도를 평균 10분으로 유지함.
새로운난이도=기존난이도×(20160분 / 실제 걸린 시간)
채굴자가 블록을 발견하면, 이를 네트워크의 모든 노드에게 전파합니다.
네트워크의 풀노드들은 다음 검증을 수행합니다.
✅ 블록 검증 과정
✔️ 두가지 모두 256비트 (32바이트) 해시 16진수 문자열 형태 (binary).
10진수 정수 변환으로 비교.
Block Hash (123456789123456789...) < Target (987654321987654321...)
새 블록이 체인에 추가되면, 모든 노드는 이를 받아들여 블록체인을 동기화합니다.
블록을 채굴한 채굴자는 블록 보상(Block Reward) + 거래 수수료(Transaction Fee) 를 받습니다.
현재 비트코인의 블록 보상: 6.25 BTC (2024년에는 반감기로 인해 3.125 BTC로 감소 예정)
📑 새로운 블록 생성시 동시 생성에 대한 일관성 유지 방법과 과정
먼저 A, B 블록이 동시에 생성될 경우 두개의 해시는 서로 다르다.
(이전 블록해시, 타임스탬프 등의 값 기반으로 생성됨)
네트워크 전파에 따라 노드들은 A와 B 체인 위에 확정되지 않은 상태로 쌓이게 되지만
결국 전체 노드들은 A와 B 둘 중에 하나의 체인을 따르게 된다.
분기된 상황에서 결국은 자연스럽게 하나의 체인으로 수렴하게 되는데 아래의 방식들을 사용.
📑 트랜잭션이란?
// 예제
{
"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
}
사용자간의 데이터 교환 기록. 하나의 블록은 여러 개의 트랜잭션을 포함할 수 있다.
신규 채굴 블록을 통한 일관성 보장 과정중 "포크"상태로 일시적으로 여러 신규 블록들을 노드들이 다른 체인 형태로 가질수 있다.
다만 채굴 보상을 실제로 쓸려면 반드시 "100블록"이 더 쌓인 후 사용할 수 있으므로,
고아 블록으로 획득한 보상을 즉시 사용할 수는 없다.