상세 컨텐츠

본문 제목

채굴 시스템

Blockchain/BlockChain Theory

by Yongari 2023. 2. 1. 08:36

본문

 

CPU(Central Processing Unit) 채굴

CPU는 중앙처리장치라는 뜻으로 컴퓨터에서 대뇌역할을 하며 기억, 해석, 연산, 제어라는 4대 주요기능을 관할하는 장치다. 

자세한 내용은 위키를 참조하면 된다.

 

CPU - 나무위키

1970년대 초 단일 칩이라는 형태로 CPU가 발명된 이후 CPU의 기술은 아래와 같은 궤적을 따라 여러 방면으로 방산-발전하여 오늘날 다종다양한 산업체를 구성하게 되었으며 PC용 프로세서의 경우 20

namu.wiki

 

비트코인 초기에 오리지널 비트코인 클라이언트에서 사용할 수 있었던 첫번째 타입의 방식이다. 비트코인이 탄생하고 1년 정도 CPU 채굴이 사용되다가 채굴자가 많아져서 더 이상 이익이 되지 않아서 다른 채굴방법으로 대체되었다.

 


 

 

 

GPU (Graphics Processing Unit) 채굴

GPU는 말 그대로 컴퓨터 그래픽을 처리하는 장치로 그래픽 카드를 구성하는 가장 중요한 핵심요소다. 

자세한 내용은 위키백과를 참조하면 된다.

 

비트코인 네트워크의 난이도가 증가하면서 채굴자들은 GPU나 그래픽카드로 채굴하기 시작했다. GPU는 보통 OpenCL 언어를 사용해서 프로그램된 빠르고 병렬적인 계산을 제공한다. 그렇다면  OpenCL은 무엇인가?

 

OpenCL : Open Computing Language의 약자로 개발사는 사과사로 유명한 Apple이다.
(Apple은 역시 대단하다. ) 

C 언어를 기반으로 확장이 이루어져 C 언어에 익숙한 경우 직관적으로 작성할 수 있다. 

궁금해서 OpenCL예시를 찾아보니 다음과 같다.

kernel void
arrAdd(global const int *src1, global const int *src2, global int *dest)
{
  const uint index = get_global_id(0);
  dest[index]      = src1[index] + src2[index];
  return;
}

 

삼천포로 방향이 변했지만 채굴을 할 때 GPU는 CPU보다 성능면에서 우수하다. 왜냐하면 CPU는 명령어가 입력된 순서대로 데이터를 처리하는 순차적인(Sequential) 처리방식에 특화된 구조를 가졌고 GPU는 병렬적인(Parallel)처리 방식에 특화되어있어서 반복적이고 비슷한 대량의 연산을 수행하는 데에 있어서 속도가 빠르다. 그렇다고 GPU가 CPU보다 나은 것은 아니고 CPU는 어려운 문제를 푸는 소수정예 싱글코어이고 GPU는쉬운문제를 동시에 푸는데 특화된 멀티코어로 이해하면 된다. 이 말은 밑에 블로그에서 보고 차용했다. (단어 선택이 맞나??)

CPU와 GPU의 차이에 대해 잘 정리된 게시물 같다. 

https://velog.io/@euisuk-chung/CPU%EC%99%80-GPU 

 

CPU와 GPU

CPU와 GPU의 차이에 대해 알아보도록 하겠습니다 :D

velog.io

 

이런 이유로 GPU가 블록체인에서 해시값을 찾을 때 더 성능이 좋고 사용자들은 Overclocking 과 같은 기술을 써서 GPU 파워를 최대치로 사용했다. 이런 이유때문에 한 때 GPU 가격이 비싸졌던 적이 있다. 

 

 

오버클럭(Overclock, Over-Clock)은 사용자가 임의로 컴퓨터 부품의 기본 연산 속도인 클럭을 끌어올리는 것을 말한다

 

 

그러나 이런 GPU 채굴도 특별한 Motherboards나 추가적인 하드웨어가 필요하다던지, Overheating되는 제약이 존재했다. 그래서 채굴자들 다른 채굴방법들을 찾아낸다.

 

 


 

 

FPGA(Field Programmable Gate Arrays) 채굴

 

GPU 채굴에 만족하지 않은 채굴자들은 FPGAs를 사용해 채굴하는 방법을 찾아낸다. FPGA는 기본적으로 특정 연산을 수행하도록 프로그래밍 가능한 집적회로다. 보통 FPGAs는 VerilogVHDL과 같은 Hardware Description Languages(HDLs)에 특화되어있다.  FPGA는 GPU와 비교해 더욱 뛰어난 성능을 제공합니다. 그러나 접근성과 프로그래밍 난이도, FPGA를 설정하고 프로그래밍하기 위해 특별한 지식을 요구하는 부분때문에 널리 이용되지는 못했습니다. 그리고 이후 ASICs의 도입으로 FPGA기반 시스템도 빠르게 사라졌습니다. 

 

TMI(To much Infomation)
(X6500 Miner, Ztex, lcarus 같은 채굴하드웨어는 FPGA채굴로 이익이 날 때 개발됨)
(Xilinx, Altera같은 FPGA 제조사들은 FPGA하드웨어와 채굴 알고리즘을 프로그래밍하는 데 사용될 수 있는 개발 보드를 생산함)

 

FPGA에 대한 자세한 내용은 위키를 참고하자.

 


 

ASICs 를 이용한 채굴

ASICs는 SHA256 연산을 수행하기 위해 디자인됐다.  구글링하는데 계속 신발이 나와서 당황했다.

위키를 참고하면 ASIC(Application-Specific Integrated Circuit) 또는 ASICs(Application-Specific Integrated Circuit Chips)는 특정 목적을 위해 설계된 집적 회로(Integrated Circuitm IC)다. 한국말로는 보통 주문형 반도체라고 부른다. 

 

이 특별한 칩은  다양한 제조사에서 판매되고 매우 높은 해시율을 제공한다. 어떤 경우에는 이익을 내며 잘 수행되지만 채굴 난이도가 올라가면 싱글유닛 ASICs는 더 이상 이익이 나지 않는다. 현재 이익이 발생하는 채굴플랫폼은 위의 위키를 읽어보면 알겠지만 개인이 진입할 수는 없는 형태로 발전하고 있다. 오늘날 전문 채굴센터는 수천개의 병렬 ASIC유닛을 사용자에게 채굴계약 형태로 재공해주고 수익을 냅니다.  

 


SHA-256은 Secure Hash Algorithm 알고리즘의 한 종류로 256비트로 구성되며 64자리 문자열을 반환한다. SHA-256은 미국 국립표준기술연구소(NIST: National Institute of Standards and Technology)에 의해 공표된 표준 해시알고리즘인 SHA-2 계열중 하나고 블록체인에서 가장 많이 채택해서 사용하고 있다. 

 

 

go를 이용한 SHA256 해시 알고리즘 예시

go언어에서 문자열을 sha256 알고리즘을 적용해서 변환했다. 

문자열은 "hello yongari"다.

 

package main

import (
	"crypto/sha256"
	"encoding/hex"
	"fmt"
)

func main(){
	data := "hello yongari"
	hash := sha256.New()

	hash.Write([]byte(data))

	md := hash.Sum(nil)
	mdStr := hex.EncodeToString((md))

	fmt.Println(mdStr)

}


코드의 출력값은 다음과 같다.

go run etc/sha256.go 
e079cbaa3dbf1b6fdb0d8c443a88ae8b55d9c7f3c974b67e7c76250f8ada9cb8

 

포스팅을 하면서 느낀 점

블록체인에서 하드웨어의 중요성은 비트코인을 통해 대충 알고있었는데 이번 포스팅을 하면서 채굴의 역사에 대해 찾아보니 정말 비트코인 등 블록체인은 하드웨어 산업에도 큰 영향을 끼쳤다고 느꼈다. CPU, GPU 등 반도체와 하드웨어에 대해 좀 더 시야를 넓힐 수 있었고 시간 가는 줄 모르고 여러가지 자료들을 읽었다. 컴퓨터공학부터 C언어, 전자공학까지 궁금증은 많으나 아직 내가 모르는게 너무 많다는 것만 확실히 알고 넘어가게 됐다. 

 

 

 

'Blockchain > BlockChain Theory' 카테고리의 다른 글

거버넌스 블록체인 - Klaytn  (0) 2023.02.02
작업증명(PoW)  (0) 2023.02.02
채굴 풀(Mining Pool)  (0) 2023.02.01
간략히 알아보는 프루닝  (0) 2023.01.26
블룸필터 - Bloom Filter  (0) 2023.01.26

관련글 더보기