仮想通貨の仕組み
仮想通貨の仕組みを知っておきたくて、いくつか資料を探した。twitterに書いた内容をここにもまとめておく。自分で調べたい人は、「マークルルート(Merkle root)」「ナンス(nonce)」といったキーワードで探すと良いと思う。
経産省と東海大学の川野祐司先生の資料
仮想通貨の基礎理論を知るために丁度良い資料があった。国際貿易投資研究所と東洋大学の川野祐司先生によるレポートで、ビットコインのブロックチェーンにSatoshi Nakamotoが積んだブロックの話とかマークルルート等の話がわかる。 https://t.co/0B4fmcpdVI
— suna (@sunasaji) 2017年12月30日
平成27年度 我が国経済社会の情報化・サービス化に係る基盤整備(ブロックチェーン技術を利用したサービスに関する国内外動向調査)
・レポートはこちら→ http://iti.or.jp/report_56.pdf
・スライド版はこちら→ http://www.iti.or.jp/flash343.pdf
技術面から仮想通貨を知っておきたい人には良い資料。ビットコインでは過去の全取引と、新規のトランザクションからハッシュを生成してマークルルートを生成し、それをブロックチェーンの最後に積むための鍵(ナンス)を、膨大な計算力を使うマイニングで探索している。
過去の取引履歴は10分ごとに更新されるから、ハッシュ探索の課題が常に更新されることになる。過去の取引履歴を改ざんするには、その時点から現在までに要した全てのハッシュ計算力を凌駕することが必要で、事実上不可能であるため、改竄できず頑健な分散台帳が実現する。
経産省と野村総研の調査資料
仮想通貨とブロックチェーンに関する基盤整備と動向調査の資料も良く纏まっていて参考になる。社会へのインパクト、誰が何に使えるか、政府の対応、等まで検討しているのはさすが。
http://www.meti.go.jp/press/2016/04/20160428003/20160428003-2.pdf
富士ゼロックスの漆嶌さんの講演資料
JSSECのフィンテックセミナーで講演された際の資料。ハッシュ関数や楕円曲線公開鍵暗号やデータ構造まで説明されていて、仮想通貨の理解に役立つ。
http://www.meti.go.jp/press/2016/04/20160428003/20160428003-2.pdf
Bitzenyを採掘する
Bitzeny
日本発のオルトコインの一つ。主要取引所では扱いが無いマイナーな草コインで、日本円への換金にはやや難があるもののまだ20円/コインと単価が安く採掘効率は相対的に良い。あとCPUで採掘できるハッシュアルゴリズムを使っているので、他のGPUで採掘するコインと並行して同じマシンで採掘できる。下記の記事を参考にした。
ウォレットを手元で動かす手順となっているけれど、プールマイニングするなら手元にウォレット(BitZeny Core)を置かないで、オンラインウォレットを使っても問題ない。
SSLライブラリを入れる
Bitzeny公式からwin64-sseのWindows 64bit 11/10版のマイナーを取得して起動すると、libeay32.dllとssleay32.dllが無いと言われたので探してきて同じフォルダに置いたら起動はできた。
エラーコード0xc000007b
その後も、0xc000007b のエラーが出てマイニングが始まらない。
このエラーは、実行ファイルとDLLが32bit用と64bit用でミスマッチしているときに出るもののようだ。今回はlibcurl.dllが32ビットだったようなので下記のものに差し替えたらマイニング開始できた。
左側の「for 64 Bit (x64)」と書いてある緑色の0.21MBのリンクから取得した。
LA Monacoin Pool と LA Bitzeny Pool の Worker を住み分ける
LA Monacoin Pool では BitzenyのWorkerとMonacoinのWorkerは同一のリストで管理されているので、BitzenyとMonacoinのWorkerのuser名は重複しないようにする必要があることに注意。他のプールプラットフォームでも同じかも。
モナコインを採掘する
モナコイン
日本では早くから2chなどで流通が始まっていてコミュニティがあり、仮想通貨の先駆けとして興味は持っていた。 近年のビットコインの高騰もあり、VRやってない時にグラボを使えることもあってモナコインの採掘を試すことにした。 仮想通貨の採掘方法は、ソロ採掘、プール採掘、クラウドマイニング、が主なパターンで、手元のグラボ使えるのはソロかプール。 ソロは掘れない日が続くことがあるけどプール用のアカウント登録などが要らず、外部との通信も気にしなくて済むのでとりあえずソロで試すことにした。 下記のブログが参考になった。
ウォレットを起動して1日かけてハッシュを同期して、同時にCUDAを入れて、最後にccminerを起動するだけ。案外簡単だ。 やってみたところ、GTX1070を使ったハッシュレートは約31.3MH/s程度になった。
ccminerを更新
上記にあったccminerはCUDA8用のようだったので、CUDA9に対応したものに更新してみた。
2.2-mod-r2-CUDA9.binary.zip を使用。ご提供ありがとうございます。 ただGTX1070を使ったハッシュレートは約32MH/sでほぼ変わらなかった。
採掘レートを試算してみる
下記のサイトの右側の「採掘資源量を登録する」に自環境の採掘レートを入れると、一日平均何Monaが採掘できるか確認できる。
たとえば、「採掘資源量」に「32,300KH/s」(32.3MH/s)を入れると「予想採掘量/day 0.24MONA (311円相当)」となる。 いまモナコインの採掘報酬は25コインごとなので、ソロで掘り当てたら一気に25モナが手に入ることになる。 しかし、ソロだと、当たらなければいつまでもゼロ収入が続く。25を0.24で割ると100以上になるので、当たるまで平均100日はゼロ収入で採掘を続ける計算になる。 一方でプール採掘だと、掘り当てたコインをプールの皆に分配しなければならないので、プール採掘中に自分が25モナを掘り当てても独り占めできなくなるけれど、プールの誰かが掘り当てたときに少しずつ分け前を貰えるので、収入をこまめに継続的に得ることができるようになる。プール採掘にしたほうが心の安定が保てそうだから、移行することにする。 バクチ好きな人はソロで続けるハートもあるかもだけど、普通のPC環境の人はおとなしくプール採掘にするのがよさそう。
プールに参加する
下記のページを参考にプールに登録してみた。
参加したのは下記のプール。プールのダッシュボードで、自マシンのworkerが稼働しているのがわかれば、OK。
SpaceFaucetでモナコインをもらう
モナコインのウォレットに入金ができるか試すため、少量のモナコインを貰ってみた。数秒で着金できた。ありがとうございます。 http://utyuu.space/spacespace-faucet/
Unityの3DプロジェクトをVisual Studio Projectにエクスポートしてビルドする
基本的には、Exporting and building a Unity Visual Studio solution の手順に従えばできる。
Holograms 100 の Chapter6の手順も、だいたい同じ。
まずFile->Build Settingsのダイアログで「Unity C# Projects」にチェックを入れてビルド。
あとは Windows の Explorer でビルド先ディレクトリを開いて、中にある拡張子SLNのファイルをVSで開いてコンパイルするだけ。
Unityからのエクスポートは毎回する必要はなく、下記を変えたときにやればよいようだ。→ Exporting and building a Unity Visual Studio solution
- You add or remove assets in the Project tab.
- You change any value in the Inspector tab.
- You add or remove objects from the Hierarchy tab.
- You change any Unity project settings
ビルドすると、複合現実ポータルでWinキーを押してアプリ一覧から自分のアプリを呼び出したり、メインディスプレイのWinメニューから自分のアプリを呼び出して、Windows Mixed Realityデバイス内でVRアプリをプレイできる。
視界に浮かぶ美しい豆腐。
VS2017+Unity2017.2.0b9でWinMR開発
手順の整理を兼ねて、別のWin10機でもWindows Mixed RealityデバイスでUnityのプレビューができるようにしてみた。
環境
- Unity: 2017.2.0b9
- Visual Studio Community 2017: Version 15.3.3 (26730.08)
- OS: Windows10 Home Insider Preview (16281.rs3_release.170829-1438)
- PC本体:自作(CPU:Intel Core i3-6320, マザボ:ASRock H110M-ITX/D3, CPU内蔵GPU) ややカク付くけどこのスペックでも複合現実ポータル動いた。
- メインディスプレイ:DVI接続
- Acer AH100:USB3+HDMI
手順
公式手順
基本的に公式手順に従う。ただし以前と同様に「Unity Mixed Reality Technical Preview」の項目と、下の方の「For DirectX development:」と「Update graphics drivers」はパスした。 Windows Insiderの設定は、「次のバージョンのWindows」と「ファースト」を選択した。
Unity Beta 2017.2.0b9 インストール
サンプルの3Dキューブを表示するUnityプロジェクトを作る
下記の手順でとりあえず白い立方体を表示するだけのアプリを作る。
ただし、説明では「Edit」->「Project Settings」->「Quality」で「Fastest」を選ぶとあるが、「Fastest」ではなくて「Very Low」となっているので、注意。 Defaultの右にある、二つ目の「▼」から選択できる。
また、「Build Settings」->「Player Settings」で「Virtual Reality Supported」を選ぶチェックボックスは、「Other Settings」ではなくて「XR Settings」の中にあるので、注意。
更に、デフォルトでは、「Build Settings」画面に、「Currently selected scripting backend (IL2CPP) is not installed.」という警告が出る。これは「scripting backend」に、インストールされていない「IL2CPP」が指定されているため。インストール済のscript backendに変更すればよい。
「Player Settings」ボタンをクリックして、「Inspector」ビューの「Other Settings」タブの「Scripting Backend」を「.NET」にする。
あとは、手順に従って、UnityのPlayボタンを押せば、AcerのImmersive Deviceで立方体がプレビューできる。
参考
Windows Mixed Reality用のUnityプロジェクトをビルドする手順
VS2017+Unity2017.2.0b8でWinMR開発
AcerのWindows Mixed Realityヘッドセットが届いたので、Unityから使えるようにセットアップした。 冗長なところがあるかもしれないけれど、環境や手順を記録しておく。
環境
- Unity: 2017.2.0b8
- Visual Studio Community 2017: Version 15.2 (26430.16)
- OS: Windows10 Home Insider Preview Version 1703 (16275.1000)
- Universal Windows Platform SDK (10.0.16267.0)
- PC本体:ドスパラ GALLERIA VR WEAR HG (今は売り切れだけど、持ち運びもできてスペックも良いので気に入ってる)
- mini Display Port - VGA変換アダプタ (miyoshi DPA-2KDS/WH) (メインディスプレイ用。これが無いと、ヘッドセットのセットアップがうまくいかなかった)
手順
OS設定
下記のMicrosoftの公式手順に従って Immersive Headset の開発環境を構築する。
ただし「Unity Mixed Reality Technical Preview」の項目と、下の方の「For DirectX development:」と「Update graphics drivers」はパスした。 Windows Insiderの設定は、「次のバージョンのWindows」と「ファースト」を選択した。
後は、公式通りアップデートして、Windowsの開発者モードを有効にした。
Visual Studio 2017を設定
Visual Studio 2017をインストールして起動し、ファイル→新規作成→プロジェクトを選ぶ。
「Visual Studio インストーラーを開く」をクリックする。
「ユニバーサルWindowsプラットフォーム開発」を選択する。 右下の「オプション」の「Windows 10 SDK」もチェックした。「VRエンジニア養成読本」のHololens入門の記事に書いてあったため、念のため入れた。 ここでは「C++によるデスクトップ開発」は選択しなかったけれど、私の場合は、後で結局入れることになった。
下の方にスクロールして、「Unityによるゲーム開発」もチェックする。
「続行」を押してしばし待つ。
Unityを設定
適当なプロジェクトを開く。私の場合は、ドットインストールのUnity入門を一通り終えて、BallGameを作るところまでやっていたので、これを流用した。
http://dotinstall.com/lessons/basic_unity
「File」→「Build Settings…」を開く。「Universal Windows Platform」を選択して「Switch Platform」を実行する。 以下の設定をする。
Target device: any device Build Type: D3D SDK: Latest Installed Build and Run on: Local Machine Development Build: (check)
「Player Settings」を開く。
「XR Settings」の「Virtual Reality Supported」をチェックする。
「Stereo Rendering Method」を「Single Pass Instanced (Preview)」にする。
IL2CPPをインストール
私の場合は、このときUnityの「Build Settings」画面に、「Currently selected scripting backend (IL2CPP) is not installed.」という警告が出て、ビルドができなかった。
後で気が付いたのだが、scripting backendは、「Player Settings」ボタンをクリックして、「Inspector」ビューの「Other Settings」タブの中で設定できるようで、ここに「IL2CPP」が指定されていたため、出ていたメッセージだったようだ。ここで「IL2CPP」の代わりに「.NET」を選べば「IL2CPP」は入れなくて済んだかもしれないが、私は「IL2CPP」を入れることを選んだ。ちなみにIL2CPPはC#をC++に変換する仕組みらしい。
Unityのインストーラを再度起動して、「Windows Store IL2CPP Scripting Backend」にチェックを入れて、しばし待つ。
Unityプロジェクトのビルド
ようやくビルドできるようになったので「Build」を押す。ビルドディレクトリが聞かれるので適当に「Build」などのディレクトリを作ってビルドする。
ビルドされたプロジェクトをVS2017で開く
「見つからない機能のインストール」ダイアログが開き、「C++ユニバーサルWindowsプラットフォームツール」と「C++によるデスクトップ開発」のインストールを促されるので、素直に従う。
ソリューション操作の再ターゲットをする
以下のようなエラーが出る。
C:\Users\sunas\Documents\BallGame\Build\BallGame\BallGame.vcxproj : warning : Visual Studio 2015 (v140) のビルド ツールが見つかりません。Visual Studio 2017 (v141) ビルド ツールを使用してビルドするには、[プロジェクト] メニューをクリックするかソリューションを右クリックし、[ソリューションの再ターゲット] を選択します。Visual Studio 2015 (v140) ビルド ツールを使用してビルドするには、Visual Studio 2015 (v140) をインストールします。 C:\Users\sunas\Documents\BallGame\Build\Il2CppOutputProject\Il2CppOutputProject.vcxproj : warning : Visual Studio 2015 (v140) のビルド ツールが見つかりません。Visual Studio 2015 (v140) ビルド ツールを使用し、Visual Studio 2015 (v140) をインストールしてビルドします。
エラーメッセージに従って「プロジェクト」メニューから「ソリューションの再ターゲット」を選択する。この後、Ctrl+F5を押してビルド・実行したらPCの全画面が白くなって操作不能になった。ctrl+alt+delを押すとかWinキーを押すなどして何とか復帰した。
再度Unityを開き、ビルドして、Unityの再生ボタンを押す。
Windows Immersive Headsetが反応してVRでアプリがプレビューできた。
参考
・MSの公式手順
・MSのMixed Reality開発情報ページ
https://developer.microsoft.com/en-us/windows/mixed-reality/development
・詳細な解説記事。こちらは、Scripting Backendに「.NET」を指定している。
・VRエンジニア開発読本
Hololens関連の記事を参考にした。
Unity2017.1.0f3でMaterialに着色する
VRアプリ開発のためVRヘッドセットを買って、DotinstallのUnity入門を始めた。
http://dotinstall.com/lessons/basic_unity/24607
途中までは順調だったけれど、「#07 Materialを使ってみよう」の所で詰まった。Floorコンポーネントに赤色のMaterialをドラッグしても、赤色にならない。解決するためには、「GameObject」メニューから「Camera」を追加すればよかった。下記のページが参考になった。