닫기

코인정보 읽기

읽기

#7 - 채굴(마이닝)이란 무엇인가? (2/N) [3]

작성자:     작성일시: 작성일2018-02-14 13:21:39    조회: 7,256회    댓글: 3
 

블록체인 기술에서 '채굴'이 어떤 의미이고 왜 필요한지에 대하여 개념정리를 해봤습니다.
'채굴' 보상은 아래와 같은 시나리오에서 발생합니다.

  1. 어떤 거래가 발생하고 이 거래내역을 검증함으로써 '보상'이 발생된다.
  2. 일정 거래내역을 묶어서 관리하는 '블록'을 생성하는 댓가로 '보상'이 발생된다.

채굴에 대한 설명을 하기 앞서 우리가 배운 내용을 정리해보겠습니다. (이 정리가 오늘 배울 개념과도 연결됩니다!)

  1. 블록 체인을 구성하는 '블록'의 정보는 크게 헤더정보와 바디정보로 구성되어있습니다.
  2. 블록 바디에는 다수의 거래정보가 포함되어 있습니다.
  3. 블록 헤더 정보 중 머클루트는 블록 바디에 저장된 거래 내용을 머클트리한 결과 값입니다.
  4. 블록 헤더에 있는 6가지 정보를 해싱알고리즘을 통해 블록해시 값을 출력할 수 있습니다.
    (위의 내용은 포스팅 3~5편 내용을 순차적으로 정리한 내용입니다. 혹시 모르는 부분이 있다면 읽어보시면 많은 도움이 될 것이라고 생각됩니다.)


'채굴'과 관련된 용어와 이해야되는 부분이 너무 어렵고, 방대했기 때문에 어디서부터 어떻게 설명을할지 많은 고민이 있었습니다. 우선은 간략하게 개념 위주로 설명을 하고 심도 있게 다시 설명해야 하는 부분은 파트를 나누어서 따로 설명하기로 결정 하였습니다. (혹시 잘못된 부분을 말씀해주시면 언제든지 받아들이고 수정하겠습니다!)



'새로운 블록 생성'


새로운 블록을 생성하고 전파한 댓가의 '보상'으로 비트코인을 지급받는 방식을 '채굴'이라고 설명해드렸습니다. 그리고 '새로운 블록'을 생성한다는 것은'수학문제를 푸는 행위'와 같다고 설명해드렸습니다. 설명에 앞서 수학문제를 푸는 풀이과정을 이해하기 위해서는 반드시 해시함수에 대한 개념을 알고 있어야합니다.



'수학 문제란?'



도대체 어떤 수학문제를 푸는것일까요? 우선은 쉽게 이해할 수 있도록 설명하겠습니다.


비트코인 시스템에서는 채굴자들에게 정보가 일부 비어있는 '미완성 블록'을 제공합니다. 이때 비어있는 정보가 'nonce'정보입니다. 채굴자는 '미완성 블록'을 이용하여 비어있는 nonce 정보를 하나씩 변경하면서 수학문제의 답을 찾아야합니다.


수학문제의 답을 찾게되면 '완성된 블록'이 되고 '완성된 블록'을 생성해내면 '보상'을 받기위한 1단계 성립이 됩니다. (답을 찾으면 채굴이 끝난게 아닙니다! 우선은 수학 문제를 풀어내면 '채굴'이 된다고만 생각하세요!)


새로운 블록 즉 '완성된 블록'이 되기 위한 조건은 임이의 'nonce' 정보를 입력하여 출력된 '블록해시' 결과값이 난이도(target)보다 작을 경우 '완성된 블록'이 될 수 있습니다!


 


7_1.png

 


이러한 개념을 한마디로 정리하기가 어렵기 때문에 많은 사람들이 쉽게 수학문제를 풀고 문제를 푼 댓가의 보상으로 비트코인을 준다고 설명한 것 같습니다. 하지만 이렇게만 정리하고 넘어가면 안되겠죠? 자세히 살펴봐야합니다!


우선 이해를 돕기 위해 'nonce'에 임이의 결과 값을 넣어서 '블록해시'를 만드는 과정을 한번 살펴보겠습니다.

'미완성 블록'을 만들기 위해 실제 '완성된 블록'인 1번 블록의 정보를 활용해보겠습니다. 그렇기 위해서는 1번 블록이 어떻게 생겼는지 살펴봐야겠죠? 자세한 데이터를 얻기 위해 아래의 링크를통해 1번 블록의 구조를 Json형태로 받아보겠습니다. (https://blockchain.info/block-height/1?format=json)


전달 받은 데이터는 아래와 같습니다. (데이터가 너무 복잡하다고 전혀 어려워 하실 필요없습니다. 자세히 설명해 드리겠습니다 우선은 모르겠으면 구조만 보시고 넘어가세요!)


{ "blocks" : [

{
"hash":"00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048",
"ver":1,
"prev_block":"000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f",
"mrkl_root":"0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098",
"time":1231469665,
"bits":486604799,
"fee":0,
"nonce":2573394689,
"n_tx":1,
"size":215,
"block_index":14850,
"main_chain":true,
"height":1,
"tx":[

{
"lock_time":0,
"ver":1,
"size":134,
"inputs":[
{
"sequence":4294967295,
"witness":"",
"script":"04ffff001d0104"
}
],
"weight":536,
"time":1231469665,
"tx_index":14854,
"vin_sz":1,
"hash":"0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098",
"vout_sz":1,
"relayed_by":"0.0.0.0",
"out":[
{
"spent":false,
"tx_index":14854,
"type":0,
"addr":"12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX",
"value":5000000000,
"n":0,
"script":"410496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858eeac"
}
]
}]
}

]}



위의 데이터를 토대로 nonce 정보가 비어있는 '미완성 블록'은 아래의 그림과 같습니다.


 


7_2.png

 


'블록해시' 결과 값을 구하는 공식은 5편에서 설명드렸기 때문에 생략하고 '미완성 블록'의 nonce 정보에 임이의 결과 값을 대입하는 예제 코드를 작성해보겠습니다. (예제는 0부터4까지 nonce의 값을 1씩 증가시키고 블록해시의 결과값을 출력하였습니다.)


 


7_3.png

 


'미완성 블록' 이라는 표현을 썻지만 어떤분은 '잠겨있는 블록'이라는 표현을 쓰기도 했습니다. 어쨋든 새로운 블록의 모든 구성 요소는 'nonce'의 정보를 제외하고 알 수 있습니다. 새롭게 만들 블록에 'nonce'의 값을 대입하여 target보다 작은 결과의 '블록해시'값을 찾는게 채굴자가 풀어야될 수학문제입니다. 우선 위의 예제 코드 결과를 보겠습니다.


 


7_4.png

 


2편에서 이야기 했던 해시함수에 대해서 기억하시나요? 해시함수는 출력값을 토대로 입력값을 유추할 수 없습니다. 그 이유는 입력된 값의 일부만 변경되어도 전혀 다른 출력값이 나오는 눈사태 효과때문입니다. 즉 target보다 작은 '블록해시'정보를 찾기 위해서 어떤 'nonce'의 값이 필요한지 그 누구도 알 수 없다는 의미입니다.

target 보다 작은 '블록해시'를 구하기 위해서는 nonce정보를 0으로 대입한 후 '블록해시'값을 출력하고 target과 비교합니다. 답이 아니면 다시 1씩 증가시켜 target보다 작은 결과 값이 나올때까지 반복해서 찾을 수 밖에 없습니다. 즉 수학문제를 푸는 과정은 생각보다 단순합니다. nonce를 0부터 대입하여 target보다 작은 블록해시 결과 값이 도출될때까지 무한정 증가시키는겁니다! 그렇기 때문에 이러한 과정을 빠르게 연산할 수 있는 GPU를 활용한 채굴 나아가 asis라는 채굴 전용 칩이 등장하게 된것입니다.


자 어느정도 이해가 되셨나요? 심플하게 다시 정리를 해보자면..


  1. '채굴'은 일종의 보상의 개념이다.
  2. 보상을 받기 위해서는 '미완성 블록'을 '완성된 블록'으로 변환시키는 수학문제를 풀어야 한다.
  3. 수학문제의 정답이 되기 위한 조건은 '블록해시'정보가 'target'정보 보다 작아야 한다.
  4. 해시함수의 특징으로 인해 'target'보다 작은 '블록해시'를 만들어내기 위한 'nonce'의 값은 절대 유추할 수 없다.
  5. 'nonce'의 값을 유추할 수 없기 때문에 'nonce'의 정보를 0부터 1씩 증가하여 답이 맞는지 확인하는 단순 반복작업이 필요하다.


그렇다면 이제 난이도(target)의 값은 무엇이고 왜 필요한지에 대한 의문점이 생깁니다.

다음 포스팅에서는 난이도(target) 값을 어떻게 구하는지 그리고 실제 채굴되는 연산과정의 예제 코드를 PHP로 작성해보겠습니다.

 

[출처] https://steemit.com/kr/@yahweh87/7-2-n

  추천 1   비추천 0
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 밴드로 보내기

댓글목록

작성자:     작성일시:

감사합니다.
그런데 너무 어렵군요. 그러니 해결하면 한개의 비트코인을 받는 것 이겠지요?

작성자:     작성일시:

정말 이해하기 쉽게 설명해주셔서 감사합니다.
그런데 난이도(target)에 대한 개념설명이 안나와있는데 추가적인 설명을 요청드려도 될까요?
흐릿한 개념은 알고 있는데 작성자분이 워낙 설명을 잘해주셔서 ..

 

전체: 2,777개 (1/80페이지)
코인정보 목록
제목 글쓴이 조회 추천 비추천 날짜
  [필독] 불법홍보글 / 회원간 분란 발생 시 엄중하게 처리하겠습니다. (수정) [14] 720 9 0 11-28
  ICO List 게시판이 신설되었습니다. [1] 565 0 1 03-12
  글 작성하고 후원을 받아보세요!! 113 0 0 03-23
  " eCoinomic " 가상화폐 대출 플랫폼이란 49 0 0 05-11
BSB 무료 에어드랍 정보 공유드립니다. new 645 0 0 05-22
다크코인, 그거 꼭 필요해? (Why Dark-coin?) 2095 1 0 05-21
XRP, Xrapid 의 성공적인 크로스 보더 송금 파일럿 테스팅, 결국 선택은 SEC의 몫인가? [1] 2124 2 0 05-21
HDAC (현대코인) 메인넷 론칭관련 공개질의 2111 1 0 05-21
암호화폐 시장의 일부 상승에 따른 392억달러 수준, 새로운 USDT 토큰 2억5천만 달러로 Rekindle… 2077 1 0 05-21
IMF 의 두얼굴 : 구원자 인가? 침략자인가? 2075 1 0 05-21
이오스 요새 화두 정리 [1] 2305 2 0 05-21
정보공유)한국분들이 잘 모르는 바운티캠페인에 대해 2513 0 0 05-21
5월 21일 EOS 에어드랍 스냅샷 (LAB LEDGER) 2625 3 0 05-21
Waves Airdrop 에어드롭 (BCH, WCT, Liquid 토큰) 2770 0 0 05-20
TokenUnion 무료 에어드랍 정보 공유드립니다. 2507 1 0 05-21
암호화폐 4종 출금서비스 오픈안내 [1] 5227 0 1 05-19
비트코인골드(BTG) 출금서비스 일시중지 안내 5243 0 0 05-19
UBTC 유나이티드 비트코인이 TUSD, USDC에 이어서 UUSD라는 스테이블 코인을 만드나 봅니다. 5315 0 0 05-19
펀디엑스 서울 밋업 내용 정리 5339 0 0 05-19
About SBTC to NASH Mapping: 5286 0 0 05-19
HOQU 프로젝트 4월 다이제스트 5522 0 0 05-18
BCGChain 무료 에어드랍 받으러 가기!! 5345 0 0 05-19
형님들 WEE코인 에어드랍 이벤트 참여하세요! 곧 코인레일 상장임 5389 0 0 05-19
유망한 코인을 소개합니다 5487 1 0 05-19
코인레일 위토큰(WE) 상장 6361 0 0 05-18
엘벵크 팝체인상장 오피셜 6383 0 0 05-18
제 2의 스팀잇 TTC프로토콜 Main ICO 오늘 마지막입니다. 6381 0 0 05-18
30억달러 ‘비트커넥트’ 국제 사기…국내 모집책 무더기 경찰 수사 6443 0 0 05-18
카이버, 오미세고 페이백 이벤트 지급안내 6459 0 0 05-18
빗썸 eosDAC 에어드랍 지급안내 6490 0 0 05-18
스톰(Storm) A to Z 파헤치기 (2) 6528 0 0 05-18
중국정부 규제로 우지한이 채굴사업을 접는다는 찌라시와 팩트에 대해 6616 0 0 05-18
비트코인은 현재 8200 지지선을 테스트 받고 있습니다. 6579 0 0 05-18
아피스 정보에욤 6604 0 0 05-18
비트메인, 중국 정부의 규제강화에 대비해 AI 산업으로 사업영역 확장 6539 0 0 05-18