채굴(mining)은 어떻게 하는건가요?
우선, 각각의 노드는 수신한 최신 트랜잭션을 메모리 풀에 저장하는데, 이는 각 노드의 임시적인 메모리입니다. 그런 다음, 모든 노드는 메모리 풀에있는 트랜잭션을 파일(블록체인)로 쓰기 위해 채굴을 진행합니다.
노드는 메모리 풀에서 예비 블록으로 트랜잭션을 모은 다음, 해당 예비 블록을 블록체인에 추가하기 위해서 노드 컴퓨터의 프로세싱 파워(processing power)를 사용하여야 합니다.
그렇다면 이 프로세싱 파워는 어디에서 오는 것일까요? 블록을 블록체인에 추가하려면, 트랜잭션 블록을 해시 함수(Hash function) 라고 하는 것에 입력해야 합니다. 해시 함수는 어떤 데이터를 섞어버리고, 완전히 랜덤한 숫자를 뱉어내는 미니 프로그램입니다. 하지만 해시 함수의 결과는 고유합니다.
예를 들어 "bitcoin" 단어와 "ethereum" 단어를 SHA256 이라고 불리우는 해시 함수로 처리했을 때,
"bitcoin" → 6b88c087247aa2f07ee1c5956b8e1a9f4c7f892a70e324f1bb3d161e05ca107b
"ethereum" → b60d7bdd334cd3768d43f14a05c7fe7e886ba5bcb77e1064530052fed1a3f145
위와 같이 처리 결과가 나옵니다. 즉, 입력받는 값에 따라 랜덤한 결과를 주지만 함수를 실행할 때 마다 랜덤한 결과를 주지는 않습니다.
같은 글자를 같은 해시 함수로 처리한다면 결과는 계속 동일하고 유일한(unique) 결과를 줍니다.
당신의 블록을 성공적으로 블록체인에 추가하기 위해서는, 블록을 해쉬 함수에 넣어 나온 결과의 숫자(block hash)가 한 임의의 숫자(target)보다 작아야 합니다. (이 임의의 목표 숫자는 네트워크에 의해서 정해지는 숫자입니다)
당신이 결과로 받은 숫자(block hash)가 목표값(target)보다 작지 않다면, 블록 내부의 데이터를 약간 조정하여 해시 함수에 다시 넣을 수 있습니다. 이 과정에서 해시 함수를 통해 완전히 다른 숫자(block hash)를 받게 됩니다. 이번엔 목표값보다 작은 값이기를 바래야겠죠. 하지만 또 목표값보다 작지 않은 경우라면, 위와 같은 과정을 계속 시도해야합니다.
요약하자면, 채굴 프로세스는 노드의 프로세싱 파워를 사용하여 가능한 한 빨리 해시 함수를 수행하고 네트워크에서 목표값(target) 이하의 블록 해쉬를 얻는 첫번째 노드가 되고자 하는것입니다. 만약 성공했다면 블록을 블록체인에 추가하고, 네트워크의 나머지 노드들에게 추가한 블록을 공유해 줄 수 있습니다.
참고 : 블록을 채굴하는 것은 여전히 아무나 가능하지만, 가정용 컴퓨터에서 그렇게 하는 것은 더 이상 경쟁력이 없습니다. 요즘에는 현재 해시 계산을 가능한 한 빨리, 그리고 효율적으로 수행하도록 설계된 전문 하드웨어(채굴용 컴퓨터)가 있습니다. 즉, 채굴은 현재에는 거의 대부분 그런 전문 하드웨어를 사용하며 저렴한 전기를 사용하는 전문 채굴자들에 의해서 채굴되고 있습니다.
이렇게 프로세싱 파워를 사용하여 새로운 트랜잭션 블록을 블록체인에 추가하기 위한 인센티브로, 각 새로운 블록은 고정된 양의 비트코인을 채굴자에게 새로 발급합니다. (이렇게 새로 발급되는 비트코인은 이전에 존재하지 않았던 것이 생긴것이므로, 비트코인의 총 공급량이 늘어난 것입니다.)
새로운 비트코인의 이러한 보상은 블록 보상(block reward)라고 불리며, 그래서 이 과정을 "채굴(mining)"이라고 부릅니다.
비트코인은 어떻게 작동하는가? (3)편에서 계속...
'블록체인 > 비트코인' 카테고리의 다른 글
노드 (Nodes) (0) | 2023.04.07 |
---|---|
비트코인 네트워크 (Bitcoin Network) (0) | 2023.04.07 |
비트코인은 어떻게 작동하는가? (4) (0) | 2023.04.06 |
비트코인은 어떻게 작동하는가? (3) (0) | 2023.04.06 |
비트코인은 어떻게 작동하는가? (1) (0) | 2023.04.06 |