채굴? 해쉬? 무슨말인지 총정리
Miner, 채굴자가 하는 일은, 새로운 거래내역을 가지고 새로운 블록을 생성해내는 것입니다.
그럼 채굴 과정은 어떻게 진행되는 걸까요?
1. 채굴자는 거래가 발생하면 자신의 이체풀(transantion pool)에 내역들을 보관합니다
거래내역은 거래가 발생한지 얼마나 오래됐는지,
거래 수수료는 얼마인지 등의 기준으로 순서가 나열됩니다
2. 채굴자는 적당한 내역들을 묶어 블록을 형성하여 이를 기준으로 해싱을 진행합니다.
(*해싱은 정해진 암호를 풀어나가는 행위 같은것입니다 이따가 자세히 설명하겠습니다)
3. 해싱에 성공하면 블록을 발행합니다.
4. 블록을 P2P네트워크를 통해 다른 노드들에게 전파하여 검증을 받습니다.
5. 과반수의 노드들에게 ‘새로운 블록으로 알맞다’ 라는 검증을 받으면 새로운 블록이 기존의 블록체인에 추가되고
새로운 블록을 생성해 낸 댓가로 코인 보상을 받게됩니다.
해시함수란
어떤 문자나 숫자를 넣었을 때
일정 길이의 짬뽕문자로 바꿔줍니다
예를들어
"채굴자 개념을 알아보자" 라고 치면 화면과 같은 hash 가 생성되고
"채굴자 개념을 알아보자yo" 라고 치면
이전과 다른 hash 가 생성됩니다
이 원리는 특정알고리즘에 의해서 행해지므로 똑같은 입력을 넣으면 반드시 똑같은 값이 나오고,
마침표나 띄어쓰기만 달라도 결과값이 완전히 다르게 나옵니다.
즉 입력을 토대로 결과를 예측하는 것도 불가능하며 결과를 토대로 입력을 알아내는 것도 불가능합니다
오직 '똑같은 입력'엔 '똑같은 결과'가 나온다는
사실만을 알 수 있습니다.
다시 블록체인으로 돌아와
채굴의 성공 이라는 의미는 정해진 기준값보다 낮은 해쉬 값을 찾으면 성공하는것인데
그와중에 가장 복잡한 해쉬값을 가진 채굴자가 1등채굴자가 되고
보상을 받습니다.
쉽게 예를 들어 사랑의 빼빼로 게임을 연상 해봅시다.
빼빼로를 한입이라도 먹으면 우선
빼빼로 게임의 미션은 성공하는 것인데
1등을 하기 위해서는 다른 커플들 보다
더 짧게 빼빼로를 만들어야 1등을 합니다.
채굴 또한 정해진 기준값 보다 낮은 값을 찾으면
미션에 성공 하지만 다른 성공한 채굴자들 보다
더 복잡한 해쉬값을 만들어내야 1등 채굴자가 되고 보상을 받습니다.
블록에는 블록 헤드가 존재합니다. (블록의 머리)
블록헤더에서 모든 부분은 고정값이고
우리가 주목할 부분은 nonce입니다.
즉, 이중 채굴자가 변경할 수 있는건 nonce 뿐입니다.
Nonce라는 값에 채굴자들이 어떤 수를 대입하느냐에 따라 전체 블록헤더의 해시값이 다르게 나옵니다
즉 블록의 해시값이 정해진 기준값보다 낮은 결과를 찾고 그리고 남들보다
더 복잡한 해쉬값을 찾기위해 1부터 시작해 무작위로
nonce값을 바꿔가면서 대입하는 것...
그것이 바로 채굴자가 하는 작업입니다..
무작위의 Nonce값을 해시함수에 입력해 설정된 값보다 작은 숫자를 계산해 내는 것은
굉장히 많은 에너지와 연산력을 필요로 합니다.
이렇게 많은 에너지와 연산력을 이용해 채굴에 성공한 채굴자는 다른 노드들에게 그 결과를 공유하고
다른 노드들은 해당블록에 채굴에 성공한 채굴자가 찾았다는 nonce값을 대입하여
같은 결과가 나오는지를 검증하여
맞으면 그 블록을 블록체인 (거래장부)에 추가하는 것입니다.
이렇듯
채굴자는 채굴용 하드웨어를 갖추고 채굴 소프트웨어를 실행할 수 있으면 누구나 채굴 가능하지만,
블록 난이도에따라
하드웨어의 스펙과 에너지가 굉장히 많이 필요합니다 ~~~~
영상 보러가기
https://youtu.be/3lW-PxxziRw