아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
강한에뮤83
강한에뮤8319.05.11

마이닝을 통한 암호화폐 생성 과정이 궁금합니다.

Pow 합의 알고리즘을 사용하는 암호화폐는 채굴자들이 해시를 투입함으로써 블록을 생성하는 것으로 알고 있습니다.

비트코인은 블록생성이 10분으로 알고 있는데요 하나의 온전한 비트코인이 채굴되는것의 과정이 궁금합니다.

채굴자들이 블록을 캘때 어떻게 블록이 유의미한지 판단하고 그 블록이 최종 블록으로 인정받는가에 대한 설명을 부탁드립니다.

55글자 더 채워주세요.
답변의 개수
2개의 답변이 있어요!
  • 채굴(작업증명)을 의미합니다.

    위에서도 언급했지만 블록과 블록을 해시 값을 이용해서 블록체인을 이룬다고 했다. 이런 블록체인 중간에 조작되면 해시값이 변경되고 다음 블록이 이전 블록이 조작되었다는 사실을 쉽게 알 수 있다. 하지만 0번째 블록부터 N번째 블록까지 모두 변경 시키면 말이 달리진다. 그래서 이를 막기 위해서 Proof of Work 알고리즘을 이용해서 채굴을 어렵게 하여 이를 해결 했다.

    작업증명 알고리즘을 사용하는 블록체인 해시는 Difficulty값에 따라 선택된 Target보다 작은 해시값을 찾는 것이다. 해시의 특성상 Target 데이터를 가지고 입력값을 알 수 없기 때문에 Nonce값을 계속 변경 하면서 Target조건에 맞는 해시값을 찾아야 한다.. 이러한 작업 때문에 비트코인 네트워크에 참여하고 있는 노드들이 동시에 블럭을 만들 수 없고 쉽게 조작 하지도 못 한다.

    아래는 501394의 블럭해시 이다.

    000000000000000000193333275c26ac7b19522843e0db6165f366fd3049112d

    먼지 모를 문자열이지만 앞에 0이 굉장히 많다는 것을 눈치 챌 수 있다. 그럼 501393 블럭은 어떨까?

    00000000000000000078ec5e2e341e582235597548b1d10852827ab4830ba0cf

    마찬가지다 앞에 0이 굉장히 많다. 그렇다면 내가 한번 아무 문자열을 넣어서 저렇게 0이 많이 나오게 시도 해보자

    d22a437473ea38bbacd0a520728dd55f6771a5387f56d86e4c310bee4141fd72

    내가 만든건 해시값은 쉽사리 0이 저렇게 많이 붙지 않는다. 저러한 값을 얻기 위해선 엄청나게 많은 해시함수를 돌려보아야 찾을 수 있을 것이다.

    다시 말해서, 각 블럭을 살펴 보면 Nonce라는 값이 있는데 이 Nonce 값을 1비트씩 변경 해보면서 목표치 보다 작은 해시 값이 나올때 까지 해시 함수를 무한 반복 한다. 이 해시 값을 가장 먼저 찾은 채굴자에게 해당 블럭을 생성할 수 있는 권한과 보상이 주어진다.

    보상은 아래 표를 참고 하자.

    출처 : 피넥터

    이런 보상덕분에 채굴자들은 비트코인 트렌젝션을 검증해주고 생태계를 유지 하는게 가능하다. 그런데 중앙에서 관리를 하지 않는 비트코인은 아무도 보상 지급을 담당해줄 기관이 없다 그래서 비트코인은 채굴자가 자신이 만드려는 블록 안에, 보상으로 받을 새로운 비트코인이 “생성”되는 거래를 하나의 거래로써 포함시키고 10분간 쌓인 거래와 수수료를 함께 블록에 포함 시켜 블록을 만들어서 셀프 보상을 받게 되는 것이다. 그럼 2040년쯔음엔 더이상 채굴할 비트코인이 없으면 수수료만 챙기게 된다.

    채굴을 통해서 10분간 쌓인 거래가 블록에 포함이 되면 비로써 10분간 쌓인 거래들이 성립되었다고 판단한다. 그래서 보통 사람들이 사용하는 업비트를 통해서 다른 거래소에 비트코인을 보낼때 바로 가지 않고 10분정도 걸리는게 이 이유 때문이다. 물론 거래에 우선 포함되는 우선 처리 알고리즘과 블럭당 1MB라는 공간만 차지 할 수 있어서 10분만에 새로운 블록에 내 거래가 못 들어 갈 수도 있다 그러면 거래를 인정하는데 시간이 더욱 오래 걸리는 것이다.


  • 질문자께서 질문해주신 내용을 중심으로 답변을 드리도록 하겠습니다.

    • 채굴자들이 블록을 캘때 어떻게 블록이 유의미한지 판단하고 그 블록이 최종 블록으로 인정받는가에 대한 설명을 부탁드립니다.

    1. 비트코인 블록체인 상에서 거래가 발생되고 그것이 각 노드에 전파되면 네트워크의 노드들이 이 거래를 검증하기 시작합니다.

    2. 비트코인 블록체인은 PoW 작업 증명 방식의 합의 알고리즘을 채택하고 있는데요, 이 합의 알고리즘은 해답을 찾기에 매우 어렵지만, 막상 정답이 나오고 나면 그 정답이 맞는지는 쉽게 알아낼 수 있는 문제를 풀게 함으로써 문제를 맞춘 사람에게 블록을 생성할 자격을 주고 나머지 노드는 정답을 검증하여 합의에 도달하는 방식으로 이루어집니다.

    3. 즉, 해시 함수라는 문제에 논스라는 무작위 값을 대입하여 '블록이 설정해 놓은 값(블록 해시값)'과 같거나 더 낮은 값을 찾게 되는데 어떤 한 마이닝 노드가 블록 해시값을 찾게 되면 나머지가 그 정답을 빠르게 검사해서 정답이 맞는지 확인하여 노드들 간의 합의에 도달할 수 있는 것이죠. 이렇게 되면 블록에 거래 내역이 기록되고 생성되며 비트코인을 채굴 보상을 받게 됩니다. 또한 해당 블록이 다음 블록과 연결됩니다.

    4. 이런 과정을 거쳐 이전 거래 내역을 통해 새로운 거래를 검증해 가면서 또 새로운 블록이 생성되고 이런 과정을 한 번 거칠 때마다 'Confirm(컨펌)'이 이루어집니다. 그리고 비트코인의 경우에는 6번 정도의 컨펌을 거치게 되면 '최종성(Finality)'를 획득한 것으로 보며 사실상 더 이상 수정될 수 없는 거래로 확정이 되었다고 봅니다.

    답변이 도움이 되길 바랍니다.