LoginSignup
5
0

More than 5 years have passed since last update.

LIVAでカタパルトを動かしてみる

Last updated at Posted at 2019-05-11

はじめに

nem2のSlackで、ラズパイでカタパルトノードが動くかみたいな話があった。たしか、結論として、難しいみたいな話だったと思う。

それがきっかけで、LIVAっていうミニPCを持っていたのを思い出した。

なので、これでカタパルトを動かしてみたいと思う。

LIVA

IMG_20190512_000942.jpg

CPU Intel Bay Trail-M SoC Celeron N2807
メモリ 2GB DDR3L
ストレージ eMMC 64GB

大きさは、スマホの箱くらいでしょうか。

価格は、2万円くらいだったと思います。

電源は5V/3Aで、端子がMicro USB形状なので、モバイルバッテリーでも動かした例があるらしい。

OSインストール

Ubuntu Server 18.04.2 LTSのISOをダウンロード

Universal-USB-Installerを使ってUSBインストール

ビルド

以下の公式手順に従ってコマンドをコピペする。

半日以上かかったが、エラーなくビルドできた。

作業ディレクトリは/home/livaだったので、バイナリは/home/liva/catapult-server/_build/binにできている。

liva@liva:~$ ls -l /home/liva/catapult-server/_build/bin/
total 374968
-rwxrwxr-x 1 liva liva   777832 May 11 09:17 bench.catapult.crypto.hashers
-rwxrwxr-x 1 liva liva   866408 May 11 09:17 bench.catapult.crypto.verify
drwxrwxr-x 2 liva liva     4096 May 11 09:15 boost
-rwxrwxr-x 1 liva liva  3324512 May 11 10:52 catapult.server
-rwxrwxr-x 1 liva liva  1045088 May 11 12:44 catapult.tools.address
-rwxrwxr-x 1 liva liva  1222352 May 11 12:44 catapult.tools.benchmark
-rwxrwxr-x 1 liva liva  2498432 May 11 12:44 catapult.tools.health
-rwxrwxr-x 1 liva liva  3106376 May 11 12:44 catapult.tools.nemgen
-rwxrwxr-x 1 liva liva  2306168 May 11 12:44 catapult.tools.network
-rwxrwxr-x 1 liva liva   752152 May 11 12:44 catapult.tools.statusgen
(省略)

設定

起動するためのファイル類を作っていく。

今回は、このマシンだけのプライベートチェーンで、Peerノードしか立てない。なのでトランザクションを投げる手段がないが、とりあえずやってみる。

catapult1
├── data
├── nemesis
│   └── block-properties-file.properties
├── nemgen.sh
├── start.sh
└── userconfig
    └── resources
        ├── config-database.properties
        ├── config-harvesting.properties
        ├── config-logging.properties
        ├── config-messaging.properties
        ├── config-networkheight.properties
        ├── config-network.properties
        ├── config-node.properties
        ├── config-pt.properties
        ├── config-task.properties
        ├── config-timesync.properties
        ├── config-user.properties
        ├── peers-api.json
        └── peers-p2p.json

特に変えたものを並べてみる

nemgen

catapult-service-bootstrapを参考に組み立てる

nemgen.sh
#!/bin/bash

PATH=/home/liva/catapult1

/bin/mkdir -p ${PATH}/data/seed/mijin-test/00000
/bin/dd if=/dev/zero of=${PATH}/data/seed/mijin-test/00000/hashes.dat bs=1 count=64
/home/liva/catapult-server/_build/bin/catapult.tools.nemgen --nemesisProperties ${PATH}/nemesis/block-properties-file.properties --resources ${PATH}/userconfig/
/bin/cp -r ${PATH}/data/seed/mijin-test/* ${PATH}/data

ネメシスブロックの出力先を指定する

block-properties-file.properties
...
[output]

cppFile = 
binDirectory = /home/liva/catapult1/data/seed/mijin-test
...

server

同様に

start.sh
/home/liva/catapult-server/_build/bin/catapult.server /home/liva/catapult1/userconfig

データファイルの場所を指定する

config-user.properties
...
[storage]

dataDirectory = /home/liva/catapult1/data
pluginsDirectory = 

実行

nemgen

うまくいった

2019-05-11 13:36:29.095706 0x00007f468b37c380: <info> (nemgen::main.cpp@87) *** Nemesis Summary ***
           Height: 1
  Generation Hash: C6871CB9FA666FF20B93DCE6D7E25196EFBAFDFF3989AC00C76BD8E1DCEE9AEE
Transactions Hash: 814C8164E99927A30BD6D06212EB10D1A5C3F6A4458045B40E0AD7FDF702117F
    Receipts Hash: 6419DD8BAA202763D1B5946F877C9B728F344D7A5365FBC3622CB049EB7B88A5
       State Hash: E20FE3D20B709572558E21C13A99BF7CFE66D3BED9C4BF082AAE0E6FC1A95612
--- Components (7) ---
 + 13067B2FEB08F5C99547B4A5C30D9581D1D8E22F817A542AEF8E02684CADA2DC
 + 7EA827EB9A862C95EED988E3D5757C7B0F23BC99757FF6925F6FCC4447C6B864
 + 1CA8F8AB2C2513B1ADFE050AB85C91D648837A52B82A19A69A9DBFCC78405B51
 + 0000000000000000000000000000000000000000000000000000000000000000
 + 0000000000000000000000000000000000000000000000000000000000000000
 + 0000000000000000000000000000000000000000000000000000000000000000
 + 0000000000000000000000000000000000000000000000000000000000000000

server

うまく読み込んだ

2019-05-11 13:37:28.029640 0x00007fd537d7b000: <info> (extensions::NemesisBlockLoader.cpp@54) 
      nemesis network id: Mijin_Test
      nemesis public key: 7F78559C556642FE132616910B1C9F2C36BC144D2D3A9E909092D64A0D0DE0DE
 nemesis generation hash: C6871CB9FA666FF20B93DCE6D7E25196EFBAFDFF3989AC00C76BD8E1DCEE9AEE 
2019-05-11 13:37:28.039450 0x00007fd537d7b000: <debug> (utils::StackLogger.h@35) pushing scope 'PosImportanceCalculator::recalculate' 
2019-05-11 13:37:28.039711 0x00007fd537d7b000: <debug> (observers::PosImportanceCalculator.cpp@67) recalculated importances (11 / 35 eligible) 
2019-05-11 13:37:28.039835 0x00007fd537d7b000: <debug> (utils::StackLogger.h@41) popping scope 'PosImportanceCalculator::recalculate' (0ms) 
2019-05-11 13:37:28.039997 0x00007fd537d7b000: <info> (extensions::NemesisBlockLoader.cpp@76) Nemesis Mosaics:
      C 119E15661E9B2758: 8999999998000000
      H 2AECBFD76AE7411B: 17000000 
2019-05-11 13:37:28.046273 0x00007fd537d7b000: <info> (extensions::NemesisBlockLoader.cpp@54) 
      nemesis network id: Mijin_Test
      nemesis public key: 7F78559C556642FE132616910B1C9F2C36BC144D2D3A9E909092D64A0D0DE0DE
 nemesis generation hash: C6871CB9FA666FF20B93DCE6D7E25196EFBAFDFF3989AC00C76BD8E1DCEE9AEE 
2019-05-11 13:37:28.050569 0x00007fd537d7b000: <debug> (utils::StackLogger.h@35) pushing scope 'PosImportanceCalculator::recalculate' 
2019-05-11 13:37:28.050714 0x00007fd537d7b000: <debug> (observers::PosImportanceCalculator.cpp@67) recalculated importances (11 / 35 eligible) 
2019-05-11 13:37:28.050776 0x00007fd537d7b000: <debug> (utils::StackLogger.h@41) popping scope 'PosImportanceCalculator::recalculate' (0ms) 
2019-05-11 13:37:28.050870 0x00007fd537d7b000: <info> (extensions::NemesisBlockLoader.cpp@76) Nemesis Mosaics:
      C 119E15661E9B2758: 8999999998000000
      H 2AECBFD76AE7411B: 17000000 

祝、ブロック生成

2019-05-11 13:37:58.303949 0x00007fd5117fa700: <debug> (consumers::BlockChainProcessor.cpp@49) cache state hash (7 components) at height 2
4EAD940B032801AA7ACA4AD6E42955BB696C1F7582E0E5F624DFA23A5FDF2F7D
 + 54B46FB6BD08EA549C78CCFF1893B1B6CD060690522FC95D0B37320F39C41433
 + 7EA827EB9A862C95EED988E3D5757C7B0F23BC99757FF6925F6FCC4447C6B864
 + 1CA8F8AB2C2513B1ADFE050AB85C91D648837A52B82A19A69A9DBFCC78405B51
 + 0000000000000000000000000000000000000000000000000000000000000000
 + 0000000000000000000000000000000000000000000000000000000000000000
 + 0000000000000000000000000000000000000000000000000000000000000000
 + 0000000000000000000000000000000000000000000000000000000000000000 
2019-05-11 13:37:58.378151 0x00007fd510ff9700: <debug> (consumers::NewBlockConsumer.cpp@53) forwarding a new block with height 2 
2019-05-11 13:37:58.378641 0x00007fd510ff9700: <info> (disruptor::ConsumerDispatcher.cpp@43) completing processing of element 1 (1 blocks (heights 2 - 2) [4D699175] empty from Local), last consumer is 0 elements behind 

おわりに

普通にできた。

次があれば、100万ブロックくらいの同期だったらどうなるか、APIノードにしたらどうなるか、とかを試してみたい。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0