Enigma testnetの環境設定

#利用環境：

Intel Core i5 8400
https://ark.intel.com/ja/products/126687/Intel-Core-i5-8400-Processor-9M-Cache-up-to-4_00-GHz
Gigabyte H370n  bios version:F6
https://www.gigabyte.com/jp/Motherboard/H370N-WIFI-rev-10#kf
bios アップデート方法
http://www.octech.jp/review/gigabyte_uefi/2/
OS: ubuntu 16.04 LST
http://releases.ubuntu.com/16.04.4/ubuntu-16.04.4-desktop-amd64.iso
kernel version
4.13.0-45-generic


#Step1
SGXを利用可能なCPUとマザーボードを入手し、OSはEnigmaのドキュメントに従い、ubuntu16.04を入れます。
もともとubuntu16.04が入ってたSSDが家にあったのでそのまま使おうと思ったら色々ハマったので、クリーンインストールするのがオススメです。management engineの脆弱性対応であーだこーだやったことがあるマシンだと死にやすいためです。
SGX対応環境を実は既に持っている場合は、わざわざ買ってこなくて良いので、まずは以下のサイトで確認してみましょう。
https://github.com/ayeks/SGX-hardware
高確率で対応したマシンではないはずなので、これ用に調達するのであれば、私と同じもので揃えるとコスパがいい（値段的にも検証済みであるという意味でも）です。


#Step2
biosでSGXをenableにします。起動時にdeleteキー連打してbios入って探すと、それらしいのがいるはずです。もしいなかった場合は、biosをアップデートしてみるか、それでもいなければ、対応していないマシンということになるので、買い換えてください。


#Step3
linux-sgx-driverを入れます。
https://github.com/intel/linux-sgx-driver

```
$ cd 好きなディレクトリ
$ git clone https://github.com/intel/linux-sgx-driver
$ sudo apt-get install linux-headers-$(uname -r)
$ cd ./linux-sgx-driver
$ make
$ sudo mkdir -p "/lib/modules/"`uname -r`"/kernel/drivers/intel/sgx"    
$ sudo cp isgx.ko "/lib/modules/"`uname -r`"/kernel/drivers/intel/sgx"    
$ sudo sh -c "cat /etc/modules | grep -Fxq isgx || echo isgx >> /etc/modules"    
$ sudo /sbin/depmod
$ sudo /sbin/modprobe isgx
```
ここで、途中でうまくいかない場合には
https://askubuntu.com/questions/765565/how-to-fix-processing-with-runit-and-git-daemon-run
が役立つ場合があります。

```
$ ls /dev/isgx
```
とやって

```
ls: cannot access '/dev/isgx’: No such file or directory 
```
となった場合、失敗しています。
biosの設定でsgxがenableになっているか一応再確認してもenableになっているなら、biosのアップデートかカーネルのアップデートが必要です。ここで私はかなり時間を取られたので、クリーンインストールオススメです。

#Step4
dockerを入れます。
https://qiita.com/tkyonezu/items/0f6da57eb2d823d2611d

```
$ sudo apt-get update
$ sudo apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
$ sudo apt-get update
$ sudo apt-get install -y docker-ce
```

#Step5
docker composeを落としてきます。
https://docs.docker.com/compose/install/#install-compose

```
$ sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
```

#Step6
dockerコマンドをsudoなしで実行できるようにします。
https://qiita.com/DQNEO/items/da5df074c48b012152ee

```
$ sudo groupadd docker
$ sudo gpasswd -a $USER docker
$ sudo systemctl restart docker
$ exit
```
#Step7
Enigmaのdockerネットワークを落としてきます。
https://github.com/enigmampc/enigma-docker-network

```
$ cd 好きなディレクトリ
$ git clone https://github.com/enigmampc/enigma-docker-network
$ cd ./enigma-docker-network
$ docker-compose build
$ ./launch_network.bash
```
うまくいった場合、最終的に

```
enigma_core_1 is ready!
[2018-07-16 06:47:53.167717] INFO: main: Starting up {} node.
[2018-07-16 06:47:53.168073] INFO: Node: Connecting via zmq to: tcp://172.18.0.3:5554
[2018-07-16 06:47:53.168268] INFO: Node: Asking Core for SGX Report
```
となります。

#Step8
遊んでみよう！

***
*biosのアップデート等、マシンやデータを破損するおそれのあるアクションについては自己責任にて十分注意して実行してください。*