needmoreeasy EN 한국어
배우기

18 — 작업증명 — 거래를 블록으로 채굴하기

★★★☆☆ (3/5)작업증명과 블록 연결
선수 지식
17 — 암호화폐 장부, 07 — 동안
결과물
이전 블록 해시와 거래를 묶어 SHA-256 작업증명 블록 만들기

거래가 유효해도 그것만으로 블록체인이 되지는 않습니다. 새 블록은 직전 블록의 해시를 기억해야 하고, 채굴자는 정해진 작업 목표를 만족하는 해시를 찾아야 합니다.

문장형에서의 채굴

순수 한국어 문장형은 NME 내장 영지식 어댑터의 SHA-256 Fiat-Shamir 도전값을 256비트 블록 해시 후보로 사용합니다. 새로운 보안 난수와 약속값을 만들고 목표보다 작은 후보가 나올 때까지 반복합니다.

동안 블록하나채굴중
블록하나일회값은 영지식 일회값 만들기
블록하나약속후보는 블록하나일회값으로 영지식 약속 만들기
블록하나해시후보는 채굴자주소와 블록하나약속후보와 블록하나문맥으로 영지식 비대화 도전 만들기
블록하나시도에 1 더해
만약에 블록하나해시후보가 작업목표보다 작으면
블록하나해시는 블록하나해시후보
블록하나채굴중은 0
끝
끝
실행해 보기 →

고급 단계에서의 채굴

고급 예제는 더 전형적인 작업증명을 직접 구현합니다. 블록의 높이, 이전 해시, 거래, 거래 증명, 채굴자, 보상, 작업번호를 하나의 바이트열로 만들고 hashlib.sha256으로 해시합니다. 해시가 00으로 시작할 때까지 작업번호를 증가시킵니다.

nme 실행 examples/needmorecoin-advanced.ko

난이도는 학습용으로 낮습니다. 실제 네트워크 수준으로 높이면 실행 시간이 크게 늘어날 수 있습니다.

왜 이전 해시가 필요한가

블록 1은 창세 블록 해시를, 블록 2는 블록 1 해시를 자신의 입력에 포함합니다. 따라서 과거 거래를 바꾸면 해당 블록의 해시가 바뀌고 뒤 블록이 기억한 이전 해시와 맞지 않습니다. 작업증명까지 다시 해야 하므로 단순 데이터 수정과도 다릅니다.

다음 19 — 거래 증명에서는 채굴 전에 거래를 누가 승인했는지, 그리고 같은 거래를 왜 두 번 쓸 수 없는지 확인합니다.

GitHub에서 이 문서 보기