블록체인 및 하드웨어 마이너

배경과 목적



Haskell Advent Calendar 2018 4일째 기사입니다.
좀 더 하스켈의 화제를 접하고 싶었기 때문에 힘이 없어서 죄송합니다.

화제의 블록체인인 비트코인입니다만, 오픈한 데이타베이스상에서 이중 지불을 할 수 없게 하기 위해서(때문에) 모두의 계산기의 파워(POW)로 독재자가가 하지 않게 하고 있는 곳이 대단하네요.

실제로는 10% 이상 잡고 있는 마이너가 있습니다. 특히 bitmain사의 AntPool은 ASIC 마이너입니다.



최근 판매 중인 것은 bitmain사의 s9i에서 14.5TH/s입니다. 어떤 기술이라면 여기까지 갈 수 있는지, 또 넘을 수 있을까 추측했습니다. 고찰의 결과 51%를 대폭 넘을 수 있다면 이중 지불이나 새로운 코인을 거의 모을 수 있을 것입니다.

bitmain사의 s9i는 ASIC 마이너로 그 파워는?



bitmain의 s9i는 ASIC 광부입니다. ASIC이 GPU나 CPU보다 훨씬 강한 것은 명령을 위한 메모리를 가지지 않고 연산기의 사용률을 100% 끌어낼 수 있다는 점입니다.
Intel의 CPU에서는 CPU에 비해 ​​메모리가 느리기 때문에 하이퍼스레딩이나 멀티 코어를 이용해 연산기가 놀지 않게 고안되고 있습니다만 한계가 있습니다.

ASIC 마이너는 1사이클에 1해시의 스루풋을 하기 쉽습니다.
bitcoin의 해시는 SHA256입니다만, 곱셈도 없고 메모리에의 액세스도 불필요하기 때문에 회로도 작게 만들 수 있습니다. 10단 정도의 파이프라인으로 만들고, 잡잡하게 추정하면 256bit x 3 x 10 x 10 = 76kgate 정도일까요. 이것은 8bit 마이크로 컴퓨터 정도로 매우 작습니다.

이것을 1Ghz로 움직이면 1GH/s군요.

s9i는 한 대에 189개의 ASIC를 포장하고 있다고 합니다.

최신의 애플의 A11에서는 4.3B 트랜지스터 그렇기 때문에 한 칩으로 14TH/s(아래에서 계산) 갈 것 같습니다.
4.3*(1000^3)/(4*76800) = 14 TH/s 

몇 칩 있으면 51% 잡을 수 있을까?



14TH/s로 되는 칩이 몇개 있으면 51% 취할 수 있을까, bitcoint의 hashrate는 40EH/s이므로 약 290만개 있으면 취할 것 같습니다. (아래에서 계산)
(40*1000*1000)/(14)= 290万個



290만개이므로 1칩 천엔으로 만들 수 있다면 29억엔으로 51% 잡을 것 같네요.

어떻게 ASIC을 만들 수 있습니까?



드디어 본제로 어떻게 ASIC 만드는지입니다. 물론 하스켈입니다.
먼저 Haskell에서 bitcoin을 기존 구현으로 구현합니다.

이 기사 을 보고 하스켈 버전 을 만듭니다. 아마 진짜 bitcoin과는 뭔가 다른 생각도 합니다만 이 때 신경쓰지 않기로 합니다.

그런 다음 POW의 간인 해시 프로그램을 Haskell로 다시 작성합니다.
Crypto.Hash는 C 언어로 작성되었으므로 그것을 참조하여 하스켈 버전을 만듭니다.

Haskell 버전의 해시 계산 프로그램을 Clash에 걸어 Verilog 버전을 만듭니다.
이것은 단수가 1단만이므로 1GHz로 동작할 수 없습니다. 고속화는 다음의 과제로 합니다.

요약



bitcoin의 ASIC 마이너의 간단한 소개와 Haskell에 의한 ASIC 마이너 작성의 시험을 실시했습니다. 또한 51%를 차지하는 데 필요한 ASIC의 개수를 훑어보았다.

좋은 웹페이지 즐겨찾기