비트코인 채굴 시스템의 연동 구조를 텍스트 기반 계층도로 정리한 것입니다.
🧱 비트코인 채굴 시스템 연동 구조 (텍스트 계층도)
[Bitcoin Network]
▲
│
┌──────┴───────┐
│ │
[풀 노드 A] [풀 노드 B]
(bitcoind) (bitcoind)
▲
│ JSON-RPC (getblocktemplate, submitblock)
│
┌───────┴────────┐
│ 채굴풀 서버 │ ← ex: stratum-pool, slushpool core
│ (Stratum Server)│
└───────┬────────┘
│
│ Stratum Protocol (TCP, JSON)
▼
┌──────────────┐
│ 채굴기 컨트롤러 │ ← ex: cgminer, custom controller
└────────┬─────┘
│
│ UART / USB / SPI / 기타 통신
▼
┌────────────────────┐
│ ASIC 채굴기 (SHA256 Core) │
└────────────────────┘
🔄 흐름 설명 요약
- bitcoind (풀 노드)
- 블록체인 저장 및 최신 상태 유지
- 블록 템플릿 요청 응답 제공 (
getblocktemplate
) - 제출된 블록 수용 (
submitblock
)
- Stratum Server (채굴풀 서버)
- 여러 채굴기에게 작업 분배
- 기여도 추적 및 보상 분배
- bitcoind와 주기적으로 통신
- 채굴기 컨트롤러
- 풀 서버와 TCP 연결 유지
- 블록 헤더 생성 및 전달
- 채굴기에서 유효한 해시 수집
- ASIC 채굴기
- 순수 SHA-256 해시 연산 반복
- 조건 만족 시 컨트롤러로 해시 제출
💡 실전 예시 흐름 (한 번의 채굴 사이클)
1. 채굴풀 → getblocktemplate(bitcoind)
2. 채굴풀 → mining.notify(채굴기들)
3. 채굴기 컨트롤러 → Nonce brute force 시작
4. ASIC → 조건 만족 → 컨트롤러에 해시 전송
5. 컨트롤러 → mining.submit(풀 서버)
6. 풀 서버 → submitblock(bitcoind) 전송
7. 블록 유효 → 블록체인에 기록 → 채굴 보상
왜 굳이 ‘넌스(nonce)’를 추가해서 SHA-256 퍼즐을 풀게 했는가?
해시 용량은 상관 없지만 ‘신뢰를 분산시키는 방법’이 없기 때문입니다.
즉, 누가 블록을 만들 자격이 있느냐? 를 정하는 공정한 경쟁 룰이 필요했습니다.
💡 넌스를 넣은 이유 = 작업 증명(Proof of Work)
목적 | 설명 |
---|---|
✅ 무작위성 + 공정성 확보 | 아무나 블록을 만들 수 있게 하되, 쉽게는 안 되도록 |
✅ 스팸 공격 방지 | 누군가 거래 조작 블록을 막 찍어내는 걸 막기 위해 연산 비용을 부과 |
✅ 분산 합의 유도 | 계산 경쟁을 통해 가장 먼저 조건을 만족한 블록을 자연스럽게 선택 |
✅ 블록 생성 속도 조절 | 10분에 한 번꼴로 블록이 생기도록 난이도를 자동 조절 |
❗ 넌스 없이 해시만 있으면?
블록을 만드는 건 쉽습니다.
그냥 거래 묶어서 해시하면 끝.
근데 누가 만든 걸 채택할지를 정할 기준이 없습니다.
→ 아무나 수천 개 블록을 한꺼번에 찍어내서 체인을 장악할 수 있음
→ 스팸 체인, 이중 지불, 체인 분열 발생
→ 블록체인 무력화
⛓️ 그래서 등장한 설계 전략
1. 거래를 모으는 건 누구나 가능하게 두자.
2. 하지만 유효한 블록을 만들기 위해선 "해시 퍼즐"을 풀게 하자.
3. 이 퍼즐을 쉽게 바꿀 수 있게 하기 위해 '넌스'라는 자유도를 주자.
4. 퍼즐을 먼저 푼 사람만 블록 보상을 받게 하자.
🔐 넌스는 결국 “운 + 노력”의 조절 장치
요소 | 역할 |
---|---|
거래 데이터 | 고정 (누가 보내고 받았는지) |
이전 블록 해시 | 고정 (연결 유지) |
머클루트 | 고정 (거래 구조) |
🔁 넌스 | 자유롭게 변경 가능 → 퍼즐 풀기 전용 |
→ 블록 내용은 못 바꾸지만, 넌스를 바꾸며 퍼즐 시도 가능
✅ 요약
질문 | 답변 |
---|---|
해시가 고유하면 되지 왜 넌스가 필요한가? | ❌ 고유성만으론 공정성 확보가 안 됨 |
왜 0이 많이 붙은 해시를 찾는가? | ✅ 그 조건이 있어야 시간이 걸리고, 경쟁이 생김 |
넌스는 왜 넣었나? | ✅ 해시 퍼즐에 도전할 수 있는 자유도 변수, 공정한 경쟁 장치 |
즉, 넌스는 ‘신뢰를 숫자로 만들기 위해 추가된 변수’입니다.
답글 남기기