Symbolモバイルノード 運用方法 まとめ
2023年9月に、スマホで運用が可能な『Mobile Node powered by Symbol』がリリースされました。
こちらで構築できるノードはSymbolブロックチェーンのすべてのブロックデータを保持するフルノードです。(Peerノード)
💻開発者:tqm
以前楽天モバイルで新規契約にて1円で入手できる端末をいざというとき用のサブ機として保管してあったのですが、確認してみるとAndroidバージョン11だったので、興味津々だったモバイルノード、実行してみましたのでまとめておきます。
[推奨環境・スペック/使用環境]
今回使用したサブスマホはAQUOS sense4 lite。
OSはAndroid10だが現在12までアップデート可能
[使用環境]
・RAM 4GB LPDDR4X
・オクタコア(8コア)
・ストレージは外部メモリとして256GBのmicroSDを使用
・ネットワークは自宅Wi-Fi
💡外に持ち出す際はテザリングでも問題ないのでキャリア契約はしなくても大丈夫そうです。
スマホは1円で入手済み、microSDは2500円ほどでTranscendのクラス10のものを購入
スマホ同機種は中古10000円~新品35000円ほどの価格帯で購入可能
💡外部メモリの空き容量はもちろんですが、本体ストレージの空き容量に余裕がないと同期する際に端末の処理速度が低下する可能性があるため、ある程度の空き容量を確保するとエラーが起こるリスクを下げられます。
本体空き容量が不足し、処理性能が低下することで「致命的なエラー」となってアプリが正常に機能しない場合があります。
🟪事前準備
🟣ノードアドレスの準備
ノードを運用するSymbolアドレスが必要になります。
メインネットで構築するならメインネットのアドレス(Nから始まる)
テストネットで構築するならテストネットのアドレス(Tから始まる)
アドレスを用意しましょう。
既存のアドレスを使用することも可能ですが、ノード構築時に🗝️秘密鍵の入力が必要になるため、新規で作成することでリスクを下げることをおすすめします。
🗝️秘密鍵のバックアップは必ず実施。
ノード構築時にアドレスと🗝️秘密鍵が必要になりますので控えておきましょう。
💡テストネット上でノード構築を試す際にモバイルのみで実施する場合、テストネットアカウントを新規作成するツールとして以下を活用してください。
Symbol Account Generator
テストネットアドレスを作成できるWEBツールです。
【Generate Account】を選択することで新規テストネットアドレスを生成し、アドレスと秘密鍵が表示されます。
サイト下部にテストネットのエクスプローラとフォーセット(蛇口)へのリンクもあります。
aLice
モバイル署名アプリとして各アプリストアにリリースされています。
アプリ上でネットワークタイプを選択してアドレスを新規で作成することが可能です。
アプリ詳細や導入方法は以下記事を参考にしてください。
🟣ノード運用に必要なXYM
ノードを運用するだけの場合は、残高が0XYMでも構築可能です。
ノード上でハーベストを設定できるようにするためには、設定時のトランザクション手数料が必要なため1XYMあれば十分設定可能です。
ノードアドレス自身でハーベストを実施する場合は10001XYM以上あれば設定可能です。
❗ノードアドレス自身でハーベストを実施する場合は10001XYM以上の残高保有のうえ、『ハーベスティングの有効化』のセットアップを完了しておくだけで、その後の作業は必要ありません。
🟣前提知識
ウォレットアプリ等を用いて新規アドレスが作成できる
(デスクトップウォレットがなくてもノード構築は可能です)作成したアドレスの🗝️秘密鍵を取得できる
🗝️秘密鍵の重要性を理解している
作成したアドレスにXYMを送金できる
(ハーベスティングを有効化する場合)
ノードの役割を理解している
チェーンデータの保存、共有等でチェーンの存続と堅牢性を支える基盤
参考)ブロックチェーンのノードってなに?スマホの⚙️設定画面等から基本的な操作ができる(調べながらでもOK)
🟣運用にかかるリスク
⚠️メインネットで実施する場合は、資産価値のあるXYMを使用することになるため、端末のウィルス感染等によりノード設定時に用いた秘密鍵が流出する可能性があります。
そのため、信頼できないアプリの導入を避けるなど、端末を扱う上での一般的なセキュリティリスクを考慮する必要があります。
サブ機や機種変更により不要となった端末で実施する場合は一度端末を初期化し、不要なアプリが残っていない状態で実施するとよりセキュアに運用できます。
⚠️端末を常時起動させておくことになるため、スマホ端末やバッテリーに常時負荷がかかる状態になります。
この場合の、どの程度の負荷でありどの程度端末やバッテリーの寿命を縮めてしまうのかといったリスクは未検証です。
感覚としてはバッテリーの消費も激しいものではなく、負荷は大きいものではないと感じていますが、運用する際に考慮が必要です。
『バッテリー消費量』の項目に私の運用状況での消費量も記載していますので参考にしてください。
⚠️ストレージ容量に関しては、メインネットローンチから2年半経過した現在(2023年10月)では70~80GB程度となっていますが、チェーンの需要が増えトランザクションが増加した場合、1ブロック当たりの容量も大きくなります。また、長期間続ける際にはストレージの空き容量が不足すると正常に機能出来なくなってしまいますので、さらに大容量のストレージを用意したうえでデータの移植等を実施する必要が出てきます。
⚠️接続しているネットワークが不安定な場合、最新ブロックの同期に時間がかかりハーベストを有効にしても収穫が得られない可能性があることにも注意が必要です。
🟦アプリ導入~ノード構築
⏩GooglePlay版と⏩サイドローディング版がありますが、
それぞれの特徴として、メインネットでノードを実行する際の月額費用を支払う通貨に違いがあります。
サイドローディング版はアプリストアを介さずアプリを導入する方法ですが、機種によってはセキュリティの⚙️設定を一時的に変更する必要があります。
参考)Android でのアプリのサイドローディング
🔵アプリ導入
今回はGooglePlayからアプリを入手してすすめていきます。
アプリ入手後、事前準備としてmicroSDカードをセット
⚙️ネットワーク設定からインストールしたアプリのバックグラウンドデータの使用を許可。
これによりアプリを閉じてもネットワークの接続を維持しノードが稼働できるようにします。
また、バッテリー残量が少ない場合、機種ごとのデータセーバー等が影響するとブロック同期等に遅延が発生する恐れがあるため、データセーバーをオフにするか、モバイルノードアプリを対象から除外しておきます。
💡後程PC等でバックアップを作成する場合、フォーマットタイプがFAT32等では4GB以上のデータ転送ができないため、フォーマットタイプがexFATのものか、exFATに再フォーマットしてから進めましょう。
インストール後アプリを起動するとPW設定を求められます。
PW設定後、ターミナル画面(俗にいうホーム画面的な)が開きますが、このときファイルアクセス権限を付与するかどうかポップアップが出ます。
ノードはブロックデータを保存する必要があるので、データのDLおよびアクセスの権限が不可欠になります。
必ず権限を付与しましょう。
(付与しない、としてしまった場合等はアプリを閉じて再度起動することで再度ポップアップが出ます)
💡アプリストアに記載されている通り、基本的にはアプリを介したデータ収集はされません。
🔵ノード構築
早速ノードを構築していきます。
画面下部のメニュー右のハンバーガーマーク(︙≡)をタップし、Setting(設定)に進みます。
Setting画面一番上のノードの構築を選択します。
構築するノードのネットワークタイプを選択します。
メインネットとテストネットがありますが、メインネットは月額費用の支払いが必要、テストネットは無料なため、まずは使用環境で問題なく動作するかどうかをテストネットで運用確認できてからメインネットで構築することをおすすめします。
続いてブロックチェーンのデータを保存する場所(作業フォルダ)を指定します。
💡データを保存したり作業するフォルダのことをディレクトリとも呼びます。
基本的に、本体ストレージ画面等が開くかと思いますが、左上メニュー等から外部ストレージ(SDやSSD)を選択しましょう。
⚠️本体ストレージでも実行可能ですが、空き容量に注意しましょう。
外部ストレージ使用時に誤って本体ストレージを指定しないように注意!
複数のデータを扱うためいろいろなフォルダが存在するSD直下は指定できません。
新しくモバイルノード用のフォルダを作成し、そちらを指定しましょう。
わかりやすく「SymbolMobileNode」とう名前のフォルダを作成しました。
⚠️フォルダ名に日本語を含めることはできません。
事前準備で用意したノード用アドレスの🗝️秘密鍵を入力します。
入力ミスがあった場合ノードの構築に失敗してしまいますので正確に入力orコピペ。
ホストネームとフレンドリーネームを指定します。
こちらはIP等ではなく好みで入力して問題ないそうです。
ホストネームにグローバルIPアドレスを指定した場合は、稼働ノード一覧から自身のノードを見つけることが出来ます。
⚠️グローバルIPアドレスを入力する場合は端末からモデム直ネットワークに接続などはせずルーターを使用する、IPを固定しない等の注意は必要です。
参考)IPアドレスとは? | 関連セキュリティ情報やIP確認方法
⚠️固定IPアドレスを設定した場合にはSymbol node mapにおおよその位置が表示されるため、住居の特定リスクが少なからずある点も注意が必要です。
IPアドレスを使用しなくても、ネットワーク上の自身のノードの存在を確認する方法はありますが、おおまかな住居地の公開をしたくない場合は任意の文字列で構築するといいでしょう。
フレンドリーネームは空欄でも問題ありませんが、ノード一覧から確認する際、一覧では一部運用を停止しているノードも表示されてしまうため、運用中であることをわかりやすくするために「mobile」の単語を入れておくのもおすすめです。
また、どちらもノード構築後に変更することが可能です。
今回はIPではなく独自の文字列で構築しました。
ホスト名:nononon
フレンドリーネーム:nononon mobile
これで、Terminalからノードを起動できるようになりましたが、ハーベストを実施したい場合はノードを起動する前にそちらの設定をしておくといいです。
※メインネット運用の場合、ハーベスティングの有効化の前に月額費用の支払いが必要です。
🔵メインネット運用の場合
メインネットでノードを起動、ハーベスティングをする場合、月額費用を支払い、メインネット機能をアンロックしておく必要があります。
テストネットで実行する場合はこの項目は飛ばしてしまって問題ありません。
月額費用がかかるため、テストネット上で安定動作の確認がとれてからアンロックをするようすすめられています。
テストネット上で未確認にも関わらずメインネットで稼働させ正常運用できなかった場合はもちろん返金等の実施はできないものと思われますので、しっかりと確認してからアンロックしましょう!
Google Playを介して定期購入の支払いを実施します。
🔵ハーベスティングの有効化
ノード上でハーベストを実施できるようにするために必要な設定です。
ノードが稼働している状態だと正常に実施できないため、動かし始める前、すでに動かしている場合は一度停止してから設定します。
⚠️各項目に入れ込む文字列を誤るとノード起動初期にノードがクラッシュし正常に起動できない恐れがあります。
秘密鍵やアドレスを入力する際は間違いがないか入力後にしっかりと確認しましょう。
💡ノード起動初期に「致命的なエラー」となってしまった場合はこちらの「ハーベスティングの有効化」をやり直してみましょう。
(無効化せずそのまま上書きできます)
ネットワーク上にトランザクションを送信する必要があるため、ノードアドレスに1XYM程度以上の残高があるか再度確認のうえ進めていきます。
10001XYM以上の残高があればノードアドレス自身でハーベストを獲得することが出来ます。
ネットワークを選択します。
ノード構築時と同じネットワークタイプを選択しましょう。
ハーベスティング種別を選択します。
ローカルハーベスティングとリモートハーベスティングがありますが、特に理由がなければリモートハーベスティングを選択することがおすすめです。
ローカルハーベスティングの場合、ノードの設定ファイル内に🗝️秘密鍵を生で置いておく必要があり、端末がウィルスに侵されたり不正アクセスを受けた場合の秘密鍵流出リスクが高まります。
Symbolドキュメントにも特徴が書かれていますので引用しておきます。
リモートハーベスティングですすめていきます。
ノード構築時と同様、ノードアドレスの🗝️秘密鍵を入力します。
ハーベスティング受益者アドレスを設定します。
💡受益者アドレスとは、ノードがブロックを獲得(ハーベスト)した際のノード報酬(ハーベスト報酬の25%)を受け取るアドレスのことです。
一般的にはノードアドレスを指定しますが、別のアドレスで報酬を受け取りたい場合はノードアドレス以外のアドレスを指定することも可能です。
💡受益者アドレスを設定しない場合、ノード報酬とされる25%は徴収せず、ハーベストを獲得したアドレスに送られます。
受益者アドレスは後から変更することができます。
デリゲートハーベスタ(委任)を受け入れる最大数を設定します。
デフォルトは10となっていますが、上限はありません。
ただし、実際に受け入れ人数が多すぎる場合はノードの負荷が大きくなり稼働が不安定になる恐れがあると言われています。
既存のノードは10~100程度で設定されているノードが多いです。
受入数は後から変更することができます。
⚠️ハーベスティングの有効化一連の設定によりノードアドレスのハーベスト設定も完了しますが、リモートハーベスティングを選択した場合、ノードアドレス自身も委任枠を1枠消費します。
そのため、受入数を0で設定してしまうと正常にノードを起動できなくなってしまうため、1以上の受け入れ枠を設定しましょう。
デリゲートハーベスタを受け入れる優先順位付けのルール選択をします。
これは、委任者が上限を超える場合にどのようなルールで委任受付をするかというものになります。
インポータンス順
重要度の高い≒XYM残高の高いアドレスを優先する方法。
例)上限10の委任枠が埋まった状態で、委任中のアドレスよりも残高の多いアドレスがそのノードに委任設定をした場合、委任中アドレスのうち最もインポータンス(≒残高)の低いアドレスが追い出され、後から委任したアドレスが委任される。
追い出されたアドレスは委任が解除されるため、再度委任できるノードにハーベスト設定をしなければハーベストに参加できなくなる。
先着順
重要度に関わらず、委任した順番を優先する方法。
委任済みのアドレスが追い出されることはなく、上限数を超えた委任申請は受け付けない。
ノードに委任されている合計XYM残高が高いほどハーベストの獲得確立は上がるため、インポータンス順はノード主体の設定、先着順は委任者主体の設定という見方もできます。
(ただし、委任したら放置で委任状態を確認しないことは確認の手間は省けますが、ノードやネットワークに関連する情報収集がおろそかになるデメリットもあるため一概にどちらがいいというものではありません)
各項目に✅がつくのを待ちます。
この際の項目『キーリンク』時に、ハーベスト設定に必要なキーをSymbolチェーンに登録するトランザクションが発行されています。
⚠️ノードアドレスの残高が不足している場合や、メインネットで実行する際に機能のアンロックをしてない場合はキーリンクトランザクションが飛ばずに設定を完了することができません。
ちなみに私が設定した際のトランザクション手数料は0.0344XYMでした。
この設定を実施する際にデスクトップウォレット等を開いておくと、実際にトランザクションが発行、承認される状況を確認することが出来ます。
(チキーン★が聞きたいだけ)
無事キーリンク、有効化まで✅が入ったら『完了』をタップ。
🟩ノードの起動
ノードの構築、ハーベスティングの有効化が完了したらいよいよノードを起動させてSymbolブロックチェーンのデータを取り込んでいきます。
ブロックチェーンはP2Pネットワーク上に構築されており、ノードの土台を構築した後に、データを保持し、他のノードと繋がることではじめてネットワークに参加することができます。
参考)P2P(ピアツーピア)とは?仕組みやメリット、活用事例を紹介
また、ハーベスティングは最新ブロックを収穫することですので、ノードの同期が最新ブロックに追いつくまではハーベスティングは実施されません。
🟢起動~同期開始
ノードを起動するためには、ターミナル画面左下の、『Server』をタップし、スライドボタンをオンにしましょう。
ノードを起動するとターミナル画面にログが流れていきます。
また、ターミナル画面右上のServerがBooting(起動中)となり、起動完了するとRunning(実行中)となります。
下部メニュー左のBlock sync画面より、ブロックデータのダウンロードおよび同期状況が確認できます。
同期とは複数の異なる端末同士で保持しているデータを同じ状態に保つことです。
上部の『Chain Height』が、現在同期が完了しているブロック高の目安になります。
ブロックの同期は、およそ50秒~2分ごとに360ブロックずつ進んでいきます。
Symbolのメインネットは2023年10月現在で、およそ2740000ブロックありますので、最新ブロックまで同期が完了するまでには単純計算で105.7時間。
最短でも、日数にして4.4日程度待つ必要があるようです。
💡同期ペースが遅くなる場合、ブロックデータが大きいゾーンの可能性もありますが、端末内に不要なメモリが蓄積し、スペックが低下している可能性があるため、一度ノードを停止▶端末再起動▶ノード起動をするとペースが回復する場合があります。
⚠️スマホのスペックが低い場合や、ネットワークが不安定だったり速度が遅いとさらに多くの時間が必要になる可能性があります。
また、バッテリー駆動状態で同期を進めると本来の性能を発揮できない可能性がありますので、充電器につないだまま進めましょう。
参考までに、目次項目の『同期完了までの期間』の項目に今回実施してみた結果を記載しておきます。
また、私のWi-Fiのネットワーク速度はGoogleのスピードテストでこちらになりますので参考までに。
🟢ノード停止時の対応
ネットワークが不安定になる等でブロック同期が進行しない場合も、一度ノードを停止させて再度起動しなおすことで同期が再開されることがあります。
1~2分待っても同期されたブロック高に変化が見られない場合はノードを一度停止し、再度起動してみてください。
…同期進行させたまま仕事に行って、帰ってきたらターミナル画面に何も表示されておらず、ノードが停止していたときがありました。
ターミナル画面が真っ黒で、左下のノードスライドボタンがオフの状態になっており、再度『ノードの起動』を試しても数行で『ノードが停止』してしまっていました。
※当時の画像を使用しています。
よく見ると、右上のステータス『Recovery』が、普段は『Inactive』だった部分が『Redey』となっています。
試しにノードボタンの右側の『修復』を実行。
『Ready』が『Running』となり、レコードが表示されなくなってから再度ノードを起動を試したところ、ブロックのダウンロードおよび同期が再開し、ノードの起動が出来ました。
最新ブロックまで同期が完了するとブロックのダウンロードも360ブロックずつではなく1ブロックずつになります。
無事、最新ブロックまで同期が完了しハーベスティングが実施できるようになりました。
ノードアドレスの残高が10001XYM以上ある場合、『ハーベスティングの有効化』を実施してあれば特に追加の作業は必要ありません。
⚠️端末のバッテリーが0%になり、突然処理が落ちてしまうとブロックデータ等が破損してしまう恐れがあります。
『修復』で復旧可能な場合もありますが、端末を再起動したい場合やOSのアップデート等を実施する場合は一度ノードを停止させてから実施すると良いかと思います。
🟢修復を行っても起動できない場合
なんらかの原因でノードがクラッシュ後、通常のノード停止時には本来残らないはずの『.lock』ファイルが残ってしまい、ノードを起動できなくなってしまうことがあります。
この時、ターミナル上にはロックファイルのオープンに失敗した旨のログが残ります。
その際は、起動を妨げている『.lock』ファイルを削除し、Recovery(修復)▶Server(起動)することで復旧させることが可能な場合があります。
lockファイルの削除は、スマホ内のデータを表示するファイルマネージャーなどのアプリで実施できます。
ファイルマネージャーは標準装備されていることが多いですが、見当たらない場合、設定▶ストレージ▶本体orSDorSSD(ノードデータの保存場所)を選択することで見れることが多いです。
『.lock』ファイル要因によるログ(画像提供:oicoimo4さん)
[~~.lock]ファイルの削除が完了したら、再度『修復』▶『起動』を試してみましょう。
lockファイルを削除してもエラーにより起動できない場合は、ブロックデータが破損してしまっている可能性が高いです。
その場合はSetting画面からブロックデータの削除を行い、⏩スナップショットファイルを用いるか、いちからブロックデータのダウンロード、同期をする必要があります。(後述するバックアップを行うことで素早く復旧が可能になります。
🟢同期完了までの期間
ノードの初回起動当初は4.5日ほどで完了する見込みでしたが、仕事中に家で放置していたので途中丸一日同期が止まってしっていたことが2回あり、最終的には9日間、止まっていた日を除いて7日間(時間にしておよそ170時間)かかりました。
また、常時充電を推奨されていたものの一部バッテリー駆動で同期を進めていた影響もあるかと思います。
チェーンが長くなれば長くなるほど同期にかかる時間も伸びることが予想されますし、実行環境によっても変動する部分は大いに有り得るので、この期間に関しては参考程度としてください。
💡同期済みのブロックデータを予めPC等でダウンロードし、SD(or SSD)へ配置することで同期を高速化するFast syncもテストされているようです。
同期済みのブロックデータ(スナップショット)を開発者のtqmさんが提供されています。
⏩スナップショットファイルのダウンロード
💡数字の一番大きいファイルが最新のものになります。
フォルダ内のZIPファイルをDLしましょう。
ZIP内は[data]フォルダがそのまま入っているので、展開先をノードフォルダ内に選択しておくと良いです。
スナップショットデータを使用することで、スムーズに同期が進めば1日程度で同期が完了するようです。
(データが大容量のためPCのスペックによっては解凍時間も数時間かかるる場合があります。)
ノードフォルダ内の構成はこのような形です。
🟢バッテリー消費量
サブ機、普段使いせず家に放置した状態のバッテリー消費量をメモしておきます。
また、同期中の発熱等も特にみられませんでした。
参考までに🙌
🟨ノードの運用
ノードの同期が完了し、最新ブロックを刻むようになった後は、ノードを継続運用していくにあたって以下を参考にしてください。
⚠️小見出しに「⚠️」がついているものはまだ私が実際に実施したことのないものになります。
🟡ノードの確認
実際にネットワーク上にノードが存在するかどうかの確認ですが、一般的なAPIノードの場合ノードURLを指定してノード状況が確認できます。
モバイルノードで構築するPeerノードはブロック情報の保存とノード間の橋渡しをする役目のため、APIを用いて情報を開示する機能がありません。
そのため、ノードがネットワーク上に存在するかどうかの確認は他のノードを介してP2P接続が出来ているかどうかを見る形になります。
下記のノード一覧では、おそらくP2P経由で取得できるノードを表示しているため、peerノードも確認することが出来ます。
🌟mikunさんがPeerノードを一覧で見れるサイトを作成されました!
Peerノードのみをメインネット、テストネットそれぞれ一覧で表示してくれます。
同期がスタートしP2P上にノードが確認されると表示されるようになりますので、自身の設定したホスト名やフレンドリーネームを探してみましょう。
(名称変更の反映には少し時間がかかる場合があります)
ノードリストからの確認
また、Peerノードのブロック高を取得するスクリプトをクルポさんが公開されています。
ホスト名をドメイン名やIPアドレスに指定しており、インターネット上でノードを検知できる状態であればPeerノードの情報取得が可能です。
MimosaHarvestasyaさんから、Peerノードの各種情報を取得する方法がGithub上に公開されています。
こちらもホスト名をドメイン名やIPアドレスに指定する必要があります。
🟡テストネットからの切替
テストネット上でノードを構築し、正常な動作が確認できた後、メインネットに移行する方法を記載しておきます。
⚠️メインネットでの運用は月額費用の支払いが必要です。
メインネット機能のアンロックを実施してから進めていきましょう。
⏬テストネットノードを残したい場合
一度ノードを停止させ、再度『ノードの構築』からメインネットを選択。
各種データを格納する作業フォルダを選択する際、テストネットとは別で新しくフォルダを作成し、そちらを指定します。
あとはテストネットで試した方法でメインネットでのノード運用が可能です。
ノード情報はすべて作業フォルダ内に格納されるため、作業フォルダを切り替えることでネットワークの変更が可能になります。
メインネットとテストネットを切り替える際は、一度ノードを停止し、画面右下のファイルマークを選択、作業ディレクトリを実行したいネットワークのノード情報が入っているものを選択し、起動することで可能です。
⏬テストネットノードを残さない場合
一度ノードを停止させ、『全データの削除』を行い、テストネットで実施した方法でメインネットを選択していきます。
ストレージの空き容量を確保したい場合などはこちらで実行しましょう。
🟡ノードのメンテナンス
端末によってはメモリの圧迫等によりパフォーマンスが低下し、意図せずノードが停止する可能性があります。
これを避けるためには、週に1回程度、一度ノードを停止し、端末を再起動、再度ノードを起動させることでメモリが開放されパフォーマンスの低下を防ぐことが出来ます。
その他、1年以上継続して運用する場合、SSL証明書の更新等が必要になります。
🟡ノードデータのバックアップ
バックアップを取っておくことで、万が一ノードがクラッシュし再起不能となった際にバックアップデータを用いてノードを再構築することが可能です。
ノード稼働のみであれば再度一から構築・同期を進めれば問題ないですが、長期運用・委任集めをする場合は、ノードの稼働状態が委任者にも影響が出るため、速やかに復旧できるよう、一定期間ごとにバックアップをとるといいでしょう。
✅初回にバックアップしておくべきファイル
・[data]フォルダ内の[harvesters.dat]
⚠️委任者が居る場合のみ
・[certificates]フォルダ
・[resources]フォルダ
・[seed]フォルダ
これら作業フォルダと同名称のフォルダに保存しておきましょう。
ブロックデータに関しては、tqmさんがdataフォルダ内のブロックデータをCloud上にUPしてくださっているので、そちらを⏩ダウンロード、解凍し格納しておきましょう。
💡数字の一番大きいファイルが最新のものになります。
フォルダ内のZIPファイルをDLしましょう。
ZIP内は[data]フォルダがそのまま入っているので、展開先をノードフォルダ内に選択しておくと良いです。
✅2回目以降のバックアップ
・[harvesters.dat]の最終更新日が変更されていれば都度バックアップ
💡委任者が増減した場合に更新されるため
ブロックデータに関してはある程度のブロック高のデータを保持できていれば、最新ブロックまでの同期完了期間を短縮することが出来るため、都度実施しなくても問題ありません。
⚠️SSDの場合、一度スマホとのマウントを解除し、PCへ接続する必要がありますが、本体ストレージおよびmicroSD内で構築した場合はUSBケーブルを用いてPS→スマホ内のデータへアクセス&コピーが可能です。
⚠️SSDおよびSDを取り外す際は
⚙設定▶ストレージ▶マウントの解除
を必ず実施してからSD(orSSD)を取り外します。
大容量のデータを扱うため、解除せずに外すとデータが破損してしまいます。
✅バックアップデータから復旧する際
SDorSSDをPCと接続し、データが破損している元のノードデータは削除しましょう。(アプリ上から全データの削除でもOK)
バックアップデータをSDorSSD内にコピーし、完了したらアプリを起動します。
ターミナル画面にて【Recovery】実行。
完了後【Server】で起動すれば、これまでと同じノードの再構築が完了します。
🟡各種パラメーターの変更
アプリ上からノードやタスクの各種パラメーターの設定を変更することができますが、ノード実行中は変更が出来ないようになっていますので、設定を変更する場合はノードを一度停止してから操作しましょう。
停止後再度起動することで同期済みの最新ブロックから同期が再開されます。
ノードの各種パラメーターは基本的に変更不要ですが、どのようなものがあるかはSymbolドキュメントを参考にしてください。
参考)Symbolドキュメント-ガイド-ノードプロパティ
💡初回ノード起動前に『ハーベスティングの有効化』を実施していなかった場合も、ノード実行中は有効化の処理を行えませんので、一度ノードを停止してから設定する必要があります。
🟡機種変更時の対応⚠️
スマートフォンの寿命は2年~3年ほどと言われています。
端末やバッテリーの劣化により機種変更を行う際は、各種データを保存しているSD(orSSD)を差し替えることで移植が可能です。
新しい端末で、以前の端末と同じGoogleアカウントでGooglePlayStoreからアプリをダウンロードします。
(サイドローディング版の場合はアカウントの指定はなく、データのDLと起動で問題ありません。)
旧端末上でノードを一度停止します。
完全に停止したら、大容量のデータの破損を防ぐために
⚙設定▶ストレージ▶マウントの解除
を必ず実施してからSD(orSSD)を取り外します。
取り外したSD(orSSD)を新端末に差し込みます。
『Mobile Node powered by Symbol』アプリを起動し、ファイルマークを選択し、旧端末で指定していたSD(orSSD)内のフォルダを選択します。
再度ノードを起動することで、新端末にて同じノードを実行することができるようになりました。
もし、ノードが正常に起動せず停止する場合は『ノード停止時の対応』項目にある『Recovery』を実行することで起動できるようになる可能性があります。
🟡アプリの切り替え⚠️
GooglePlay版とサイドローディング版間でノードの移植が可能とのことです。
GooglePlay版とサイドローディング版は決済方法以外の機能差は”今のところ”ありません。
※差別化を図ったり機能差分を持たせて実験的な機能を入れたりする可能性もあるそうですが、メインの目的は、提供ストアの分散化とのことです。
切り替え方法は、ノードを一度停止したあと、もう一方のアプリをインストール。
切り替え先のアプリ上で作業フォルダを指定し、ノードを起動するだけです。
⚠️実際に試していないので検証できていません。
試される方は必ずデータのバックアップを取ってから行ってください。
検証された方は教えていただけると嬉しいです!
⚠️ノード停止後、切り替え前のアプリのアンインストールを実施の上、切り替え先のアプリをインストールしたほうがいいかもしれません。(憶測)
⚠️メインネット機能を開放している場合は、Google Play版からサイドローディング版へ切り替える際のPlay store上の定期購入の解除を忘れないようにしましょう。
⚠️画像等は実際に実行してみた際に追加していく予定です。(未定)
🟡SSL証明書の確認と更新⚠️
PeerノードのSSL証明書の有効期限はおよそ1年間に設定されています。
長期間運用する場合はSSL証明書の有効期限が切れる前に更新する必要があります。有効期限の1か月程度前には更新するよう意識しておきましょう。
⚠️更新せずに証明書の期限が切れてしまった場合、ノードは他のノードと同期することが出来ず単体でフォークしてしまい無効なノードとなります。
ノード構築した日=最初のSSL証明書発行日です。
SSL証明書有効期限の確認方法
メニューから『Info』を選択し、『SSL証明書』を選択することで現在のSSL証明書の有効期間を確認することが可能です。
SSL証明書の更新はノード実行中には操作できないため、一度ノードを停止させてから進めていきます。
︙≡項目の『Setting』からノード管理項目の『SSL証明書の更新』を選択します。
~~画面の手順に従ってSSL証明書を更新。
更新が完了したら再度ノードを起動して完了。
⚠️画像や詳細は実際に実行してみた際に追加していく予定です。(多分1年後くらい)
🟡ノードのアップデート⚠️
⚠️実施時追記予定⛏
🟧モバイルノードへの委任
💡ノードアドレス自身でハーベストを実施する場合は10001XYM以上の残高保有のうえ、『ハーベスティングの有効化』のセットアップを完了しておくだけで、その後の作業は必要ありません。
通常の委任設定はノードのホスト名(IP等)を指定するだけで公開鍵が自動的にセットされますが、peerノードへ委任をする場合、ノード公開鍵を指定して設定する必要があります。
委任したいアドレスの残高が10001XYM以上の状態で12時間程度経過すると、アドレスに対してインポータンス(重要度)が割り当てられます。
委任ハーベストとは、このインポータンスを指定したノードに委任することでハーベスティングに参加することを指します。
ノードに対して残高を送信したり、預けることなく、また資産のロック期間もなく参加できる点も魅力のひとつですね。
⚠️ロック期間がないため、資産は自由に動かせますが、一瞬でも残高が10000XYMを下回るとハーベスト設定は無効となり、再度残高が10000XYMを超えても自動的に復旧はしません。
一度委任を解除し、再度委任設定を実施する必要がありますので注意が必要です。
(逆に、別アドレスへの移動等で委任を解除したい場合は、残高が下回った時点で自動的に委任が無効化されるため特に作業は必要ありません。)
🟠モバイル端末からの委任設定方法
署名アプリ『aLice』を用いて設定することが可能です。
aLiceの使用方法、および委任設定方法に関してはこちらの記事をご確認ください。
項目🟪aLice活用サービス:PeerNodeList
🟠デスクトップウォレットからの委任設定方法
まずはデスクトップウォレットの『アカウント』から委任したいアドレスのインポータンスが0%以上になっていることを確認します。
(インポータンスは残高が10000XYM以上になってからおよそ6~12時間後に付与されます)
インポータンスが付与されていることを確認できたら、『ハーベスティング』メニューへ移動、ハーベスト状況が『🔴無効』となっていることを確認します。
『🟡有効化が進行中』であったり、『🟢有効』状態で現在の委任ノードから委任先を変更したい場合は一度『ハーベスティングを停止』を選択し、委任設定中のノードとのリンクを解除する必要があります。
ノードURLに委任したいノードのホスト名/IPを入力し、[Enter]。
委任先がpeerノードの場合や、存在しないホスト名/IPの場合表示が切り替わります。(公開鍵を指定して委任する場合は、『1』等の適当な数字をいれてもOK)
右上に無効なノードとエラー表記が出て、公開鍵を入力する欄が出てきます。
これはホスト名からノードを辿ることができず公開鍵を自動でセットできないがゆえに表示されるため、”公開鍵を指定して委任設定する”うえでは正常な挙動です。
公開鍵入力欄に、モバイルノード(Peer node)の公開鍵を入力(コピペ)します。
確認事項が表示されるので、内容を確認したら『確認』をクリック。
委任ハーベストの設定に必要な3つの公開鍵をノードにリンクさせるトランザクションの詳細が表示されるため、内容を確認したうえでパスワードを入力し、確認。
トランザクションが承認され、ウォレット上の表記が[🔴無効]から[🟡リンク済みキー]となりました。
この状態で、ハーベストを開始するためのリクエストをノードアドレスに送るため、『ハーベスティングをリクエスト』を実施します。
暗号化メッセージで送信する必要があるため、メッセージの暗号化のためにパスワードを入力→確認
暗号化メッセージを送信するトランザクション詳細が表示されるため、再度パスワードを入力し、確認
トランザクションが承認され、ウォレット上の表記が『🟡有効化が進行中』となりました。
以上で、モバイルノードアプリで建てられたPeerノードへの委任設定は完了ですが、委任が完了してもデスクトップウォレット上の委任状況は『🟢有効』にはなりません。
時間が経つと『🟡有効化が進行中』▶『🔴失敗しました』
となりますが、これはあくまでもデスクトップウォレットというアプリ上で委任ノードの情報を取得する方法がAPIを用いたものであるため、ウォレットが認識できずそのような表記になってしまうという状態です。
🔴失敗表記のままでも問題なくハーベスト出来ていることが確認できました。
委任アドレスがノードと紐づいているかどうかを確認するには次の項目を試してください。
🟠委任状況の確認
✅ノードオーナー側での確認
ノードが保持している委任者情報をアプリ上で確認が可能です。
『メニュー』→『Info』→『委任ハーベスタ』を選択することで、現在ノードに委任されているアドレスおよびアドレス残高を確認することができます。各アドレスを選択することでエクスプローラに遷移することもできます。
委任設定ができたかどうかは、モバイルノードのノードオーナーが、dataファイル内に『harvesters.dat』というデータが作成されたかどうかで判断することも出来ます。
初回はデータが作成されたことで認識できますが、それ以降の委任に関してはデータが書き足され更新されるため、最終更新日=最終委任受けれ入れ日と判断することが出来ます。
また、このデータは委任者アドレスを認識するためのデータですので、ノードがクラッシュし、再構築が必要になった場合、harvesters.datのバックアップを用いることで委任者を移植できる可能性があります。
データが更新されたら都度バックアップを取っておくといいでしょう。
別の方法として、委任者が設定時に送信するトランザクションに『永続ハーベスティングメッセージを暗号化して送信』するものがありますが、こちらはノードアドレスに直接送られるため、ノードアドレスの履歴を見ることで
どのアドレスが委任してくれたのか、を確認する方法があります。
ブロックチェーンエクスプローラーで自身のアドレスを検索、もしくはウォレットのトランザクション履歴からトランザクション詳細を開くことで、委任者アドレスを確認することが出来ます。
⚫エクスプローラー
⚫ウォレット
(ちなみに一応程度で残高とかアドレスとか隠してますが調べればわかるものなのであまり気にしてませんのでご心配なく…笑)
✅委任者側の確認
委任指定したノードの公開鍵が自身のアドレスと紐づいているかどうかをブロックチェーンエクスプローラー等で確認するといった方法があります。
ブロックチェーンエクスプローラとは、ブロックチェーン上に記録された暗号資産の取引の全てを遡って検索することが出来る検索エンジンのことで、現在のブロック高やアドレスの情報や取引(トランザクション)の詳細等様々な情報を確認することが出来ます。
エクスプローラの検索窓に、委任した自身のアドレスを入力し、検索すると、アドレスの残高や取引履歴等の情報を見ることができます。
ちなみに、アドレスを公開することはそのアドレスのXYM残高や取引履歴が自分のものであると公開するということです。
情報の公開というだけなので、資産が直接危険にさらされることはありませんが、多量のXYMを保持している場合資産を持っていることを公開することになりますので、現実世界でのトラブルリスクが上がる可能性は否定できません。
多額の資産を保有する場合、交流やサービス利用目的の、公開してもいいアドレスを別で運用することもリスクを避ける方法のひとつです。
アドレス情報を下のほうまでスクロールすると、SUPPLEMENTALキーという欄があります。
そこには3つのアドレスが記載されていますが、このうちの『ノード』のアドレスを選択してアドレス詳細を見に行きます。
そのアドレスの公開鍵が、委任ハーベスト設定時に入力したものと同一であれば、自身のアドレスとノードがリンクしているということを確認することができます。
ちなみに、モバイルノードではない、ブートストラップを使用して建てられたノードの場合、この方法では確認が出来ません。
ノード設定アドレスを作成した際に空のアドレスがノードアドレスと紐づけられているようで、ノードの存在するアドレスへたどり着きにくいようになっているようです。(推測の範囲)
また、現在の委任者数やブロック高等の詳細な情報はAPIを提供していないため、外部からの取得が困難である点には注意が必要です。
🟠ハーベストの期待値
よく質問が挙がる内容ですので記載しておきます。
ハーベストは1日2880回のくじ引きに参加するイメージに近いので、いわゆるステーキング等のように一定期間で一定の報酬が得られることは確約されていません。
ハーベストの獲得頻度を増やすにはXYM枚数を多く保有することが最も効果的です。
枚数に応じた期待値をあひきさんが統計情報としてまとめてくれています。
期待値を上回る回数収穫出来たり、下回る回数になることもありますが、長い目で見るとおおよそ期待値通りに集約してきます。
🌟統計情報
🟠ハーベスト履歴の取得
ハーベスト報酬は現在の日本の税制では獲得したタイミングで所得扱いとなるようです。
そのため、高頻度のハーベストやXYM価格の上昇などにより他の雑所得と合算した日本円換算での報酬獲得金額が20万円を超える場合、確定申告が必要になります。
ハーベスト報酬は、『ハーベスティングの有効化』時に指定した『受益者アドレス』へ付与されますので、ノード運営にかかり獲得した報酬は受益者アドレスの履歴を取ればOKです。
別アドレスでノードに委任しハーベストを設定している場合は、その委任アドレスも履歴を取る必要があります。
ハーベストの履歴をCSVでダウンロードできるサイトを掲載しておきますのでご活用ください。
XEMTax(β)
開発者:XEMBook
NEM & Symbol harvesting report
開発者:Cryptobeliever
🟥おわりに
今回実質、2500円でSymbolのフルノードを構築することに成功しました!!
え、やっすい!!そして月額が667円だと?!!?
ノード代行サービスのAllnodesは月額4000~10000円ほどかかるし
VPSサーバー上にノードを構築するにもレンタルで月額2000円前後はかかるというのにこの手軽さはやばい…!
試している間、終始変なテンションでしたww
月額667円とすると、1XYM3円としておよそ223XYM
自ノードでのハーベストであれば1ハーベストでおよそ116XYMの報酬が得られる。
つまり月2回程度のハーベストが見込めるのであれば実質タダでノードが運用できてネットワークに参加できる!
(期待値として必要な保有残高はおよそ6万枚)
他ノードに委任した際にデフォルトでノード報酬として徴収される25%は約30XYMなので、その分だけで考えると月約7.5回のハーベストでペイできる。(期待値として必要な保有残高はおよそ22万枚)
もちろん日本円換算だから1XYM6円になったら必要保有残高も半分になります…!
アプリも単純にUIが好き
各種設定項目もわかりやすいし、ターミナルとかかっこよすぎるでしょ。。
tqmさんナニモノ…。。w
そして何より、『ネットワークに参加している感』が好き。
PeerノードはAPIノードと異なり、情報を返すことがないから、チェーンを活用したサービスやアプリからは利用できないノードではあるけども、これは逆に、大量のリクエストに応えきれずダウンしてしまうリスクが無いってことでもあると思うの。
そういった攻撃を受けずに淡々とデータを保持し、生きたノードと繋がり続け、PC不要で手軽に構築できるPeerノードは、『すべてのノードを同時に破壊されない限り消えることなくデータを保持し続ける』ブロックチェーンの堅牢性をさらに高めてくれる存在だと思ってる。
バッテリー稼働であることも、雷雨や災害などによる停電時にすぐに影響を受けないという点も有用性のひとつですよね。
このちっちゃい端末が、世界中どこからでも利用することができるSymbolブロックチェーンのデータを保持し、ネットワークの維持を担っているってスゴクナイ??
不特定多数が参加することが出来るパブリックネットワークの『分散性』と『堅牢性』を高めることができる、このモバイルノード。
1人1ノードがもう現実味のある話になってる現状が楽しすぎる。スゴイ。(語彙ぃ)
今のスペックでPeerノードが構築可能ってことは将来スマホのスペックが上がっていけばPeer,APIノードの構築も可能になっていくかもしれないということで。CPUで言えばここ10年間で40倍ほど高速になってるらしいし。次の10年での変化が楽しみで仕方ない。
個人的なイメージだけど、XYMを持つってことはゲーム機を持ってるようなものだと思うんだよね。転売するためにゲーム機の価格が上がるのを待ったり価格が下がってがっかりしてるより、いろんな人が開発したりしているもの(ソフト)で遊んで楽しんだほうが有意義に思えてる。
保有者が増えるのは大事、参加者が増えるのはもっと大事!
作っていただいたいろんなものでたくさん遊んでいきたいなぁ~✨
今回の記事は開発者のtqmさんをはじめ、率先してモバイルノードを構築された皆様のTwitter(X)上でのやりとりを大いに参考にさせていただいています。
Symbolブロックチェーンを
『使う』感動
『動かす』感動
『参加する』感動
広まるといいなぁ~✨
書きたいこと詰め込んだらなが~くなっちゃったけど、この記事がまた誰かの『ネットワークへの参加』の手助けになれば幸いです!
🔴オープンチャットの紹介
そのほか、Symbolに関すること等、サポートしあえる場としてLINEのオープンチャットも運営してます。
多数の有識者が参加してくれているので、『分散型サポートセンター』としてやっていければと思っています。
何かお困りの際等にはお気軽にご参加、ご質問ください~✨
🔴そのほか
Communityが運営しているSymbol情報サイトはこちら
この記事が気に入ったらサポートをしてみませんか?