비트코인 생성원리

마지막 업데이트: 2022년 4월 8일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
블록체인 : 비트코인 마이닝 알고리즘 원리, 이해 : 네트워크 분기 합의 알고리즘 원리, 이해 8

암호화폐 지갑이란 무엇인가?
'지갑'의 사전적 의미는 돈이나 증명서를 넣을 수 있도록 가죽이나 헝겊으로 만든 작은 물건이다. 이 때문에 많은 사람이 '암호화폐 지갑'이라고 하면 암호화폐를 넣어서 보관하는 지갑의 의미로 생각할지도 모른다. 비트코인이나 이더리움 같은 암호화폐가 지갑 안에 보관되어 있다고 생각하는 것이다.
하지만, 실제로 암호화폐 지갑 안에는 암호화폐가 없다. 암호화폐 지갑은 블록체인의 분산화된 네트워크에 기록되는 거래 데이터를 만들고 서명하는 일에 사용하기 위한 비공개키 보관 및 관리를 위한 도구일 뿐이다.

그렇다면, 암호화폐는 도대체 어디 있는 것일까? 암호화폐는 참가자 모두가 공동으로 소유하는 블록체인 안에 있다. 우리가 집을 매수했을 때 집의 주소가 바뀌지 않고 서류상의 소유자만 바뀌는 것처럼 암호화폐도 내 소유로 등록된 암호화폐 중 일부를 서류상 주택 소유자 변경하는 것과 같은 과정을 통하여 암호화폐 데이터베이스에서 거친다는 것이다.

암호화폐 지갑, 어떻게 생성되는 것인가?
암호화폐 지갑은 비트코인 생성원리 비대칭적 암호화를 이용하여 생성된다. 비대칭적 암호화라는 개념을 이해하기 위하여 먼저 대칭적 암호화라는 개념에 대하여 알아보자.

A가 B에게 귀중품을 보낸다고 가정하면 예를 들면 이해가 쉬울 것이다. A는 귀중품을 안전하게 보내기 위하여 금고에 넣은 뒤 A 소유의 자물쇠를 이용하여 금고를 B에게 전달할 것이다. 그런데, B는 A의 자물쇠를 가지고 있지 않기 때문에 문제가 생긴다. 그래서 열쇠를 A에게서 받아야만 한다. 반대로 B가 A에게 무엇인가를 보낼 때도 마찬가지이다.

이러한 방식은 한 개의 열쇠를 서로 주고받아야 하므로 전달 과정 중 도난, 탈취, 분실 사고 위험이 존재한다. 문제를 해결하기 위한 해결책으로 등장한 것이 비대칭적 암호화라는 개념이다. 비대칭적 암호화 방식에는 공개 키와 비공개 키가 있다. 공개 키를 자물쇠라고 하면, 비공개 키는 그것을 열기 위한 열쇠라 할 수 있다.

A의 공개키와 비공개키, 그리고 B의 공개키와 비공개키까지 총 4개의 열쇠가 있다고 가정해보자.

A가 귀중품을 보내기 위해서는 B의 공개키(자물쇠 B)를 받아서 금고에 귀중품과 A의 공개 키(자물쇠 A)를 넣었다. 그리고, B의 공개 키(자물쇠)를 이용하여 금고를 보낸다. B는 A에게 주었던 자신의 공개 키(자물쇠 B)를 이용하여 금고를 닫아놓은 상태이다. 따라서 이 금고를 열 수 있는 비공개 키(열쇠 B)가 있으므로 금고를 열 수가 있다. 반대로 금고와 함께 내용물을 받은 후, B가 A에게 물건을 보낼 때는 내용물과 B의 공개 키(자물쇠 B)를 넣고 A의 공개 키(자물쇠 A)를 이용하여 금고를 잠근 뒤에 전달하면 된다.

이렇듯 공개키/비공개 키의 방식이 암호화폐에서의 지갑을 의미한다. 공개키는 누구에게나 공개할 수 있다. 비공개 키가 있지 않은 이상 공개 키를 이용하여 할 수 있는 일이 없기 때문이다. 항상 비밀을 유지하는 것은 당연한 이야기이다. 암호화폐를 쓰거나 소유권을 바꾸고 싶다면, 비공개 키가 있어야 공개 키를 열 수 있기 때문이다.

즉, 지갑을 생성한다는 것은 즉 비공개 키를 만든다는 뜻이다. 비공개 키를 이용하여 공개 키를 만들고 공개키는 암호화폐를 보낸다고 했을 때 공유해야 할 주소에 불과하다.

암호화폐 지갑의 또 다른 사용법
암호화폐 지갑 대부분 비트코인, 이더리움 등 암호화폐 보관에 사용된다. 그리고, 주택 매매 문서와 증권, 상품 등을 나타내는 대체 불가능, 대체 가능 디지털 권한을 위한 키와 공연 티켓, 버스 티켓, 상품 등 디지털 가치를 지닌 모든 것을 나타낼 수도 있다.

미래 경제에는 의료 비트코인 생성원리 정보, 개인 정보와 같은 모든 것을 블록체인과 암호화폐 지갑을 기반으로 할 수 있을 것이다. 운전면허증, 여권, 토지증서 등 그동안 종이 형태로 발급된 각종 서류를 디지털화하여 암호 지갑에 저장하고 접근 권한을 줄 수 있다.

암호화폐 지갑의 다양한 활용성 덕분에 암호화폐 지갑의 안전한 사용을 위하여 안전한 암호화폐 환경, 보안 기술, 지갑 기술 등에 대한 중요성이 더욱 대두될 것이다.

블록체인을 '채굴'한다는게 뭔가요?

그중 💲비트코인에서 사용하는 방식을 설명하고
이를 통해 이루고자 했던 보안성에 대해 이야기합니다.

'채굴'이란 것이 무엇이고, 이에 참여하는 사람들이
어떻게 비트코인의 안전성을 유지하고 돈을 벌어가는지

이 영상으로 시원하게 이해하실 수 있을거에요!

📌 영상댓글로 비트코인 생성원리 비트코인 생성원리 받은 질문들

🤚 비트코인은 그럼 완벽하게 안전한건가요?

영상에서 말씀드린 원리는 안전함을 추구하기 위한 설계일 뿐, 아래의 예시처럼 비트코인도 오류와 공격의 가능성으로부터 자유로운 것은 아닙니다.

🤚 비트코인이 모두 채굴돼서 보상이 멈추면 어떻게 되나요?

🎬 영상 스크립트

한번에 쭉 봐야 이해할 수 있는 내용이라 통째로 올립니다.
가능한 한 영상으로 먼저 시청해주세요.

지금쯤이면 다들 블록체인에 대해 한 번쯤은 검색해서 읽어 보셨을 거에요. 장부를 분산하고 블록으로 처리를 하고 체굴이란 걸 하고 이런 내용들 보고 '음 뭐 그렇구나'는 했는데 왜 블록이어야 하는지, 왜 10분에 한 번인지, 채굴은 또 정확히 뭐하는건지 이해 못하신 분들 아직 많이 계실거에요 이 개념들이 서로 연결돼 있는거라 마치 상추쌈처럼 한 입에 넣고 씹어야 그 맛을 이해할 수 있는건데 입을 크게 벌려야 하기 때문에 진입장벽이 있는거거든요. 얄팍한 코딩사전에서 최대한 탁구공만하게 싸보도록 할게요. 중간에 어 왜 이 얘기하다 저 얘기하지 싶더라도 조금만 참고 끝까지 들어보시도록 해요. 블록체인이 등장하기 전에는 온라인 거래들이 특정 서버에 기반을 두고 이뤄졌어요. 해당 서비스를 운영하는 회사에서 컴퓨터를 하나 마련해두고 여기서 모든 거래들이 진행되고 내역들이 장부에 저장되죠. 여기에는 위험이 따라요. 이 중앙 서버, 넥서스만 털어버리면 장부를 조작해서 돈을 빼가거나 시스템을 마비, 심지어 파괴할 수 있거든요. 때문에 회사에선 보안에 많은 인력과 돈을 들여야 해요. 블록체인은 이 발상을 뒤집은거에요. 장부를 중앙서버에 꽁꽁 숨겨놓는게 아니라 모두가 볼 수 있게 공개하고 사람들이 자발적으로 참여해서 이 장부들을 함께 관리하고 감시하도록 하는거죠. 여기까진 다 아실거에요. 지금부터 집중! 블록체인에 여러 종류가 있고 종류마다 차이가 있지만 비트코인이 쓰는 Proof of Work방식으로 설명할게요. 블록체인은 이 관리에 참여하고자 하는 사람들에게 장부 전체를 복사해서 전달해줘요. 이 장부들을 다운받고 관리에 동참하는 컴퓨터들은 '채굴기'라고 불리게 돼요. 왜인지는 곧 설명할게요. 이 장부들은 블록 단위로 되어있어요. 거래가 발생할때마다, 그 내역들은 전세계의 모든 관리 참여자들, '채굴기'들에 전달이 돼요. 이 내역들이 약 10분에 한 번씩 '블록'으로 묶여서 장부에 추가가 되는거죠. 이러다 보면 채굴기들마다 다른 장부를 갖게 될 수가 있겠죠. 오류가 있거나, 느려서 뒤쳐졌거나 아니면 누가 악의적으로 조작을 했을수도요. 그러면 그 중에 가장 긴 장부가 ('가장 긴'이 핵심이에요) 진짜로 인정을 받고 채택돼서 나머지 채굴기들에 전달이 돼요. 누락된 게 없으니까 블록이 제일 많을거란거죠. 해커: 기레에? 아새기들 머리 많이 썼구나야. 기칸데. 우리 사이버 전사레 가짜 장부를 제일 길게 만들어 내놓으믄 어띠할거이네? 그거이 딘짜배기로 인덩받아버리디 않가서? 그게 불가능에 가까운 이유를 설명할게요. 새 블록이 만들어지면 이전 블록에 이렇게 레고처럼 끼워진다고 쳐요. 그런데 이 블록은 구멍이 이렇게 생겼어요. (매우 난해한 모양) 이 모양을 찾아 만들어야 끼워넣을 수가 있겠죠. 이 모양은, 이전 블록들의 전체 거래 내역, 플러스, 새 블록의 거래 내역들을 다 계산해야 찾아낼 수가 있어요. 게다가, '철수가 영희에게 10,000원을 줬다'를 '10,001을 줬다'로만 고쳐도 완전히 예측 불가능하게 달라져요. 여기에 해시란 개념이 쓰이는데 이건 다른 화에서 다룰게요. 여튼, 모든 거래 내역들을 특정 공식으로 계산해서 이 문제를 풀어야 새 블록을 연결해서 내놓을 수 있다는 얘기죠. 블록 중간에 거래 하나만 살짝 조작해도 그 이후의 블록들은 문제를 전부 다시 풀어야 연결할 수 있는거에요. 중요한 건, 이 문제가 거어어어업나 어려워요. 어느 정도냐면 전세계의 모든 채굴기들이 서로 경쟁도 하고 협력도 하면서 10분동안 낑낑 풀어야 풀릴 정도로 매번 난이도가 조절이 돼요. 그래서 지금 이 시간에도 자 블록 하나가 생성이 됐어요. 그럼 지구 곳곳의 채굴용 컴퓨터들이 다음 블록의 문제 정답을 찾기 위해 미친듯이 계산을 해대고 있는거에요. 가장 먼저 정답을 맞춰서 다음 블록을 성사시키는 컴퓨터에게는 일정량의 보상이 주어지거든요. 코인을 받는거죠. 그리고 또 다음 블록의 정답을 찾아 준비 땅! 그래서 코인을 '채굴한다'고 표현하는거고 그래서 약 10분에 한 번씩 블록이 만들어지는거에요. 알-겠나요? '모르겠는데요. 왜 그렇게 돌아가는데요.' 해커가 돈을 훔치려 한다고 생각해봐요. 천원 넣어둔 지갑에서 천만원을 꺼낼 순 없으니까 이전 장부를 조작해야겠죠. 그리고 세계에서 가장 긴 장부를 이어 만들어서 그게 채택되게 만들어야 할 거에요. 그런데 아까 말했듯이 비트코인 생성원리 블록을 하나하나 연결하는 건 더구나 혼자로서는, 엄청나게 오래 걸리는 일이고 지금 이 순간에도 보상에 눈이 돌아간 전세계의 컴퓨팅파워 쟁쟁한 채굴기들이 앞다퉈서 문제를 풀면서 블록을 이어나가고 있거든요. 얘네를 다 추월해서 제일 긴 블록을 계산해내야 조작을 성사시킬 수 있다는거죠. 해커: 히야. 이거레 내가 끼어들 틈이 없겠구나야 수퍼콤퓨타 몇 대 동원해도 역부됵이갔어 그거에요. 보상을 목적으로 채굴에 참여하는, 자발적 참가자들에 의해 저절로 보안까지 이뤄지게 되는거죠. 진짜 Git똥차지 않나요?

비트코인(bitcoin)은 블록체인 기술을 기반으로 만들어진 온라인 암호화폐이다. 비트코인의 화폐 단위는 BTC로 표시한다. 2008년 10월 사토시 나카모토라는 가명을 쓰는 프로그래머가 개발하여, 2009년 1월 프로그램 소스를 배포했다. 중앙은행이 없이 전 세계적 범위에서 P2P 방식으로 개인들 간에 자유롭게 송금 등의 금융거래를 할 수 있게 설계되어 있다. 거래장부는 블록체인 기술을 바탕으로 전 세계적인 범위에서 여러 사용자들의 서버에 분산하여 저장하기 때문에 해킹이 사실상 불가능하다. SHA-256 기반의 암호 해시 함수를 사용한다.

2009년 비트코인의 소스 코드가 공개되었고, 이더리움, 이더리움 클래식, 리플, 라이트코인, 에이코인, 대시, 모네로, 제트캐시, 퀀텀 등 다양한 알트코인들이 생겨났다. 비트코인은 여러 알트코인들 사이에서 일종의 기축통화 역할을 하고 있다.


개요

우분투에서 비트코인 클라이언트를 실행한 화면

비트코인은 2009년 사토시 나카모토가 만든 가상화폐로, 통화를 발행하고 관리하는 중앙 장치가 존재하지 않는 구조를 가지고 있다. 대신, 비트코인의 거래는 P2P 비트코인 생성원리 기반 분산 데이터베이스에 의해 이루어지며, 공개 키 암호 방식 기반으로 거래를 수행한다. 비트코인은 공개성을 가지고 있다. 비트코인은 지갑 파일의 형태로 저장되며, 이 지갑에는 각각의 고유 주소가 부여되며, 그 주소를 기반으로 비트코인의 거래가 이루어진다. 비트코인은 1998년 웨이따이가 사이버펑크 메일링 리스트에 올린 암호통화(cryptocurrency)란 구상을 최초로 구현한 것 중의 하나이다.

비트코인은 공개 키 암호 방식을 이용해 공개된 계정간에 거래를 한다. 모든 거래는 비공개적이나 거래의 기록은 남으며, 분산 데이터베이스에 저장된다. 분산된 시간서버로 일련의 작업증명(proof-of-work)을 하여 중복지출(double-spending)을 방지한다. 거래 기록은 모두 데이터베이스에 저장되어야 한다. 저장소 크기를 줄이기 위해 머클 트리(Merkle tree)가 사용된다.


기술

윈도 7에서 실행 중인 비트코인 소프트웨어

비트코인은 웨이따이의 비-머니(b-money) 제안과 닉 재보(Nick Szabo)의 비트골드(Bitgold) 제안을 P2P로 구현한 것이다. 체계의 원리는 사토시 나카모토의 2008년 비트코인 백서에 나와 있다.

주소

비트코인 네트워크에 참여하는 사람은 모두 임의의 암호화 키쌍을 담고 있는 지갑을 갖게 된다. 공개키는 비트코인 주소와 마찬가지인데 모든 지불의 발신자와 수신자 종단점으로 작동한다. 공개키의 짝이 되는 비밀키는 소유자만이 지불할 수 있도록 허가하는데 사용된다. 비트코인 주소에는 소유자에 대한 정보가 포함되지 않아서 익명성을 갖고 있다.주소는 사람이 읽을 수 있게 표기될 경우 33글자 정도 된다. 비트코인 사용자는 여러 주소를 보유할 수 있고 새로운 주소를 제한 없이 생성할 수 있다. 어떤 네트워크 노드와도 접촉할 필요 없이 새로운 공개키와 암호키쌍을 간단히 생성하면 새로운 주소를 즉시 만들 수 있기 때문이다. 쉽게 주소를 무한대로 생성해 바꿔 사용한다면 익명성이 보장될 수 있다.


거래

비트코인에는 현재 소유자의 공개키(주소)가 포함되어 있다. 사용자 갑이 사용자 을에게 무언가를 전송할 경우를 보자. 갑은 을의 공개키(주소)를 비트코인에 추가하고 갑이 소유한 개인키로 서명한다.그 다음 갑은 이 비트코인을 적절한 메시지의 거래 내역으로 P2P 네트워크에 방송한다. 나머지 네트워크 노드들은 암호화된 서명과 거래량을 허가하기 전에 입증한다.


블록체인

기본 체인(검은색)은 시작 블록(녹색)부터 현재 블록까지 가장 긴 나열로 이루어진다. 고아 블록은(회색) 기본 체인 바깥에 존재한다.
다른 노드로 방송(broad cast)된 거래 내역들은 어떤 것이라도 즉시 공식적이지 않다. 블록 체인(block chain)이라고 불리는 거래내역이 있는데, 이것은 알려진 모든 거래 내역의 목록을 수집해 보관하는 것이다. 블록 체인에서 6회 이상 인정되어야 공식적인 거래가 된다. 각각의 생성용 노드들은 인정되지 않은 거래 내역을 전해 듣고 후보 블록에 수집한다. 후보 블록은 다른 것과 함께 있는 파일이고 이미 알려져 있는 바로 이전의 유효블록(valid-block)의 암호화 해시를 포함하고 있다. 생성용 노드들은 난이도에 의해 정해진 목표값 이하의 암호화 해시를 생성하기 위해 시행 착오를 반복한다. 노드가 그 해답을 찾으면, 노드는 네트워크의 나머지 노드에게 알린다. 새로 해결된 블록(solved-block)을 받은 노드들은 그것을 허가하기 전에 인증하고 체인에 추가한다.

결국, 블록체인은 생성자의 주소부터 현재 소유자의 주소까지 모든 암호화 기록을 갖게 된다. 그래서 사용자가 이미 사용한 돈을 재사용하려고 하면, 네트워크가 거래를 거부할 수 있는 것이다.


비트코인 생성

비트코인 네트워크는 “코인 생성” 옵션을 선택한 소프트웨어를 구동하는 누군가, 구체적으로는 블록을 생성해내는데 성공한 누군가에게 한 묶음의 새로운 비트코인을 시간당 6번 정도씩 생성해 배분할 수 있도록 되어 있다. 그 소프트웨어나 같은 역할을 하는 사용자가 직접 만든 특수한 프로그램을 구동하는 사람은 누구나 비트코인 묶음을 받을 가능성이 있다. 비트코인을 생성하는 것은 금광 채굴에 빗대어 “채굴”이라고 불리기도 한다. 사용자가 코인 묶음을 받을 수 있는 확률은 정해진 목표값 이하의 해시를 만들어낼 수 있는 확률과 같으며, 비트코인이 묶음당 생성되는 양은 50 BTC를 넘지 않는다. 그리고 변동분은 21만 코인이 될 때 마다 1/2으로 줄어들게 프로그램되어, 전부 2,100만을 넘지 않게 된다. 이 지불금이 줄어들면, 사용자들은 블록을 생성하는 노드를 구동하는 것 보다는 거래 수수료를 벌도록 유도된다.

네트워크의 생성용 노드들은 전부 그들의 후보 블록을 만들기 위한 암호화 문제를 찾아내기 위해 경쟁한다. 이 문제를 풀려면 반복적인 시행착오가 필요하다. 노드가 정답을 찾으면 네트워크의 나머지 노드에게 그것을 알리고 새로운 비트코인 묶음을 요구한다. 새로 해결된 블록(solved-block)을 받은 노드들은 그것을 허가하기 전에 인증하고 체인에 추가한다. 노드에는 표준 클라이언트를 사용하거나 GPU 가속을 이용하는 다른 소프트웨어가 사용될 수 있다.사용자들은 집단으로 비트코인을 생성할 수도 있다.


거래 수수료

노드는 자신이 생성하는 블록에 다른 이들의 거래내역을 포함할 의무가 없기 때문에, 비트코인 송신자는 거래 수수료를 자발적으로 지불함으로써 거래 속도를 높이고 사용자들이 노드를 운영하려는 유인을 제공한다. 특히 비트코인을 생성하기가 어려워질수록, 시간이 감에 따라 블록 분량마다의 보상이 줄어든다. 노드들이 받는 보상은 후보 블록에 포함된 모든 거래 내역과 관련된 거래 수수료이다.


총발행량

2009년 만들어진 비트코인은 총발행량 2,100만 비트코인이 한계이다. 그 이상은 발행될 수 없다. 2017년 6월 기준으로 대략 1,650만 비트코인이 발행되었다. 전문가들은 비트코인이 전부 발행되는 시점을 2150년 즈음으로 예상하고 있다. (출처: 블록 체인 혁명(돈 탭스콧의 책)) 그러나 다른 유사한 암호통화가 비트코인을 시작으로 해서 다수 등장해 있기 때문에, 라이트코인 등 대체 암호통화를 사용하거나, 아니면 더 작은 단위로 쪼개 쓰면 된다. 비트코인은 소수점 8자리까지 나눌 수 있게 설계됐다. 비트코인의 가장 작은 단위는 창안자인 사토시 나카모토를 기념하기 위해 ‘사토시’라는 단위로 불린다.

하도 온 세상에 가상화폐, 비트코인, 무슨코인 하길래
위키를 검색해서 올려 봅니다.
이런거 거래소를 만들어서 대박난 친구이야기도 들었거든요~~
뭐든, 뜨거운 가슴과 차가운 머리가 필요하군요.
2018년에는 모두를 대박 나시길~~

분산화된 합의

이미 설명해 드린 것처럼, 비트코인의 분산화된 합의는 네트워크상의 노드들 사이에서 독립적으로 일어나는 아래의 프로세스에 따라 이루어집니다. 첫 번째, 모든 풀 노드가 각 거래에 대해 독립적으로 검증을 실시합니다. 두 번째, 작업 증명 알고리즘을 이용하여, 마이너들은 검증된 거래들을 새로운 블록에 추가합니다. 세 번째, 모든 노드들이 새 블록을 검증한 후 블록체인에 연결합니다. 네 번째, 모든 노드가 작업증명을 통해 연결한 체인들 중 가장 긴 체인을 선택합니다.

이 네 가지 프로세스들에 대해 살펴본 후, 네트워크 전체의 합의를 얻어내기 위해 네 가지 프로세스가 어떻게 상호작용하는지 알아보겠습니다. 새롭게 생성된 거래는 비트코인 네트워크 내에 있는 이웃 노드들에게 전송된 후, 네트워크 전체로 전파됩니다. 이웃 노드들에게 거래를 전달하기 전에, 모든 비트코인 노드들은 전달받은 거래를 우선적으로 검사해야 합니다. 유효한 거래들은 검증 과정을 통해 네트워크상으로 전파되지만, 유효하지 않은 거래들은 첫 노드에서 폐기됩니다.

거래의 검증

다음은 거래를 검증하기 위해 확인해야 할 조건 중 일부를 서술한 것입니다. 첫 번째, 트랜잭션의 구문과 데이터 구조가 정확해야 합니다. 두 번째, 코인 베이스 거래는 전송할 수 없습니다. 새로운 블록이 생성될 때 보상으로 제공되는 코인 베이스의 경우, 일반적인 거래처럼 다른 노드에게 전송할 수 없습니다. 세 번째, 각각의 입력값에 대해, 참조 출력값이 풀 내의 어떠한 거래 내부에 이미 존재한다면 해당 거래는 거부되어야 합니다.

네 번째, 짝을 이루는 거래가 풀에 존재하지 않는 경우 고아 거래 풀에 추가됩니다. 다섯 번째, 각각의 입력값에 대해 참조 출력값은 존재해야 하며, 해당 UTXO가 이미 소비된 상태가 아니어야 합니다. 여섯 번째, 입력값 금액이 출력값 총액보다 작은 경우 해당 거래를 거절해야 비트코인 생성원리 합니다. 입력값이 출력값보다 작을 수 없습니다.

일곱 번째, 새로운 블록에 포함되기에 거래 수수료가 너무 작은 경우, 해당 거래를 거절할 수 있습니다. 자세한 조건들은 비트코인 위키에 (https://en.bitcoin.it/wiki/Protocol_rules) 설명되어 있으니 참고하시기 바랍니다.

거래를 블록에 추가

그렇다면, 네트워크상에서 생성된 거래들이 블록에 추가되는 과정은 어떻게 이루어질까요? 비트코인 노드는 검증된 비트코인 생성원리 거래들을 메모리 풀 또는 거래 풀에 추가합니다. 이 거래 풀은 미승인 거래들이 블록에 포함되기 전까지 대기하는 장소입니다.

블록체인 : 비트코인 마이닝 알고리즘 원리, 이해 : 네트워크 분기 합의 알고리즘 원리, 이해 1

간단히 예시를 들어 거래가 블록에 추가되는 과정을 설명 드리겠습니다. 앨리스라는 사람이 비트코인을 이용해 커피 한 잔을 사려고 합니다. 앨리스가 커피를 구매할 때쯤, 비트코인 네트워크상에 277314번까지의 블록이 생성되어 있는 상태입니다.

이때, 채굴 노드는 다른 노드들처럼 거래를 수집하고 검증하며, 다른 노드들에게 전파하려 합니다. 노드가 채굴하는 동안 비트코인 네트워크를 통해 277315번째 블록을 전달받습니다. 이렇게 새로운 블록이 도착했다는 것은 277315번 블록에 대한 경쟁이 끝나고, 다음 번 블록, 277316번 블록을 생성하기 위한 경쟁이 시작된다는 것을 의미합니다.

블록체인 : 비트코인 마이닝 알고리즘 원리, 이해 : 네트워크 분기 합의 알고리즘 원리, 이해 2

이전 10분 동안 노드는 277315번 블록을 위한 문제를 푸는 동시에, 다음 번 블록에 대비하여 거래들을 수집하고 있었습니다. 따라서 메모리 풀에는 수백 개의 거래가 있다고 가정합니다. 277315번 블록이 도착해서 검증되자마자, 노드는 메모리 풀 내에 있는 거래들 중 277315번 블록에 포함된 거래들을 모두 삭제합니다.

이후 남아있는 거래들은 모두 미승인 상태이며, 새로운 블록에 기록되기 위해 대기 중입니다. 따라서 노드는 즉시 비어 있는 블록을 새로 만들며, 이 블록이 277316번째 블록이 될 수 있는 후보가 됩니다. 이 비트코인 생성원리 블록은 아직 증명되지 않아, 유효한 블록이 아니기 때문에 후보 블록이라고 칭하며, 뒤에 설명할 작업증명 알고리즘에 대한 솔루션을 찾은 경우에만 유효화됩니다.

따라서 앨리스가 커피를 구입한 것에 대한 거래가 포함된 후보 블록이, 채굴 노드에 의해 채굴되면 비로소 277316번째 블록에 앨리스의 거래가 추가됩니다.

비트코인 마이닝 원리

이번 모듈에서는 지난 시간에 간단하게 설명해 드렸던 비트코인 마이닝의 원리에 대해 자세히 설명 드리겠습니다. 비트코인이 합의 알고리즘으로 채택하고 있는 방식은 Proof of work 방식이라고 말씀드렸습니다.

블록체인 : 비트코인 마이닝 알고리즘 원리, 이해 : 네트워크 분기 합의 알고리즘 원리, 이해 3

여기서 work는 일련의 수학 문제를 푸는 것을 의미합니다. 다시 말해, 가장 빠르고 많이 수학 문제를 푸는 노드가 블록을 생성할 수 있는 권한을 더 많이 갖게 되는 것입니다. 그렇다면, 채굴자들이 해답을 찾아야 하는 수학 문제란 무엇일까요? 새로운 블록을 블록체인에 추가하기 위해서는 블록 헤더의 해시를 계산해야 합니다.

이 블록 해시값이 블록 내에서 설정한 숫자, 즉 난이도보다 작다면 문제의 해답을 찾았다고 할 수 있습니다. 해시값은 원본 데이터에 따라 결과값이 달라지게 되는데요, 블록 헤더의 필드들 중 nonce를 제외한 나머지 필드는 그 값이 고정되어 있습니다. 따라서 PoW 알고리즘에서는, 특정 범위에 포함되는 출력값을 얻기 위해, 적절한 nonce 값을 찾는 것이 목표입니다.

즉, nonce 값은 이 nonce 값을 입력값 중 하나로 취하여 계산되는 블록 해시값이 특정 숫자보다 작아지게 하는 값을 말합니다. 해시 함수의 특성에 따라 역방향 계산이 어렵기 때문에 특정 결과에 도달할 때까지 nonce 값을 무작위로 바꿔가며 값을 찾아야 합니다. 현재, 네트워크상에 314번까지 블록이 생성된 상태에서, 여러 채굴 노드가 마이닝을 위해 수학 연산을 푼다고 합시다.

반복 연산을 통해, 315번째 블록의 헤더가 될 필드들의 해시값이 특정 범위에 속하게 되는 nonce 값을 찾는다면 새로운 315번째 블록을 생성할 수 있게 되는 것입니다. 블록 헤더에 있는 정보 중 유일하게 고정되어 있지 않고 변경될 수 있는 값이 nonce 값입니다. 때문에 이 nonce 값을 1씩 증가시키면서 반복적으로 해시값을 계산합니다.

블록체인 : 비트코인 마이닝 알고리즘 원리, 이해 : 네트워크 분기 합의 알고리즘 원리, 이해 4

이 그림은 블록 헤더 내에 명시된 블록 난이도 값(: 000000b58…)보다 작은 nonce 값들을 찾는 과정을 보여줍니다. Nonce 값이 0일 때와 1, 2일 때는 해시값이 미리 정해진 난이도 값보다 크기 때문에 작업 증명에 실패했음을 알 수 있습니다. 이렇게 비트코인 생성원리 연산을 반복하다가, nonce 값이 72,198,453이 되면 비로소 명시된 값보다 작은 결과를 얻어 작업을 증명하게 됩니다.

이러한 연산은 어렵고 복잡한 연산은 아니지만, 특정 nonce 값을 찾기 위해 기하학적인 횟수의 연산을 실행해야 합니다. 이는 굉장히 많은 에너지를 필요로 하는 반복 작업이기 때문에, 이 값을 빠르게 찾기 위한 높은 해시 파워가 필요합니다.

블록체인 : 비트코인 마이닝 알고리즘 원리, 이해 : 네트워크 분기 합의 알고리즘 원리, 이해 5

그렇다면 결과값의 기준이 되는 이 난이도 값은 어떻게 결정되는 걸까요? 이 난이도는 블록 헤더 내의 ‘난이도 비트’ 정보에 따라 결정됩니다. 해당 필드는 얼마나 많은 리딩 비트가 0이어야 하는지 나타내는 단위로, 목표값의 0의 개수가 많을수록 난이도가 더 어려워집니다.

리딩 0의 숫자를 1비트씩 증가시킬 때마다, 가능한 검색 공간의 크기가 절반으로 줄어들기 때문입니다. 이는, 한정된 범위를 만족하는 특정 값을 도출해내는 것이 더 어려워짐을 의미합니다. 0의 개수가 많아질수록 허용 가능한 범위가 더 작아집니다. 따라서 1비트씩 난이도가 상승할 때마다, 솔루션을 찾는 데 걸리는 시간이 기하급수적으로 증가합니다.

그렇다면 보통 이 난이도는 어떻게, 누가 조정할까요? 비트코인 네트워크상에서 블록은 10분에 하나씩 블록이 생성됩니다. 이 생성 주기를 바탕으로 통화 발행 빈도와 거래 정상 속도가 결정됩니다. 블록의 생성 시간을 10분으로 유지하기 위해서, 채굴의 난이도는 컴퓨터 능력의 증가 속도와 채굴에 참여하는 컴퓨터의 수에 따라 조정하게 됩니다.

난이도 재설정은 풀 노드 전부에서 독립적으로 실행합니다. 2,016 개의 블록이 네트워크상에 추가될 때마다 노드들은 난이도 목표값을 재설정합니다. 난이도 재설정 동작은 다음과 같은 방정식으로 요약할 수 있습니다. 2,016개의 블록이 생성되는데 소요되는 시간이, 평균 시간인 20,160분보다 오래 걸린다면, 채굴 난이도를 낮추고, 적게 걸린다면 채굴 난이도룰 높입니다.

이러한 난이도 조정에 따라 블록이 생성되는 주기를 10분으로 유지합니다. 이 난이도는 노드 별로 다른 값을 가지는 것이 아니라, 블록체인 전체에 걸쳐 일률적으로 적용되는 수치입니다. 후보 블록을 구성하기 위해서 각 거래에 우선순위를 부여합니다.

블록체인 : 비트코인 마이닝 알고리즘 원리, 이해 : 네트워크 분기 합의 알고리즘 원리, 이해 6

가장 높은 우선순위를 가지는 거래를 우선적으로 후보 블록에 추가함으로써 메모리 풀에서 거래를 선택합니다. 거래의 우선순위는 소비될 UTXO의 나이를 근거로 정해집니다. UTXO의 나이는 블록체인에 기록된 이후 지난 시간과 같습니다. 해당 UTXO가 블록체인상에 얼마나 깊이 파묻혀 있는지를 나타냅니다.

나이가 많고 큰 입력값을 가진 UTXO가 나이가 어리고 작은 입력값을 가진 UTXO에 비해 높은 우선순위를 가집니다. 트랜잭션의 우선순위는 입력값의 가치와 나이의 총합을 거래의 크기로 나누어 계산합니다. 블록 내부의 첫 50KB는 우선순위가 높은 거래들에게 할당되어 있습니다.

거래 수수료에 상관없이 우선순위에 의해서만 거래를 선택하기 때문에, 수수료 없이도 처리될 수 있습니다. 블록의 최대 크기 이내의 나머지 공간을, 최저 수수료 이상을 포함하고 있는 거래들로 채웁니다. 이때는 최고 수수료를 가진 거래부터 우선적으로 선택합니다.

메모리 풀에 남겨진 거래들은 다음 블록에 포함되기 위해 메모리 풀에 머물러 있습니다. 메모리 풀에 머물러 있는 동안 UTXO의 나이가 증가하게 되고, 그에 따라 우선순위가 점점 증가합니다. 자신이 생성한 거래가 블록에 빨리 포함되길 원하는 경우, 수수료를 높임으로써 시간을 줄일 수 있습니다.

앞서, 채굴을 위해 투자한 노력의 대가로, 두 가지 형태의 보상이 제공된다고 말씀드렸습니다. 이 두 가지에는 코인베이스와 거래 수수료가 포함됩니다. 코인베이스란 블록을 생성하면서 새롭게 생성된 코인을 의미합니다. 블록에 첫 번째로 추가되는 거래는 특수 형태의 거래로, 생성 거래 혹은 코인베이스 거래라고 부릅니다.

코인베이스 거래는 채굴 작업에 대한 보상을 제공해주는 거래로, 새로 생성된 코인베이스 보상금과 블록에 포함된 모든 거래에서 얻은 거래 수수료의 합을 보상으로 제공합니다. 코인 베이스 보상금은 네트워크의 반감 횟수에 따라 결정됩니다. 최초의 비트코인 코인베이스는 50비트코인이었습니다.

210,000개의 블록마다 반감기가 한 번 발생하기 때문에, 현재 블록의 높이를 반감기 간격으로 나눔으로써 반감 횟수를 결정할 수 있습니다. 반감 횟수만큼 보상금이 절반씩 감소합니다. 거래 사이에서 발생하는 수수료에 대해선 이미 설명해 드린 적이 있습니다. 간략히 정리해보면, 블록 내에 포함되어 있는 거래의 입출력 값을 각각 더한 후, 두 값을 빼 줌으로써 거래 수수료의 총액을 계산할 수 있습니다.

예시를 통해 블록 채굴에 대한 인센티브가 어떻게 책정되는지 알아보겠습니다. 그림은 277316 높이의 블록 생성 거래를 보여줍니다. 비트코인은 210,000개의 블록이 생성될 때마다 보상이 절반씩 줄어드는 시스템으로, 현재 높이에서 반감 횟수는 1입니다. 따라서 초기 50코인에서 절반 줄어든 25비트코인이 보상금으로 제공됩니다.

다시 말해, 현재 높이에서의 코인 베이스는 25비트코인이라는 것을 뜻합니다. 거래 수수료의 총액을 계산하기 위해서는 다음 식을 이용합니다. 트랜잭션 결과에 따라 수수료의 합이 0.09094928비트코인이라는 것을 알 수 있습니다.

새로운 블록 검증

아래 항목들은 채굴된 블록이 유효한지, 그렇지 않은지 검증하기 위한 기준들입니다. 해당 항목들을 충족하지 못하는 경우, 해당 거래는 거절됩니다. 해당 블록의 데이터 구조는 문법적으로 유효해야 합니다.

또한 PoW의 원리에 따라, 비트코인 생성원리 블록 헤더의 해시값은 사전에 정의된 목표 난이도보다 작아야 합니다. 해당 블록의 타임 스탬프는 향후 2시간 이내입니다. 해당 블록의 크기가 허용 가능한 한도 내에 있어야 합니다.

블록체인 연결

마지막으로, 블록 내에 포함되는 제일 첫 거래는 코인베이스 생성거래입니다. 비트코인 합의 메커니즘의 마지막 단계는 블록을 체인 안에 모아 가장 많은 작업 증명을 보유하고 있는 체인을 선택하는 것입니다. 노드가 새로운 블록을 검증하고 나면, 해당 블록을 기존의 체인에 연결함으로써 체인을 연장하려고 합니다.

블록체인에는 메인 블록체인에서 나와 브랜치를 형성하는 2차 체인이 존재합니다. 누적 난이도가 가장 큰 값을 가진 블록들로 구성된 체인이면 어떠한 것이라도 메인 체인이 될 수 있습니다. 대부분의 경우, 가장 많은 블록으로 연결된 체인이 메인 체인이 됩니다. 이때, 블록체인 네트워크상에서 동시에 둘 이상의 새로운 블록이 생성되면, 블록체인의 분기(fork)가 발생합니다.

블록체인 : 비트코인 마이닝 알고리즘 원리, 이해 : 네트워크 분기 합의 알고리즘 원리, 이해 7

이 그림과 같이, 네트워크상에 2개의 블록이 동시에 생성되었다고 가정해봅시다. 네트워크상에 같은 높이로 존재하는 두 블록을 각각 초록색과 주황색으로 표시하였습니다. 이 블록들은 가까운 이웃 노드들에게 전파됩니다. 이 상태에서, 한 노드의 마이닝에 의해 초록색 블록을 부모 블록으로 가지는 새로운 검정색 블록이 생성되었다고 합시다.

이 검정색 블록이 네트워크상에서 전파되어 나가다가, 주황색 노드가 체인에 연결된 노드를 만납니다. 주황색 블록이 체인에 연결되어 있는 노드들의 경우, 새롭게 전달받은 검은색 블록의 부모 블록인 초록 블록이 존재하지 않습니다.

블록체인 : 비트코인 마이닝 알고리즘 원리, 이해 : 네트워크 분기 합의 알고리즘 원리, 이해 8

이러한 경우 블록체인의 분기가 발생합니다. 주황색 블록을 연결하고 있던 노드의 경우는 그림과 같이 분기된 체인을 형성하게 됩니다. 이때 주황색 체인이 2차 체인으로 변경되고, 더 긴 길이를 가지는 녹색-검은색 블록을 메인체인으로 연결하게 됩니다.

2차 체인으로 분류된 주황색 블록은 녹색-검정 블록이 메인체인으로 연결됨에 따라 고아 블록이 됩니다. 유효한 블록이긴 하지만, 부모 블록이 현 체인에서 발견되지 않는 블록을 고아 블록이라고 합니다. 기록은 있으나 메인체인에서 유지되지 않기 때문에 아무런 의미를 지닐 수 없는 블록입니다.

분기된 두 체인에서 동시에 블록이 생성되어 연결되는 경우가 있을 수 있습니다. 이 경우, 두 체인은 체인을 더 길게 연결하려는 경쟁을 하게 됩니다. 이 경쟁에서 승리해 더 긴 체인을 유지하는 체인이 메인체인이 되는 것입니다. 그렇다면, 주황색 블록에 포함된 거래들은 어떻게 되는 것일까요? 생성된 거래들은 네트워크 전체로 전파되기 때문에, 주황색 블록에 포함된 거래들은 이미 녹색 또는 검은색 블록에 포함되었거나 추후에 포함될 것입니다.

거래 자체가 유효하기만 한다면, 시간이 걸릴 뿐 반드시 블록에 포함되게 됩니다. 앞서 설명해 드렸던 것처럼, 블록들은 체인을 형성하는 과정에서 분기가 일어날 수 있습니다. 이 경우, 누적 난이도가 높거나 길이가 긴 블록을 가진 사이드 체인이 메인 체인으로 인정받게 됩니다. 분기가 일어나지 않도록 2,016개의 블록이 생성될 때마다 난이도를 조절하지만, 분기는 언제든 발생할 수 있습니다.

컨퍼메이션

컨퍼메이션은 특정 트랜잭션이 블록에 포함된 이후 몇 개의 블록이 뒤에 더 추가되었는지를 알려주는 지표입니다. 컨퍼메이션이 충분히 크다는 것은, 이 트랜잭션은 충분히 오랫동안 변동 없이 블록에 보관되어왔기 때문에, 취소될 가능성이 적다라는 것을 의미합니다.

1 컨퍼메이션은 해당 거래가 블록에 포함되어 블록체인에 연결되었음을 나타냅니다. 체인이 분기된 경우, 분기된 체인 중 하나의 체인이 확실히 메인 체인으로 선택되기까지의 기준을 6 컨퍼메이션으로 정하고 있습니다. 두 체인이 경쟁하게 된다 하더라도 새로운 블록이 6개가 추가로 생기기 전에 경쟁이 끝나게 됩니다.

따라서, 자신이 생성한 거래가 포함된 블록이 체인에 연결된 이후 6 컨퍼메이션을 가진다면, 해당 블록이 추후에 버려질 가능성이 없다는 것을 의미합니다. 이번 시간에서는 비트코인 마이닝 절차에 대해 자세히 설명해 드렸습니다. 트랜잭션을 검증하기 위한 조건과 비트코인이 채택하고 있는 합의 알고리즘인 PoW에 대해 설명 드렸습니다.

그리고 비트코인 채굴을 위한 노력의 대가로 얻는 보상에 대해 말씀드렸습니다. 채굴 과정을 거쳐 새롭게 생성된 블록은 각 노드에서 독립적으로 검증과정을 거친다는 것을 배웠고, 검증 과정을 거친 블록이 실제 블록체인 네트워크상에 어떻게 연결되는지 배웠습니다.

블록체인과 암호화폐 기술을 깊이 배우기에 앞서, 비 전공자들도 이해를 할 수 있는 수준으로 블록체인과 암화화폐에 대한 high-level 설명 및 응용 예시를 제공하고 실제 상황에 적용할 수 있다.

비트코인의 채굴원리

블로그 이미지

이번 글의 선수지식으로는 비트코인의 transaction과 block에 대한 개념을 알고 있어야 합니다.

비트코인이 어떻게 채굴되는지에 앞서 여러 기본 지식을 먼저 알아보겠습니다.

우선 비트코인이 한정된 수량(2100만개)이란 것은 모두가 알 것입니다. 그런데 많은 사람들이 잘못 알고 있는 사실이 하나 있습니다. 2100만개의 비트코인이 모두 채굴된 후에는 채굴로 얻는게 아무것도 없다는 것입니다. 이는 잘못된 사실입니다.

채굴에서 얻을 수 있는 것은 채굴로 인한 새로운 비트코인뿐만 아니라 블록내의 transaction fee들도 얻을 수 있습니다.
즉, 2100만개의 채굴이 끝나더라도 채굴자들은 블록내의 수수료로 이득을 취합니다.

비트코인의 경우 초창기에는 한 블록을 채굴할때마다 50개의 비트코인을 얻었는데 210,000개의 블록마다 (약 4년) 반감기가 존재하므로 시간이 많이 지날수록 채굴로 얻는 새로운 비트코인 보다는 채굴로 얻는 수수료가 더 높아질 것입니다.
* 반감기란 채굴로 얻는 새로운 비트코인의 개수가 절반으로 줄어드는 것을 뜻합니다.

채굴이란 transaction들을 모아서 새로운 블록을 만드는 것입니다. 그럼 우선 transaction들을 모아야겠죠? 이 transaction들을 모아놓는 곳을 memory pool 또는 transaction pool이라고 부릅니다. (이 글에서는 memory pool이라고 부르겠습니다.)

예를 들어 Alice라는 Full Node가 있다고 가정해보겠습니다. Alice는 여러 transaction들을 각 transaction이 유효한 transaction인지를 확인하는 여러 규칙과 비교해보고 맞으면 memory pool에 집어넣습니다.
그리고 블록생성을 위한 계산을 합니다. (이 계산은 아래에서 자세히 알아보겠습니다.) 이 계산을 다른 노드들보다 빨리 해낸다면 Alice는 memory pool에 있는 transaction들로 블록생성을 완료하고 나머지 노드들에게 자신이 블록생성을 했다고 알립니다.

여기서 Kane이라는 노드가 있다고 가정해봅시다. Kane역시 여러 transaction들을 memory pool에 담으며 블록생성을 위한 계산을 하고 있었는데 Alice가 먼저 계산을 끝내고 블록생성을 완료해서 새로운 블록을 받았다고 해봅시다. 그럼 Kane은 비트코인 생성원리 새로운 블록의 transaction들과 자신의 memory pool에 있는 transaction들을 비교하여 이미 새로운 블록에 들어있는 transaction들은 제거합니다.

위에서 채굴로써 얻는 수익은 새로운 비트코인뿐 아니라 transaction들의 수수료도 얻을 수 있다고 하였습니다. 그렇다면 채굴자들은 높은 수수료가 있는 transaction들을 위주로 memory pool을 구성할 가능성이 높습니다. 그래야 블록을 생성했을 때 자신이 얻는 수익이 더 높아질테니까요. 그러므로 비트코인 송금시에 적당한 수수료를 지불해야 나의 transaction이 빠른시간안에 반영될 것입니다.

이제 어떤 계산을 통해 채굴이 이루어지는지 알아보겠습니다.
비트코인의 블록헤더에는 Target과 Nonce가 들어있습니다.
Nonce는 아직 결정되지 않은 숫자입니다. (Target은 이미 결정되어 있습니다.)

채굴은 block header를 SHA-256 함수에 넣어서 나온 값이 Target과 같거나 낮으면 됩니다. Target은 4bytes이며 앞에 몇개의 자리수가 0으로 나타내어집니다. 예를 들면 0000F2423. 이런식입니다.

위의 예시처럼 Target이 0000F2423. 이라면, 채굴자는 block header SHA-256함수에 넣어서 나온값이
00000A32424F. 이런식이면 채굴에 성공하고 블록생성을 하게 됩니다.
왜냐하면 현재 SHA-256을 통해 나온 값은 앞자리 0이 5개이므로 앞자리 0이 4개인 Target보다 낮은 숫자이기 때문입니다.
(*Target값과 같아도 채굴에 성공합니다.)

그런데 block header에서 Nonce는 아직 결정되지 않은 숫자라고 했습니다. 즉, 채굴자는 Nonce 값을 조절하면서 Target보다 낮은 값을 찾을 수 있습니다. 예를 들어보겠습니다.

block header에서 Previous Block Hash, Version, Merkle Root 등의 정보가 있습니다. 이 정보들과 155라는 Nonce값을 SHA-256 함수에 집어넣으면 어떠한 값이 나오겠죠? 그런데 그 값이 Target보다 낮으면 채굴자는 이번에는 이 정보들과 2555라는 Nonce값을 SHA-256 함수에 넣어보는 겁니다. 이런식으로 Nonce값을 조절하면서 Target보다 낮은 값을 만들어내면 채굴에 성공하게 됩니다.

**하지만 Nonce값은 4 bytes입니다. 즉, 32비트이므로 unsigned int를 적용시 최대값은 약 42억정도 입니다. 여기서 이런 의문이 들 수 있습니다. 42억정도면 최근 기술로 봤을 때 금방 연산 가능할거같다고 말입니다. 이런 부분에 대해서는 채굴 심화편에서 다루겠습니다.

이번에는 난이도 조절에 대해 알아보겠습니다.

비트코인은 평균 10분마다 채굴이 되는 것을 목표로 난이도를 재설정하게 되는데 이 난이도는 2016개의 블록마다 재설정됩니다. 대략 2주의 기간인데 2주마다 블록생성시간을 확인해보고 평균값이 10분보다 빠르다면 난이도를 높이고 10분보다 느리다면 난이도를 낮추게 됩니다.

난이도를 높인다는 것은 Target값을 더 내리는 것입니다. 예를 들어 기존 난이도가 앞에 5개의 자리수가 0인 것보다 작은 값을 찾는것이였다면 6개의 자리수가 0인 것보다 작은 값을 찾게 만들면 난이도는 더 올라가게 됩니다.

예를 들어 1부터 1억까지 적혀있는 제비뽑기 종이가 있다고 가정하면 1000만보다 낮은 숫자를 뽑을 확률보다 1만보다 낮을 숫자를 뽑을 확률이 훨씬 낮기 때문입니다.

이렇게 어떤 노드가 채굴에 성공하면 자신이 채굴을 성공했다는 것을 주변 노드들에게 전파하고 주변 노드들은 유효한 채굴인지 검증을 하고 검증에 성공하면 그 블록을 연결시킵니다.

여기까지 비트코인의 채굴의 기본원리에 대해 알아보았습니다. 조금 더 자세히 알아보고 싶으신 분은 아래 링크를 참고하시길 바랍니다.
채굴심화:


0 개 댓글

답장을 남겨주세요