검색 상세

Fast Distributed Parallel Processing for Bitcoin Mining

Fast Distributed Parallel Processing for Bitcoin Mining

초록/요약

비트코인으로부터 시작된 블록체인은 이제 본격적인 발전의 시작을 하고 있다. 특히, 비트코인의 채굴의 합의 알고리즘인 작업증명은 병렬처리에 있어 다양한 암호화 알고리즘을 적용한 이더리움등 다른 알트코인에도 적용되어 사용되는 알고리즘이다. 이 알고리즘을 구현한 채굴 시장은 NVIDIA의 GPU 매출의 10%를 차지할 만큼 병렬처리 시장이 커지고 있다. 본 논문은 작업증명(Proof-of-Work) 알고리즘을 정리하고, 이를 구현하기 위한 대표적인 병렬처리 기법인 pthread, MPI, CUDA 등을 사용하여 비트코인에 대한 멀티코어 및 GPU기반 작업증명 분산 병렬 알고리즘을 제시하고, 이를 구현한 작업증명 분산 병렬처리 시스템과 비트코인의 작업증명 성능 측정한 결과를 제시한다. 멀티코어 기반의 작업증명에서는 코어의 개수에 비례하여 작업증명의 속도가 지속적으로 향상 되었고, 총 처리시간 측면에서는 GPU기반의 작업증명에 대비하여 부족한 부분이 있으나, CPU의 멀티코어는 매니 코어로 발전하고 있는 중이며, 이에 대한 병렬처리도 크게 발전할 것으로 보인다. 또한 매니 코어로서의 GPU는 작업증명 처리 성능이 획기적으로 향상되나 병렬로 연결된 GPU의 개수에 따라 비례적으로 향상되지 않고 실험결과 GPU 4개 이상에서는 처리 속도 측면에서 정체현상이 있다. 본 논문에서 구현한 분산 병렬시스템은 비트코인에 한정된 것이 아니며 다른 알트코인에 대한 작업증명이 가능하도록 설계되어 앞으로 블록체인의 작업증명에 대한 병렬처리 성능에 대한 연구를 할 수 있는 시스템으로 활용될 것으로 기대한다.

more

목차

목차
Abstract 1
목차 3
1장. 서론 10
1.1 연구배경 10
1.2 연구목적 12
2장. 관련연구 및 기술동향 13
2.1 비트코인 13
2.2 멀티코어 동향 17
2.3 GPU 19
2.4 CUDA 22
2.5 SHA-256 알고리즘 24
2.5.1 개요 25
2.5.2 메시지 패딩(Padding) 과 파싱(Parsing) 25
2.5.3 함수와 상수 26
2.5.4 블록 분해(Decomposition) 28
2.5.5 Hash 계산 29
3장. 작업증명 알고리즘 32
3.1 개요 32
3.2 블록 헤더(Block Header) 33
3.3 효율적인 속도증진 방안 36
3.4 목표 난이도(Target Difficulty) 37
3.5 솔루션 논스(Solution Nonce) 37
4장. 멀티코어 기반 병렬 작업증명 38
4.1 개요 39
4.2 병렬 알고리즘 40
4.2.1 블록 템플릿 41
4.2.2 SHA-256 해싱 42
4.2.3 목표 난이도 42
4.2.4 솔루션 논스(Solution Nonce) 43
4.3 분산 알고리즘 43
5장. GPU 기반 병렬 작업증명 44
5.1 개요 44
5.2 병렬 알고리즘 46
5.2.1 블록 템플릿 46
5.2.2 SHA-256 해싱 47
5.2.3 목표 난이도 47
5.2.4 솔루션 논스(Solution Nonce) 47
5.3 분산 알고리즘 48
제6장. 작업증명 분산 병렬처리 시스템 49
6.1 시스템 구조 49
6.2 Master Process 50
6.3 Mining controller 51
6.4 Task controller 52
6.5 GPU controller 52
6.6 PoW workers 52
제7장. 성능분석 53
7.1 멀티코어기반 작업증명 분산 병렬처리 53
7.1.1 실험 환경 54
7.1.2 실험 프로그램 54
7.1.3 실험 데이터 54
7.1.4 실험 방법 55
7.1.5 실험 결과 55
7.1.6 성능 분석 56
7.2 멀티 GPU 기반 작업증명 병렬처리 57
7.2.1 실험 환경 58
7.2.2 실험 프로그램 58
7.2.3 실험 데이터 59
7.2.4 실험 방법 59
7.2.5 Throughput에 따른 작업증명 실험 결과 59
7.2.6 GPU에 따른 병렬처리 작업증명 실험 결과 62
7.2.7 성능 분석 66
7.3 멀티 GPU 기반 작업증명 분산처리 68
7.3.1 실험 환경 68
7.3.2 실험 프로그램 69
7.3.4 실험 방법 69
7.3.5 실험 결과 70
7.3.6 추가 실험결과 71
7.3.7 성능 분석 73
제8장. 결론 74
Reference 76

more