NEM Symbol(nem2) インストール

2021/11/10 追記

今ではsymbol-bootstrapも進化してもっと簡単になっています。
https://github.com/symbol/symbol-bootstrap#symbol-bootstrap を参考に、
CPUがCPU Intel AVX2に対応(Haswell以降) に対応していること。Node 12.0.0+, Docker 18.3.0+, Docker Compose 1.25.0+ が要件となっているようです。
ウィザードを使ってやるとやりやすい模様。`$ symbol-bootstrap wizard`


↓2020/10月に書いたもの(古い)
-------------------

暗号資産仮想通貨クリプトよろしくNEM2のtestnetが2020/09の終わりごろより開始されました。

[Symbol のテストネットがローンチしました！](https://japan.nem.io/article/symbol-%e3%81%ae%e3%83%86%e3%82%b9%e3%83%88%e3%83%8d%e3%83%83%e3%83%88%e3%81%8c%e3%83%ad%e3%83%bc%e3%83%b3%e3%83%81%e3%81%97%e3%81%be%e3%81%97%e3%81%9f%ef%bc%81/)

symbol, catapult, nem2、よくわからん単語がいろいろありますが、とりあえずよしなにセットアップできるブートストラップを利用して構築していきたいと思います。
https://github.com/nemtech/symbol-bootstrap

# tl;dr


symbol-bootstrap を利用してノードの構築を行っています。



# 環境

CPU Intel AVX2に対応(Haswell以降) fedora30(古い), node10以降, docker, docker-composeをあらかじめ入れてあります。
？
AVX2の確認をしてください。出てこなければsymbol-bootstrapを使うのは無理です。（PC買うしか？

```zsh

╭─murata@deroris ~/workspace/symbol-bootstrap
╰─$ cat /proc/cpuinfo | grep -E avx2
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts md_clear flush_l1d
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts md_clear flush_l1d
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts md_clear flush_l1d
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts md_clear flush_l1d
```

そのほかの環境は以下の通り


```zsh


╭─murata@deroris ~/workspace/symbol-bootstrap
╰─$ cat /etc/redhat-release
Fedora release 30 (Thirty)
╭─murata@deroris ~/workspace/symbol-bootstrap
╰─$ uname -a
Linux deroris.net 5.6.13-100.fc30.x86_64 #1 SMP Fri May 15 00:36:06 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
╭─murata@deroris ~/workspace/symbol-bootstrap
╰─$ sudo systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)

~~snip;


╭─murata@deroris ~/workspace/symbol-bootstrap
╰─$ docker --version
Docker version 19.03.12, build 48a66213fe
╭─murata@deroris ~/workspace/symbol-bootstrap
╰─$ docker-compose --version
docker-compose version 1.27.4, build 40524192
╭─murata@deroris ~/workspace/symbol-bootstrap
╰─$ node --version
v13.13.0
```

`$ sudo gpasswd -a ${USER} docker` をして自分のアカウントでもdockerをいじれるようにしておいてあります。
nodeはnodenvです。


# symbol-bootstrapをインストール

こちらより手順を確認して入れる。 https://www.npmjs.com/package/symbol-bootstrap
このためにnodeが必要であった。
global汚染を気にした-gは付けない。0.1.1が入った。

```zsh


╭─murata@deroris ~/workspace/symbol-bootstrap
╰─$ npm i symbol-bootstrap
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated request-promise-native@1.0.9: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142npm WARN deprecated js-joda@1.11.0: This package is deprecated, please check/use @js-joda/core instead
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN saveError ENOENT: no such file or directory, open '/home/murata/workspace/symbol-bootstrap/package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open '/home/murata/workspace/symbol-bootstrap/package.json'
npm WARN symbol-bootstrap No description
npm WARN symbol-bootstrap No repository field.
npm WARN symbol-bootstrap No README data
npm WARN symbol-bootstrap No license field.

+ symbol-bootstrap@0.1.1
added 230 packages from 220 contributors and audited 230 packages in 22.121s

11 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities


╭─murata@deroris ~/workspace/symbol-bootstrap
╰─$ ll
total 80
drwxrwxr-x 205 murata murata  8192 Oct  6 16:15 node_modules
-rw-rw-r--   1 murata murata 68034 Oct  6 16:15 package-lock.json
```

githubはこちら https://github.com/nemtech/symbol-bootstrap

インストールが確認できた。

```zsh

╭─murata@deroris ~/workspace/symbol-bootstrap
╰─$ npx --no-install symbol-bootstrap --version
symbol-bootstrap/0.1.1 linux-x64 node-v13.13.0

╭─murata@deroris ~/workspace/symbol-bootstrap
╰─$ npx --no-install symbol-bootstrap --help
Symbol tool that allows you creating, configuring and running Symbol's networks

VERSION
  symbol-bootstrap/0.1.1 linux-x64 node-v13.13.0

USAGE
  $ symbol-bootstrap [COMMAND]

COMMANDS
  clean    It removes the target folder (It may not work if you need root privileges!!!)
  compose  It generates the `docker-compose.yml` file from the configured network.
  config   Command used to set up the configuration files and the nemesis block for the current network
  help     display help for symbol-bootstrap
  link     It announces VRF and Voting Link transactions to the network for each node with 'Peer' or 'Voting' roles. This command finalizes the node registration to an existing network.
  report   it generates reStructuredText (.rst) reports describing the configuration of each node.
  run      It boots the network via docker using the generated `docker-compose.yml` file and configuration. The config and compose methods/commands need to be called before this method. This is just a wrapper for the `docker-compose up` bash call.
  start    Single command that aggregates config, compose and run in one line!
  stop     It stops the docker-compose network if running (symbol-bootstrap started with --detached). This is just a wrapper for the `docker-compose down` bash call.

```




# 起動してみる


## 設定ファイル作成


プリセットで設定させる。`-p`はpresetのこと。


```zsh


╭─murata@deroris ~/workspace/symbol-bootstrap
╰─$ npx symbol-bootstrap config -p bootstrap                                                                                                                                                                                                                                        
                            _               _           _                       _           _
  ___   _   _   _ __ ___   | |__     ___   | |         | |__     ___     ___   | |_   ___  | |_   _ __    __ _   _ __
 / __| | | | | | '_ ` _ \  | '_ \   / _ \  | |  _____  | '_ \   / _ \   / _ \  | __| / __| | __| | '__|  / _` | | '_ \
 \__ \ | |_| | | | | | | | | |_) | | (_) | | | |_____| | |_) | | (_) | | (_) | | |_  \__ \ | |_  | |    | (_| | | |_) |
 |___/  \__, | |_| |_| |_| |_.__/   \___/  |_|         |_.__/   \___/   \___/   \__| |___/  \__| |_|     \__,_| | .__/
        |___/                                                                                                   |_|
2020-10-06T09:25:21.541Z info [SYSTEM_LOG]     Generating config from preset bootstrap
2020-10-06T09:25:21.609Z info [SYSTEM_LOG]     User for docker resolved: 1000:1000

2020-10-06T09:25:21.610Z info [SYSTEM_LOG]     Running image using Exec: symbolplatform/symbol-server:tools-gcc-0.10.0.3 bash createCertificate.sh
2020-10-06T09:25:21.614Z info [SYSTEM_LOG]     User for docker resolved: 1000:1000

2020-10-06T09:25:21.614Z info [SYSTEM_LOG]     Running image using Exec: symbolplatform/symbol-server:tools-gcc-0.10.0.3 bash createCertificate.sh
2020-10-06T09:25:21.618Z info [SYSTEM_LOG]     User for docker resolved: 1000:1000

2020-10-06T09:25:21.619Z info [SYSTEM_LOG]     Running image using Exec: symbolplatform/symbol-server:tools-gcc-0.10.0.3 bash createCertificate.sh
2020-10-06T09:26:14.290Z info [SYSTEM_LOG]     Certificate for node peer-node-0 created
2020-10-06T09:26:14.356Z info [SYSTEM_LOG]     Certificate for node peer-node-1 created
2020-10-06T09:26:14.446Z info [SYSTEM_LOG]     Certificate for node api-node-0 created
2020-10-06T09:26:14.625Z info [SYSTEM_LOG]     Non-voting node api-node-0.
2020-10-06T09:26:14.626Z info [SYSTEM_LOG]     Running image using Exec: symbolplatform/symbol-server:tools-gcc-0.10.0.3 /usr/catapult/bin/catapult.tools.votingkey --secret=F636811EA1D3BA0AD40AC0F452F366ED5B5511EE4907D48453F895EE10D9ECE9 --dilution=128 --startEpoch=1 --endEpoch=26280 --output=/votingKeys/private_key_tree1.dat
2020-10-06T09:26:14.630Z info [SYSTEM_LOG]     Running image using Exec: symbolplatform/symbol-server:tools-gcc-0.10.0.3 /usr/catapult/bin/catapult.tools.votingkey --secret=F229651CB02CA78B4CBAA29CD4D53397CCDA1AEDC574B97B84C894CC64ED89B9 --dilution=128 --startEpoch=1 --endEpoch=26280 --output=/votingKeys/private_key_tree1.dat
2020-10-06T09:26:15.649Z info [SYSTEM_LOG]     Voting key executed for node peer-node-1!
2020-10-06T09:26:15.717Z info [SYSTEM_LOG]     Voting key executed for node peer-node-0!
2020-10-06T09:26:15.809Z info [SYSTEM_LOG]     Running image using Exec: symbolplatform/symbol-server:tools-gcc-0.10.0.3 /usr/catapult/bin/catapult.tools.nemgen --resources=/userconfig --nemesisProperties=/nemesis/block-properties-file.properties
2020-10-06T09:26:17.189Z info [SYSTEM_LOG]     Nemgen executed!!!!
2020-10-06T09:26:17.204Z info [SYSTEM_LOG]     Configuration generated.

```

targetディレクトリができてconfigファイルができた。targetディレクトリを消せば初期化されるそうだ。

```zsh

╭─murata@deroris ~/workspace/symbol-bootstrap
╰─$ tree -d target/config/
target/config/
├── api-node-0
│   └── resources
│       └── cert
│           └── new_certs
├── generated-addresses
├── nemesis
│   └── transactions
├── peer-node-0
│   └── resources
│       └── cert
│           └── new_certs
├── peer-node-1
│   └── resources
│       └── cert
│           └── new_certs
└── rest-gateway

16 directories
```

docker-compose.ymlファイルを作らせます。

```zsh

╭─murata@deroris ~/workspace/symbol-bootstrap
╰─$ npx symbol-bootstrap compose
                            _               _           _                       _           _
  ___   _   _   _ __ ___   | |__     ___   | |         | |__     ___     ___   | |_   ___  | |_   _ __    __ _   _ __
 / __| | | | | | '_ ` _ \  | '_ \   / _ \  | |  _____  | '_ \   / _ \   / _ \  | __| / __| | __| | '__|  / _` | | '_ \
 \__ \ | |_| | | | | | | | | |_) | | (_) | | | |_____| | |_) | | (_) | | (_) | | |_  \__ \ | |_  | |    | (_| | | |_) |
 |___/  \__, | |_| |_| |_| |_.__/   \___/  |_|         |_.__/   \___/   \___/   \__| |___/  \__| |_|     \__,_| | .__/
        |___/                                                                                                   |_|
2020-10-07T03:13:31.252Z info [SYSTEM_LOG]     User for docker resolved: 1000:1000

2020-10-07T03:13:31.253Z info [SYSTEM_LOG]     creating docker-compose.yml from last used profile.
2020-10-07T03:13:31.258Z info [SYSTEM_LOG]     docker-compose.yml file created /home/murata/workspace/symbol-bootstrap/target/docker/docker-compose.yml
```


起動させます。↑で作ったdocker-compose.ymlを起動しているだけっぽいですね。

```zsh

╭─murata@deroris ~/workspace/symbol-bootstrap
╰─$ npx symbol-bootstrap run
_               _           _                       _           _                         
___   _   _   _ __ ___   | |__     ___   | |         | |__     ___     ___   | |_   ___  | |_   _ __    __ _   _ __      
/ __| | | | | | '_ ` _ \  | '_ \   / _ \  | |  _____  | '_ \   / _ \   / _ \  | __| / __| | __| | '__|  / _` | | '_ \                                                \__ \ | |_| | | | | | | | | |_) | | (_) | | | |_____| | |_) | | (_) | | (_) | | |_  \__ \ | |_  | |    | (_| | | |_) |   
|___/  \__, | |_| |_| |_| |_.__/   \___/  |_|         |_.__/   \___/   \___/   \__| |___/  \__| |_|     \__,_| | .__/    
|___/                                                                                                   |_|              
2020-10-07T03:26:32.896Z info [SYSTEM_LOG]     running: docker-compose -f target/docker/docker-compose.yml up --remove-orphans
Starting docker_peer-node-0_1       ... done
Starting docker_api-node-broker-0_1 ... 
Starting docker_db_1                ...
Starting docker_db_1                ... done
Starting docker_api-node-broker-0_1 ... done
Starting docker_peer-node-1_1       ... done
Starting docker_db-init_1           ...     
Starting docker_db-init_1           ... done
Starting docker_rest-gateway_1      ...     
Starting docker_rest-gateway_1      ... done
Attaching to docker_peer-node-0_1, docker_db_1, docker_peer-node-1_1, docker_api-node-broker-0_1, docker_db-init_1, docker_api-node-0_1, docker_rest-gateway_1
api-node-0_1         | RUNNING runServerRecover.sh api-node-0
api-node-broker-0_1  | RUNNING runServerRecover.sh api-node-broker-0
db_1                 | 2020-10-07T03:26:34.257+0000 I  CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols
'none'

~~snip;

```

だらだら～っとdockerのログたちが流れます。エラーがあっても見逃すので気をつけましょう。



しばらくしたら3000番でapiが空いているので、稼働しているか確認します。

```
╭─murata@deroris ~
╰─$ curl localhost:3000/node/info | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   281  100   281    0     0  46833      0 --:--:-- --:--:-- --:--:-- 46833
{
  "version": 0,
  "publicKey": "06B0A437CD02A1B2B99A5DCFE1673CEFE47A26499F295E2538EF285A7AFD699A",
  "networkGenerationHashSeed": "0644A28DFAB8F643D89AE575CDA9577301680EA83D8E3F47D7E9BD383CAD8DDF",
  "roles": 2,
  "port": 7900,
  "networkIdentifier": 152,
  "host": "api-node-0",
  "friendlyName": "api-node-0"
}
```

chainのheightも伸びているので問題なさそうですね。
少し待って数回たたけば変わってくるはずです。

```
╭─murata@deroris ~
╰─$ curl localhost:3000/chain/info | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   217  100   217    0     0  72333      0 --:--:-- --:--:-- --:--:-- 72333
{
  "scoreHigh": "0",
  "scoreLow": "1524346200878373",
  "height": "29",
  "latestFinalizedBlock": {
    "finalizationEpoch": 1,
    "finalizationPoint": 1,
    "height": "1",
    "hash": "B9971EBDEA848D6ABE1DAEE3589382A94883D2D1FAC2E41CAA689A12702685AC"
  }
}
```



# docker-compose.yml見てみる。

symbol-bootstrap composeで生成されたファイルを確認してみます。
dbにはmongo, peer-nodeが2本、api-nodeとapi-node-brokerが1本ずつ。rest-gatewayもいますね。
symbolplatform/symbol-serverあたりが、AVX2に対応されたPCでコンパイルされているのでしょうか。もしくはAVX2は必須だったり？

```yaml:target/docker/docker-compose.yml

version: '3'
networks:
    default:
        ipam:
            config:
                -                                                                                                                                                       subnet: 172.20.0.0/24
services:
    db:
        image: 'mongo:4.2.6-bionic'
        user: '1000:1000'
        command: bash -c "mongod --dbpath=/dbdata --bind_ip=db"
        stop_signal: SIGINT
        ports:
            - '27017:27017'
        volumes:
            - '../data/mongo:/dbdata:rw'
    db-init:
        image: 'mongo:4.2.6-bionic'
        user: '1000:1000'
        command: bash -c "/bin/bash /userconfig/mongors.sh && touch /state/mongo-is-setup"
        volumes:
            - './mongo:/userconfig/:ro'
            - '../data/mongo:/dbdata:rw'
            - '../state:/state'
        depends_on:
            - db
    peer-node-0:
        image: 'symbolplatform/symbol-server:gcc-0.10.0.3'
        user: '1000:1000'
        command: bash -c "/bin/bash /userconfig/runServerRecover.sh  peer-node-0 && /bin/bash /userconfig/startServer.sh peer-node-0"
        stop_signal: SIGINT
        depends_on: []
        restart: 'on-failure:2'
        ports: []
        volumes:
            - './dockerfiles/catapult/userconfig/:/userconfig'
            - './bin/bash:/bin-mount'
            - '../config/peer-node-0/resources/:/userconfig/resources/'
            - '../data/peer-node-0:/data:rw'
            - '../data/nemesis-data:/nemesis-data:rw'
            - '../state:/state'
        hostname: peer-node-0
        networks:
            default:
                aliases:
                    - peer-node-0
    peer-node-1:
        image: 'symbolplatform/symbol-server:gcc-0.10.0.3'
        user: '1000:1000'
        command: bash -c "/bin/bash /userconfig/runServerRecover.sh  peer-node-1 && /bin/bash /userconfig/startServer.sh peer-node-1"
        stop_signal: SIGINT
        depends_on: []
        restart: 'on-failure:2'
        ports: []
        volumes:
            - './dockerfiles/catapult/userconfig/:/userconfig'
            - './bin/bash:/bin-mount'
            - '../config/peer-node-1/resources/:/userconfig/resources/'
            - '../data/peer-node-1:/data:rw'
            - '../data/nemesis-data:/nemesis-data:rw'
            - '../state:/state'
        hostname: peer-node-1
        networks:
            default:
                aliases:
                    - peer-node-1
    api-node-0:
        image: 'symbolplatform/symbol-server:gcc-0.10.0.3'
        user: '1000:1000'
        command: bash -c "/bin/bash /userconfig/runServerRecover.sh  api-node-0 && /bin/bash /userconfig/startServer.sh api-node-0"
        stop_signal: SIGINT
        depends_on:
            - db-init
            - api-node-broker-0
        restart: 'on-failure:2'
        ports:
            - '7900:7900'
        volumes:
            - './dockerfiles/catapult/userconfig/:/userconfig'
            - './bin/bash:/bin-mount'
            - '../config/api-node-0/resources/:/userconfig/resources/'
            - '../data/api-node-0:/data:rw'
            - '../data/nemesis-data:/nemesis-data:rw'
            - '../state:/state'
        hostname: api-node-0
        networks:
            default:
                aliases:
                    - api-node-0
    api-node-broker-0:
        image: 'symbolplatform/symbol-server:gcc-0.10.0.3'
        user: '1000:1000'
        command: bash -c "/bin/bash /userconfig/runServerRecover.sh api-node-broker-0 && /bin/bash /userconfig/startBroker.sh api-node-broker-0"
        stop_signal: SIGINT
        ports:
            - '7902:7902'
        restart: 'on-failure:2'
        volumes:
            - './dockerfiles/catapult/userconfig/:/userconfig'
            - './bin/bash:/bin-mount'
            - '../config/api-node-0/resources/:/userconfig/resources/'
            - '../data/api-node-0:/data:rw'
            - '../state:/state'
    rest-gateway:
        image: 'symbolplatform/symbol-rest:2.1.0'
        user: '1000:1000'
        command: ash -c "npm start /userconfig/rest.json"
        stop_signal: SIGINT
        ports:
            - '3000:3000'
        volumes:
            - './bin/ash:/bin-mount'
            - '../config/rest-gateway/:/userconfig/'
            - '../state:/state'
            - '../data/api-node-0/logs:/logs:rw'
            - '../config/api-node-0/resources/:/usr/local/share/symbol/api-node-config/'
        depends_on:
            - db-init
        networks:
            default:
                ipv4_address: 172.20.0.25
```


バックエンドのDBにmongoを利用しているようですので、見てみましょう。

```
╭─murata@deroris ~/workspace/symbol-bootstrap
╰─$ docker exec -it 3a6e9434089f mongo --host db
MongoDB shell version v4.2.6
connecting to: mongodb://db:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("3b43f701-1285-4952-aecd-ad8d20787283") }
MongoDB server version: 4.2.6
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-user
2020-10-07T03:41:50.682+0000 I  STORAGE  [main] In File::open(), ::open for '//.mongorc.js' failed with Permission denied
Server has startup warnings:
2020-10-07T03:26:34.264+0000 I  STORAGE  [initandlisten]
2020-10-07T03:26:34.264+0000 I  STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2020-10-07T03:26:34.264+0000 I  STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2020-10-07T03:26:35.273+0000 I  CONTROL  [initandlisten]
2020-10-07T03:26:35.273+0000 I  CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-10-07T03:26:35.273+0000 I  CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2020-10-07T03:26:35.273+0000 I  CONTROL  [initandlisten]
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).

The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.

To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---

> show dbs
admin     0.000GB
catapult  0.001GB
config    0.000GB
local     0.000GB
> use catapult
switched to db catapult
> show tables;
accountRestrictions
accounts
addressResolutionStatements
blocks
chainStatistic
finalizedBlocks
hashLocks
metadata
mosaicResolutionStatements
mosaicRestrictions
mosaics
multisigs
namespaces
partialTransactions
secretLocks
system.profile
transactionStatements
transactionStatuses
transactions
unconfirmedTransactions

> db.blocks.find()[1]
{
        "_id" : ObjectId("5f7d3454df7bc516eb58a912"),
        "meta" : {
                "hash" : BinData(0,"2cVdlMlcyiYBRLzzpclZ2ANLWfL3vce1V8hi7CnIvow="),
                "generationHash" : BinData(0,"rkeUFpdmC4fZrCYxObkyeQSrlj9k1B6QgAox0vMUfYA="),
                "totalFee" : NumberLong(0),
                "totalTransactionsCount" : 0,
                "stateHashSubCacheMerkleRoots" : [
                        BinData(0,"1ELGYI3PPqoDY5knYbjTwvxwXJpYEO1lDrGSKoUbufE="),
                        BinData(0,"WItgg44O96iY48nblueKqhaOX2wfqzM40FZKNK5JxqY="),
                        BinData(0,"M+mWl+zE6xSshJabGbaI85fMqF7xeSEjuZrO5Q1G0NU="),
                        BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=")
                ],
                "transactionsCount" : 0,
                "transactionMerkleTree" : [
                        BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=")
                ],
                "statementsCount" : 1,
                "statementMerkleTree" : [
                        BinData(0,"Z0ufEOHNEBVnqCeVSHaS41LYu03BEbtKbdkh8nZsJLQ=")
                ]
        },
        "block" : {
                "size" : 376,
                "signature" : BinData(0,"GyLI2H2NlsuJNYlElOclFMW9uPskPwBdqGPbecV5hC36jrNOeW4ODAnu4VQYGWMVty1evLERNNk/DLun9skfBw=="),
                "signerPublicKey" : BinData(0,"qaYm+8VD0c2vPQYO8Xr6DwqdRv9FmwzOquUwKFnO3WU="),
                "version" : 1,
                "network" : 152,
                "type" : 33091,
                "height" : NumberLong(2),
                "timestamp" : NumberLong("28610513999"),
                "difficulty" : NumberLong("100000000000000"),
                "proofGamma" : BinData(0,"vwEBa7kdQ4F2Hi33BsRs5uE+Kb8nzyy8gupK3nK0p84="),
                "proofVerificationHash" : BinData(0,"sPnBVd/WfkmwWBLE3WjnTg=="),
                "proofScalar" : BinData(0,"oo/ECXdZlMAX0oBwD4XVNPYsIjHBnPWju/qR/TlkwQs="),
                "previousBlockHash" : BinData(0,"uZceveqEjWq+Ha7jWJOCqUiD0tH6wuQcqmiaEnAmhaw="),
                "transactionsHash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                "receiptsHash" : BinData(0,"Z0ufEOHNEBVnqCeVSHaS41LYu03BEbtKbdkh8nZsJLQ="),
                "stateHash" : BinData(0,"kX0vzAJKSIvvLLp81apc6p9Z+kBxllLe7SjcK+Fhajg="),
                "beneficiaryAddress" : BinData(0,"mP/mqbyaghJXKhjboProak1ZHZEZCU/V"),
                "feeMultiplier" : 0
        }
}
```

入っていますね。うまいことsymbol-serverが処理してくれるはずなので直接見ることはなさそうですね。


# まとめ

Dockerであればなんとか稼働はさせられそう。symbol-bootstrapを利用すれば、鍵の生成やノードの設定などを自動的に行ってくれるのでとりあえずAPI試したいって人には最適そうです。
起動しなかったら頑張れですが。