Gunosy Tech Blog

Gunosy Tech Blogは株式会社Gunosyのエンジニアが知見を共有する技術ブログです。

仮想通貨マイニングに関するまとめ

こんにちは。 新規事業開発室の @mosa_siru です。

ブロックチェーンAdvent Calendar 14日目の記事です。

社内では新テクノロジーに対しての研究を一部で進めており、スマートスピーカーやVR/ARなどに加え、ブロックチェーンを現在調査しています。この研究・調査の一貫でマイニングについて調べてみました。

この記事では、マイニングの基礎知識と概観について、かなり平易に説明します。基本から順に説明していくので、知ってる人はどんどん飛ばして読んでってください。

また、弊社が進めているブロックチェーン技術に関する研究内容は下記のブログで紹介しています。

blockchain.gunosy.io

※ビットコイン(BTC)のようなProof of Workを採用しているパブリックブロックチェーンを前提に話します。

マイニングって?

なんとなくかじったことがある人なら、ビットコインでは「マイニング」という大変な演算作業をするとお金(BTC)がもらえるということはぼんやり知っているかと思います。

マイニングはお金儲けの手段という側面もありますが、ブロックチェーンにおいては不正な送金や改竄がないか皆で検証するための重要な作業です。マイニング報酬は、その検証作業に対するインセンティブとなっています。

マイニング(検証作業)も、不正の抑制のために簡単にはできないようになっています。承認したいトランザクション(送金)たちを選び、まずは不正なものがないか確認します。そして、例えるなら皆でPC上でひたすらサイコロ25個を投げまくり、一番速く全て1のゾロ目を出した人がマイニング成功!!という仕組みになっています。とにかく沢山沢山演算できた人が当たりやすいわけですね。

ちゃんと言うと、ビットコインでは、 SHA256(トランザクション全体とか、前のブロックハッシュとか、nonce値) で計算されるハッシュ値が、運良くある値以下になった場合のみ検証成功となります。nonce値(なんでもいい)をドンドン変えて、その条件を満たすまで死ぬほど計算するのです。その検証の難しさを difficulty と呼び、期待される必要計算回数と比例します。

執筆時点で、ハッシュレートは1471万TH/s です。これは、マイナー全体で1秒あたり 1471万 * 10^12 回のハッシュ計算をしていると推定されることを意味します。もはやよくわからないですね。 このハッシュレートは、最強マシンのAntminer S9(14TH/s)でいうと100万台です。やばいですね。。

https://blockchain.info/ja/charts/hash-rate?timespan=1year ハッシュレートはどんどんあがってます。

条件を満たすnonceの発見に成功すると、そのブロックを他のマイナーに送信します。皆が検証してそのブロックを認めてくれると、各自のメインチェーンに追加されることになります。検証自体は、含まれるトランザクション等を検証した上で、ハッシュ値をちょろっと検算するだけなので楽ですね。 大抵は競争に負けるので、送られてきたブロックを検証した上で、次のブロックの作成作業に移ることになります。

二重送金などしたい悪い人は、適切なnonce値を自力で見つけて、他の全マイナーより速くブロックを積み上げて最長チェーンにしないといけないので大変です。 「中国の大型マイナーがけしからん!!」みたいな議論はよくありますが、彼らがいるからこそネットワーク全体のハッシュレートが増えて、ポッと出のマイナーが事実上改竄できなくなっているのは間違いないです。 ※もちろん、中国のマイニングプールが結託したら51%を超えるのも事実ですが、それをやってバレたところで保有している大量のBTCが暴落するのでやらないのでは?という見方もあります。

最長チェーンやオーファンブロック、分散型コンセンサスなどの説明は、今回は省略しますmm 個人的には、それぞれが本当に自分のためだけに利益追求してるだけなのに、良いかんじに全体で最適化され合意が形成される(そうでない行動は損するようになっている)ってのは割と鳥肌モノでした!

マイニング報酬

約10分ごとに1ブロックがマイニングされます。マイニングに成功した人には基本報酬 + 皆が払っている送金手数料の合計がもらえます。

現時点では 基本報酬12.5BTC + 手数料 4BTC くらいですね。つまり運良く検証に成功すると、3000万円分のBTCがもらえます。ヤバイですね。10分に1ブロックなので、1日約45億円がうまれているわけです。宇宙ヤバイですね。

(余談ですが、収益最大化のためにマイナーはなるべく手数料の高い送金を優先してブロックに入れることになります。これが、手数料を高くすると送金が早くなる理由ですね。)

送金手数料

ただし基本報酬は4年ごとに半減期をむかえ、2140年にはなくなってしまいます。(これにより、インフレしなくなることが保証されています。)

なので、どこかしらで手数料が報酬のほとんどを占めることになります。このとき、マイナー収益の維持のために単純に手数料がより多く必要になるのか、BTC価格が上がっているから特に必要な手数料は変わらないのかは、よくわかりません。

傾向的には、送金手数料はどんどん上がっており(2017/12/13で平均¥2680)、送金が早い安い美味いとかって何だったの?という話になっていくでしょう。(このへんも、ブロックサイズ上げて延命しようとか、Lightning Networkなどの新技術でなんとかしようとか、送金は他のコインでやればいいじゃんとか、いろんな議論があります。)

https://bitinfocharts.com/comparison/bitcoin-transactionfees.html 平均手数料は1年間で100倍に

difficultyの調整

「マイニング儲かるぞ!」とマイナーがたくさん参入すると、ハッシュレートがあがって早くブロックが採掘されることになり、供給スピードが上がってしまいます。 そのため、ハッシュレートが上昇してもだいたい10分に1回のペースで検証成功になるような難易度に補正される仕組みが入っています。

ただし、BTCは2016ブロックに1回のタイミングで調整されるので、普通は調整まで10分 * 2016 = 14日くらいかかることになります。 そのためやや弾力性に欠け、「Bitcoin Cashの方がマイニング儲かるぞ!!!」などで急激にマイナーが離れてしまうと、1ブロック10分でマイニングがおわらずに2016ブロック後の難易度調整に行き着くまでに途方もない時間がかかり、送金が大幅遅延するという事態が起きるかもしれません。

一方で、一時期のBitcoin Cashのように調整のペースが早く急激だと、収益性の高いコインを求めてBitcoinとBitcoin Cashの間でマイナーが行ったり来たりすることにもなります。この前BCHに修正が入るまでは以下の図のように実際に起きていました。 https://bitinfocharts.com/comparison/hashrate-btc-bch.html#6m

ハッシュレートと価格の関係

マイナーは、掘るために用意したマシン代や、電気代くらいは最低限回収できる金額でBTCを売りたいですよね。 そのため、ネットワーク全体のハッシュパワーは、BTC価格と関係してくることになります。

価格 => ハッシュレート 

例えば、BTC価格があがればマイニング報酬(円建て)もあがるため、より多くのマイナーやマシンが参入し、ハッシュレートが上がることになります。 逆に価格が下がった場合、別のコインのマイニングに移行したり、電気代で割に合わなくなったマイナーが撤退するなどで、ハッシュパワーは下がるでしょう。

ハッシュレート => 価格 

一方で、全体のハッシュパワーが上がると、競争率があがって1ハッシュパワーあたりの収益性が落ちるため、マイナーは収益性を維持するためにこれまで通りの価格ではBTCを売らなくなるかもしれません。

このへんは鶏と卵ですが、たしかに過去の遷移をみると関係してるかも〜〜というのが見て取れます。

https://bitinfocharts.com/comparison/hashrate-price-btc.html#1y

ただし、価格上昇からのハッシュパワー上昇に関しては、すぐにマシンが手に入るわけではないため、やや弾力性に違いがあるかもしれません。

ハッシュアルゴリズムとマシン

ビットコインのハッシュ関数はSHA256ですが、それぞれのコインは異なるハッシュアルゴリズムを採用している場合があり、それによって最適なマシンが変わってきます。

ビットコイン

ビットコインのマイニングにはASICというSHA256に完全特化した集積回路が使うことが一般的で、この有無によってマイニング収益の差が桁違いであるという状態です。 歴史的には、CPU => GPU => FPGA => ASIC とブレイクスルーがあるたびにハッシュレートは急激に増加してきました。

現時点では、ASICを手に入れるには中国のBitmain社から専用機材(Antminer S9など)を買うのが一次ルートですが、一般向けではほとんど売切状態です。Antminer S9は定価15.5万円ですが、現在転売では70万円程度まで価格が上昇しています。

https://shop.bitmain.com/main.htm?lang=en

いかにこのマシンを手に入れるかが勝負を分かつため、Bitmain系列の中国のマイニングプールが強い理由もそこにあります。余談ですが、Bitmainから買うにはBitcoin Cashで払う必要があるのが面白いですね。 また、HalongMining社のDragonMintやGMOさんなどの、Antminerよりも性能の良い回路を作る動きもあります。

ライトコイン

ライトコインでは「Scrypt」というASIC耐性のためにメモリを必要するアルゴリズム(雑な理解)を採用したようですが、現在では攻略されてBitmain社で専用のASICマシンが売られています。そのためハッシュレートが急増しています。

GPU系

その他、イーサリウムはEthash, MoneroのCryptonight, DASHのX11 など、色々なアルゴリズムが採用されています。 このへんはGPUを複数挿ししたマシンで掘るのが一般的なようです。

また、GPUの中でも、AMD Radeonはイーサリウムに、NVIDIA GeForceは他に適しているなどの特徴もあると聞きます。 Radeon 470などは普通のGPUだったのですが、電源効率が良いためマイナーのせいで本当に市場から姿を消してしまったようです。。 そういう意味ではASICと違って、GPUは使い終わったら中古でも売れるかもというところが嬉しいですね。

どのアルゴリズムではどんなマシンが向いているかは、こちらで確認できます。 https://www.cryptocompare.com/mining/#/equipment?f1=SHA256

マイニングコインの選択

ビットコインとビットコインキャッシュなど、ハッシュアルゴリズムが同じコインについては、基本的にマイナーは儲かるコインをその都度選択して掘ることになります。 そのためBTC価格があがればBTCを掘るし、その逆も然りです。

この前ハッキングされたという噂の「Nicehash」というマイニングプールは、儲かるコインを自動判断して掘る機能がついていました。まるで広告のSSPみたいですね。

同一マシンで掘れるコイン同士は、マイニング収益性の変化による乗り換えで、ハッシュパワーや価格が大きく変動する可能性があります。例えば、ビットコインは2016年の半減期(基本報酬25.0 => 12.5BTC)では特にハッシュレートは減りませんでしたが、2020年の半減期では、収益性が減った結果ビットコインキャッシュにマイナーが流れるなどのリスクがあるかもしれません。

収益性

マシン代をどれくらいの期間で回収できるか(payback)は1つの判断材料になります。

https://www.cryptocompare.com/mining/#/equipment?f1=Equihash

こちらで、中国の一般電気代におけるpaybackの目安がかいてあります。 ただし、マシンを定価で手に入れられた場合であることに注意しましょう。

電気代は、日本では 約 ¥22/kWh に対し、中国では¥10以下という話を聞きます。最近進出する企業が多い北欧ではもっと安いという話も聞きます。地熱でエコだし、寒くてマシン冷却に抜群ですからね! その他にも、土地代/人件費/故障率などの各種変数があるでしょう。また、より収益性の高いマシンが出てきたときに、古いマシンの収益性がガクっと落ちるリスクがあるため、償却期間を適切に見積もる必要があるかもしれません。

マイニングへの参加

ソロ

家のPCで早速始めることができますが、なかなか大変です。 うまくいけば1発で3000万円もらえますが、あまりにも確率が低い宝くじです。

マイニングプール

そのため、ボラティリティを抑えるために、マイニングプールに参加するという方法があります。

これは、みんなで頑張って計算して、誰かがうまく掘れたら頑張った分に応じて皆で報酬を分かち合うよというものです。手数料もあるため報酬の期待値は少しだけ下がりますが、分散をぐっと抑えることができます。

「頑張った分に応じて」を適正に評価するために、difficultyを緩和して、やや楽になった問題を何回解けたか(ハッシュ値が緩和された値以下になったか)を見ているようです。例えるなら、皆でサイコロを10個振って誰かが合計10を出すまで大量に振り続けるとして、その各自の試行回数のカウントを自己申告ではなく「合計20以下を出した回数」で評価するようなものです。 とはいえマイニングプールも、ビットコインの場合は専用のPCを用意しない限り、日本の電気代で行うのはそもそも期待値がマイナスであるかもしれません。

クラウドマイニング

クラウドマイニングに投資するという方法もあります。こちらは、自分では一切マイニングせず、マイニングしてる企業に投資して擬似的なハッシュパワーを買い、定期的にマイニング収益を分配してもらうという方法です。企業側は、集まった投資額をマシンの購入や増設に充てます。 こちらはお金さえあれば気軽に始められますが、その企業の判断で収益に合わないマイニングを停止されてしまったり、最悪の場合もち逃げされたらどうしようもない等のリスクがあります。そして、人気のあるクラウドマイニングはすぐに売切れになってしまいます。

マイニングプール側の工夫

先程説明したとおり、「Nicehash」というマイニングプールには、GPU系で儲かるコインを自動選択して掘る機能がついていました。 他にも、大手プールはちょっとでも有利に採掘できるように、いろいろと工夫しているらしいです。

運良く早く採掘できたら、ブロックのブロードキャストをあえて少し遅らせて、自分のマイニングプールだけで次のブロックを先に掘りはじめてしまう戦略があるようです。(他のマイナーに比べて次のブロックで優位にたてます。もちろん、その間に他のマイナーがマイニング成功してしまうリスクがあります。)

このへんは、マイニングプールのクライアント上で、ブロックチェーン外のネットワークを築いて色々やっているのかもしれませんね。

マイニングの税金

国税庁のFAQによると、なかなか厳しい課税なように見えます。(とはいえ僕は専門ではないため、以下はあくまで僕の解釈です。)

マイニングしてBTCを得ることに成功したとすると、

 (1)取得時点のBTC時価 - マイニング初期投資 が課税対象

さらに、BTCが価格上昇したとすると、マイニングで得たBTCで円にしたりモノを買ったりすると、

 (2)利確時点の BTC時価 - 取得時点のBTC時価 もさらに課税対象

と、2段階で取られます。大変ですね。

マイニングプールで細かく収益を得るパターンだとか、減価償却って何年なのとか、クラウドマイニングは?実際に税務署は計算できるの?など疑問はつきませんが、とりあえず大変なようです。運用可能かは抜きにして、とりあえず取れるだけ取る方向に倒してると解釈すればいいのかなと。

余談ですがこのFAQに従うと、BTC値上がりした状態でETHとかにかえて(課税対象)、ETHが大幅値下がりして年をまたぐと、税金で破産してしまうことになる気がします。大変だ!!

おわりに

というわけで、長々と説明してきました。

色々とドメイン知識が必要そうで、個人での参加は容易ですが儲けるにはなかなか大変そうですね・・・!

一方で、すでにいくつかの日本企業も参入を表明しておりますし、日本のハッシュパワーが高くなって中国一強の業界全体が健全化しないかな〜と勝手に思っております!

宣伝

Gunosyでは、blockchain.tokyo を主催するなど、ブロックチェーンや仮想通貨に関する調査をしています。もし興味がある方いましたら、お気軽にお声かけくださいmm

blockchain-tokyo.connpass.com