작업증명은 뭐야?
정의 · 작업 증명(PoW)
블록 헤더의 해시값이 타깃보다 작다는 것을 가장 먼저 찾아낸 사람에게 블록을 추가할 권리를 주는 시스템입니다. 값을 찾으려면 엄청나게 많이 추측해야 하지만, 확인은 해시 한 번이면 됩니다.
사토시 나카모토는 Adam Back의 Hashcash를 바탕으로 2008년 비트코인 백서에서 이를 설명했습니다. Hashcash는 이메일 스팸 발송에 비용을 들게 하려는 오래된 아이디어입니다. 유효한 해시가 작업을 증명합니다. 작업 없이는 유효한 해시를 만들 수 없고, 누구나 작업이 이뤄졌는지 확인할 수 있습니다.
이 페이지의 나머지 부분에서는 각 요소를 하나씩 살펴봅니다. 위 상자에서 직접 시도해 볼 수도 있어요. 실제 Bitcoin 헤더 형식을 브라우저에서 실시간으로 해시합니다. 채굴을 더 폭넓게 알아보려면 Bitcoin 채굴 완벽 가이드를 확인하세요.
작업 증명은 어떤 문제를 해결하나요?
비트코인을 관리하는 회사나 은행, 서버는 없습니다. 수천 대의 컴퓨터가 각자 원장 사본을 보관하고, 다음 블록이 무엇인지와 결제가 어떤 순서로 이루어졌는지 합의해야 합니다. 그렇지 않으면 누군가 같은 코인을 두 번 쓸 수 있습니다.
온라인에서는 누구나 가짜 컴퓨터를 천 대 만들어 천 번 투표할 수 있으므로 단순한 투표 방식은 통하지 않습니다. 이를 시빌 공격이라고 합니다. 작업 증명은 이 문제를 우회합니다. 발언권은 해시 수로 측정되고, 해시를 계산하려면 전기와 하드웨어가 필요합니다.
다음 블록을 결정하는 데 누가 참여하나요?
노드당 한 표
공격자 한 명이 가짜 노드 60개를 공짜로 만들면 정직한 노드 12개보다 더 많은 표를 얻습니다.
해시당 한 표
정직한 채굴자 88%공격자 12%
같은 60개 노드가 공격자의 실제 하드웨어를 공유하므로, 모두 합쳐도 비중은 12%입니다. 복제는 공짜지만 해시는 그렇지 않죠.
비트코인 블록 헤더에는 무엇이 들어 있나요?
채굴자는 블록 전체를 해시하지 않습니다. 나머지 모든 내용을 요약해 담은 80바이트 헤더를 해시합니다. 위쪽 상자에서 수정한 여섯 필드는 다음과 같습니다.
| 필드 | 바이트 | 포함된 내용 | 누가 바꾸나요 |
|---|---|---|---|
| 버전 | 4 | 블록이 따르는 규칙 | 거의 바뀌지 않음 |
| 이전 블록 해시 | 32 | 체인을 연결하는 이전 블록의 해시 | 블록이 바뀔 때마다 새로 생성 |
| 머클 루트 | 32 | 블록의 모든 거래를 요약한 하나의 지문 | 채굴자, 거래나 추가 논스가 바뀔 때 |
| 시간 | 4 | 채굴자가 블록 생성 시각으로 기록한 시간(유닉스 시간) | 채굴자, 한도 내에서 |
| 비트 | 4 | 4바이트에 담긴 타깃 | 네트워크는 2,016개 블록마다 |
| 논스 | 4 | 다시 시도할 때 쓸 수 있는 무료 숫자 | 채굴자, 추측할 때마다 |
헤더에는 이전 블록의 해시가 들어 있으므로, 오래된 블록을 바꾸면 해시가 달라집니다. 그러면 다음 헤더와 그다음 헤더도 유효하지 않게 됩니다. 이 페이지를 만들 때 서버에서 히어로에 쓰인 것과 같은 코드로 2009의 실제 제네시스 블록을 확인했습니다:
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
Bitcoin에서 SHA-256은 어떻게 작동하나요?
SHA-256는 어떤 입력이든 256비트 숫자로 바꿉니다. 이 숫자는 16진수 64자리로 표시됩니다. 비트코인은 블록 헤더에 이 연산을 두 번 적용합니다. 이를 SHA-256d라고 부릅니다. 채굴에서 중요한 특성은 간단합니다.
입력이 같으면 출력도 같음
결정론적
어떤 컴퓨터에서 계산하든 같은 헤더는 항상 같은 해시를 만듭니다. 그래서 검증할 수 있죠.
256비트
고정 크기
짧은 한 줄이든 책 한 권이든, 해시는 항상 16진수 문자 64개입니다.
단방향
되돌아가는 지름길은 없음
원하는 해시를 만드는 입력값을 계산해 낼 수는 없습니다. 입력값을 하나씩 시도할 수밖에 없습니다.
≈ 50%
눈사태 효과
문자 하나를 바꾸면 비트의 약 절반이 뒤집힙니다. 상단의 격자를 확인해 보세요.
이 마지막 특성이 작업 증명의 핵심입니다. 타깃에 가까운 해시라고 해서 다음 추측을 알 수 있는 건 아니므로, 유효한 블록을 찾는 지름길은 없습니다. 모든 채굴자가 같은 복권에 참여하며, 초당 해시 수가 많을수록 더 많은 복권을 사는 셈입니다.
타깃이 뭐고, 앞에 0이 많이 붙는 이유는 뭐야?
타깃은 256비트 숫자입니다. 해시를 숫자로 읽었을 때 타깃 이하이면 블록이 유효합니다. 작은 숫자는 앞자리가 0이므로 타깃이 낮을수록 앞에 0이 더 많이 붙습니다. 16진수 0이 하나 늘 때마다 평균적으로 추측 횟수는 16배가 됩니다.
유효한 블록 하나를 찾는 데 필요한 평균 해시 수
- 히어로 영역의 예시 블록 · 앞자리 16진수 0 4개65,536
- 비트코인의 가장 쉬운 목표값 (2009) · 앞자리 16진수 0 8개, 비트 1d00ffff4,294,967,296
- 오늘날 비트코인 블록 · 앞쪽 0이 약 20개(실시간 추정치)5.1 × 1023
네트워크는 블록 2,016개마다, 약 2주에 한 번 타깃을 조정합니다. 덕분에 해시레이트가 늘거나 줄어도 블록은 약 10분마다 생성됩니다. 현재 네트워크의 해시레이트는 약 858 EH/s입니다. 실시간 수치이며 매시간 업데이트됩니다. 조정 방식은 비트코인 채굴 난이도 가이드에서, 단위는 해시레이트 설명에서 확인할 수 있습니다.
논스와 엑스트라 논스란?
논스(“한 번만 사용하는 숫자”)는 채굴자가 매번 추측할 때 바꾸는 4바이트 필드입니다. 바꾸기 위해 있는 유일한 필드죠. 문제는 4바이트로 만들 수 있는 값이 약 4.3억 개뿐이라 최신 장비는 거의 즉시 전부 시도한다는 점입니다.
채굴자의 반복 작업
- 01
모든 논스 시도
0, 1, 2부터 4,294,967,295까지. 4바이트로 표현할 수 있는 모든 값입니다.
- 02
빠르게 소진됨
100 TH/s 장비 한 대는 이 모든 경우를 약 43마이크로초 만에 시도합니다.
- 03
추가 논스 변경
채굴자는 자신의 보상 거래인 코인베이스의 여유 필드를 수정합니다.
- 04
새 머클 루트
거래가 바뀌면 머클 루트도 바뀌므로, 모든 논스에서 새로운 해시를 다시 얻습니다.
그래서 채굴자들은 추가 논스도 바꿉니다. 채굴자에게 보상을 지급하는 블록의 첫 거래인 코인베이스에 남겨 둔 몇 바이트입니다. 코인베이스가 바뀌면 머클 루트도 바뀌고, 그에 따라 새 논스를 수십억 개 더 시도할 수 있습니다. 채굴 풀에서는 각 채굴자에게 서로 다른 추가 논스 범위를 할당해 다른 채굴자가 한 작업을 반복하지 않도록 합니다.
블록을 찾는 데는 왜 많은 비용이 들지만 검증은 왜 간단한가요?
블록을 찾으려면
≈ 5.1 × 1023 해시
전체 네트워크의 모든 장비가 약 10분 동안 추측한 결과입니다.
실시간 추정치, 매시간 업데이트됩니다.
검증하려면
1 해시
저렴한 노트북을 포함한 모든 노드는 80바이트 헤더를 한 번 해시한 뒤 목표값과 비교합니다. 이 작업은 1밀리초도 걸리지 않습니다.
채굴자는 타깃보다 작은 해시가 나올 때까지 계속 해시를 시도해야 합니다. 다른 사람들은 블록 헤더를 한 번만 해시한 뒤 결과를 비교하면 됩니다. 이처럼 작업 비용이 크게 차이 나기 때문에 수많은 일반 컴퓨터가 블록을 만든 채굴자를 신뢰하지 않고도 체인을 검증할 수 있습니다.
아래에서 직접 검색해 보세요. 이 데모는 히어로보다 단순한 블록 형식을 쓰지만, 같은 이중 SHA-256 복권 방식이며 찾은 블록은 각각 직전 블록으로 연결됩니다.
인터랙티브 · 브라우저에서 블록 채굴해 보기
실제 SHA-256d 작업 증명, 단순화한 헤더
블록 해시(이중 SHA-256)
거래 내용을 고치면 해시가 완전히 바뀌어. 글자 하나만 달라도 그래.
시도 횟수: 0
네 해시레이트: 해당 없음
시간: 0.0 s
최장 체인 규칙이란? 51% 공격이란?
두 채굴자가 거의 동시에 블록을 찾으면 네트워크에 잠시 두 가지 버전이 생길 수 있습니다. 노드는 누적 작업량이 더 많은 체인을 따릅니다. 흔히 가장 긴 체인이라고 하지만, 실제로는 가장 무거운 체인입니다. 난이도가 높은 블록 몇 개가 난이도가 낮은 블록 여러 개보다 더 큰 누적 작업량을 가질 수 있습니다.
결제를 되돌리려면 공격자는 해당 결제 이전부터 시작해 모두의 체인보다 더 무거운 체인을 만들어야 합니다. 위에 새 블록이 하나씩 쌓일 때마다(확인 횟수가 늘 때마다) 공격자는 더 뒤처집니다. 이 확률은 백서에서 계산했습니다. 슬라이더를 움직여 확인해 보세요.
인터랙티브 · 공격자가 따라잡을 수 있을까?
비트코인 백서 11절의 공식
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
공격자가 뒤처진 블록 수(확인 수). 막대는 로그 척도를 사용하며, 확률은 백만 분의 1부터 확실한 수준까지 표시합니다.
해시레이트가 10%일 때 6회 확인 후 결제를 되돌릴 확률은 0.024%이고, 확인 1회 후에는 20.5%입니다.
해시레이트가 50% 이상이면 공격자는 결국 성공합니다. 이것이 51% 공격입니다. 심각한 위협이지만 한계가 있습니다:
해시레이트의 대부분을 가진 공격자는 다음을 할 수 있습니다
- 자신의 체인으로 최근 블록 대체하기
- 자신에게 보낸 코인을 이중 지불
- 블록에 일부 거래를 포함하지 않기
그때도 할 수 없는 일
- 다른 사람의 지갑에서 코인 사용하기
- 블록 보상 외에 코인 생성
- 다른 모든 사람에게 적용되는 비트코인 규칙을 바꾸기
그래서 거래소는 큰 금액을 입금할 때 확인이 여러 번 이뤄질 때까지 기다립니다. 보통 6회를 기준으로 삼습니다.
작업 증명에는 왜 에너지가 많이 드나요?
에너지가 곧 보안이기 때문입니다. 유효한 블록은 실제로 전력을 사용했다는 증거입니다. 기록을 바꾸려면 공격자는 최소한 같은 양의 전력을 더 써야 하고, 정직한 네트워크가 계속 진행되는 동안에도 전력을 계속 써야 합니다.
에너지는 어디에 쓰이고, 무엇을 얻나요?
블록 보상 및 수수료
블록을 찾은 사람에게 새 BTC와 수수료가 지급됩니다.
장비와 전기
채굴자는 보상이 자신에게 가치 있는 만큼까지 비용을 들입니다.
네트워크 해시레이트
이렇게 쓴 연산 자원은 초당 해시 수로 나타납니다.
기록을 다시 쓰는 데 드는 비용
공격자는 블록을 만들 때마다 이 모든 연산 자원을 넘어설 만큼 써야 합니다.
전력 사용량과 전력의 출처는 충분히 논의할 만한 주제입니다. 케임브리지 지수는 추정치를 추적하고, Bitcoin 채굴 에너지 가이드에서는 수치를 살펴봅니다. 반감기가 일어날 때마다 보상 중 새로 발행되는 코인의 몫이 줄어들기 때문에, 시간이 갈수록 수수료가 보안 비용에서 더 큰 몫을 부담해야 합니다.
작업증명과 지분증명은 어떻게 다를까요?
지분증명(PoS)은 전기를 쓰는 사람 대신 코인을 예치해 묶어 둔 사람 중에서 다음 블록 생성자를 선택합니다. Ethereum은 2022에 작업증명에서 지분증명으로 전환했습니다. 두 방식을 공정하게 비교해 보겠습니다.
| 작업증명 | 지분증명 | |
|---|---|---|
| 다음 블록을 추가하는 사람 | 타깃보다 작은 해시를 가장 먼저 찾은 채굴자 | 지분에 비례해 선정된 검증자 |
| 무엇이 보안을 지키나요 | 블록체인 외부에서 소비되는 전력과 하드웨어 | 블록체인 안에 묶여 있고 부정행위 시 빼앗길 수 있는 코인 |
| 에너지 사용량 | 설계상 높게 설정됨 | 낮음 |
| 참여하려면 | 장비와 저렴한 전력 | 스테이킹할 코인 |
| 확정 | 확정이 쌓일수록 더 안전해집니다 | 명시적 최종성 체크포인트 |
| 주요 비판 | 에너지 사용량과 채굴 집중도 | 지분 집중과 더 복잡한 설계 |
| 기록 | 2009 이후의 비트코인 | 이더리움, 2022 이후 |
비트코인 개발자들은 작업 증명을 유지해 왔습니다. 그 비용은 시스템 밖에서 발생하므로, 보유한 코인으로 통제권을 살 수 없기 때문입니다. 지분 증명 지지자들은 에너지를 아끼고 거래를 더 빨리 최종 확정할 수 있다고 주장합니다.
Can you get mining rewards without running proof of work yourself?
Yes. With CloudMineCrypto you mine bitcoin for free from your phone or browser, with no hardware, noise or power bill. Claim the free 8-hour plan, and add more free plans by watching ads, playing games, completing offers and checking in daily. Your estimated BTC ticks up while your plans run, and you withdraw to your own wallet, Lightning included.
Each plan has a hashrate, and your estimate is that hashrate’s share of the whole network, times 6 blocks an hour, times the block reward. That’s the formula the app uses to estimate your rewards (rules and limits apply). Want more speed? Paid plans are an optional boost for fun. They usually mine less than they cost, and the price is shown before you confirm.
참고: 보상은 추정치이며 네트워크 상황에 따라 달라지고 보장되지 않습니다. 플랜을 이용해도 어떤 장비나 채굴 풀의 소유권이 생기지는 않습니다. 출금에는 한도나 인증이 적용될 수 있습니다. 자세한 내용은 보상 규칙과 무료 비트코인 채굴 가이드를 확인해 보세요. 조건이 적용됩니다.
자주 묻는 질문
간단히 말해 작업 증명이란?
블록을 추가하는 데 실제 노력이 들게 하는 방식입니다. 채굴자는 블록 헤더를 반복해서 해시하고, 논스라는 숫자를 바꿔 가며 결과가 목표값보다 낮아질 때까지 시도합니다. 그런 해시를 찾으려면 엄청나게 많이 추측해야 하지만, 누구나 해시 한 번으로 확인할 수 있습니다.
비트코인에서 논스(nonce)란?
블록 헤더에 있는 4바이트 숫자로, 채굴자는 시도할 때마다 이 값을 바꿉니다. 가능한 값은 약 4.30억 가지입니다. 값을 모두 쓰면 채굴자는 코인베이스 트랜잭션 안의 추가 논스를 바꿉니다. 그러면 새로운 머클 루트가 만들어지고 해시를 새로 시도할 수 있습니다.
비트코인은 왜 SHA-256를 두 번 사용하나요?
비트코인은 80바이트 헤더를 SHA-256로 해시한 다음, 그 결과를 다시 해시합니다. 사토시는 왜 이렇게 했는지 설명하지 않았습니다. 일반적으로는 길이 확장 공격을 막고 안전성을 한층 높이기 위한 것으로 봅니다.
51% 공격으로 무엇을 할 수 있나요?
해시레이트의 과반을 가진 사람은 비공개로 더 긴 체인을 만든 뒤 최근 블록을 대체할 수 있습니다. 이렇게 하면 자신이 가진 코인을 이중 지불하거나 일부 거래를 막을 수 있습니다. 다른 사람의 코인을 쓰거나, 규칙보다 많은 코인을 만들거나, 모두에게 적용되는 규칙을 바꿀 수는 없습니다.
지분 증명이 작업 증명보다 나을까요?
에너지를 훨씬 적게 사용하고, 보안은 지분으로 묶어 둔 코인에서 나옵니다. 작업 증명은 보안을 전기와 하드웨어라는 외부 비용에 연결하며, 2009년부터 Bitcoin을 뒷받침해 왔습니다. 두 방식은 서로 다른 장단점이 있으므로 어느 쪽이 나은지는 무엇을 중요하게 생각하는지에 따라 달라집니다.
Can I get bitcoin mining rewards without my own hardware?
Yes. In the CloudMineCrypto app you claim free mining plans (the free plan, ads, games, offers and a daily check-in) and your estimated BTC ticks up while they run, then you withdraw to your own wallet. Rewards are estimates based on your plan’s hashrate and live network data, they aren’t guaranteed, and a plan doesn’t give ownership of any hardware.
출처와 추가 자료
- Bitcoin: A Peer-to-Peer Electronic Cash System(백서) · 사토시 나카모토, bitcoin.org
- 블록체인 가이드: 블록 헤더, 작업 증명, 코인베이스 · Bitcoin 개발자 문서
- 채굴 가이드: 솔로 채굴, 채굴 풀, getblocktemplate · Bitcoin 개발자 문서
- 난이도 · Bitcoin Wiki
- 컨펌 · Bitcoin Wiki
- 케임브리지 Bitcoin 전력 소비 지수 · Cambridge Centre for Alternative Finance
- 채굴 대시보드: 해시레이트, 난이도, 최근 블록 · mempool.space
이 페이지의 실시간 수치는 CloudMineCrypto API 또는 옆에 표시된 공개 블록체인 데이터 서비스에서 가져옵니다. 정해진 주기에 따라 새로고침되며, 각 수치 옆에 출처가 표시됩니다. 이 가이드는 교육용이며 금융 조언이 아닙니다. CloudMineCrypto는 투자 상품이 아닙니다. 앱의 보상은 추정치이며 보장되지 않습니다.
어떻게 돌아가는지 읽었지. 이제 실제로 돌아가는 걸 봐.
CloudMineCrypto 앱에서 무료 8시간 채굴 플랜을 받고, 실시간 네트워크 데이터로 계산된 예상 BTC가 조금씩 올라가는 걸 확인해봐. 하드웨어도, 카드도 필요 없어.