モッピー!ポイ活応援ポイントサイト
未分類

test-validaterのstatatusの見方

https://docs.solana.com/developing/test-validator#appendix-i-status-output

付録I:ステータス出力

元帳の場所:テスト元帳

  • 元帳ストレージディレクトリのファイルパス。このディレクトリは大きくなる可能性があります。でより少ないトランザクション履歴を保存する--limit-ledger-size ...か、で再配置します --ledger ...

ここのパスにsolanaの元帳を保存している。

test-ledger…ってどこ。solanaのフォルダの中にあった。

ログ:test-ledger / validator.log

  • バリデーターテキストログファイルのファイルパス。ログは、を渡すことによってストリーミングすることもできます--log。この場合、ステータス出力は抑制されます

バリデーターテキストログって何

よくわからないが、大きくなりすぎるのでrotation というのを行うと良いらしい。とりあえず、設定した。

次回からはexec solana-…で実行すればログファイルが不必要に大きくならないはず

ログローテーション

で指定されているバリデーターログファイルは、--log ~/solana-validator.log時間の経過とともに非常に大きくなる可能性があるため、ログローテーションを構成することをお勧めします。

バリデーターUSR1は、ログローテーションを可能にする基本的なプリミティブであるシグナルを受信すると、再び開きます。

バリデーターがラッパーシェルスクリプトによって開始されている場合、logrotateを使用するときにexecexec solana-validator ...)を使用してプロセスを起動することが重要です。これにより、USR1シグナルがバリデーターではなくスクリプトのプロセスに送信されなくなり、両方が強制終了されます。

ラッパーシェルスクリプトって何?⇒要するに、あるシェルコマンドを上書き/置換し、その動作を任意に変更するためのスクリプトのことだと思えばよさそう。 これを利用すれば、何らかの理由でコード自体の書き換えができないコマンドの動作を、簡単に変更することができる。2015/05/28

⇒シェルコマンドって何?シェルを動かすためのコマンド。

コマンドシェル「シェル」(Shell)は、UnixやLinuxなどのOSで、ユーザーのためのインターフェースを提供するソフトウェア。ユーザーからのコマンドを受け付けて、OSに渡している。OSとユーザーの間にいるので殻みたいなのでシェル。 シェルでは、ターミナル上でコマンドを入力することでOSを操作し、その処理結果やエラー情報をテキストとして表示します
シェルスクリプト…シェルに対する命令(コマンド)をまとめたテキストデータ。.sh。テキストエディタで編集が可能。

logrotateを使用する

のセットアップ例。logrotateバリデーターがと呼ばれるsystemdサービスとして実行されていることを前提としsol.service、ログファイルを/home/sol/solana-validator.logに書き込みます。

#ログローテーションを設定する
# Setup log rotation
cat > logrotate.sol <<EOF
cat << EOF > FILE
BODY
EOF
ファイルを新規作成できる
/home/sol/solana-validator.log {
rotate 7
daily
missingok
postrotate
systemctl kill -s USR1 sol.service
endscript
}
EOF
sudo cp logrotate.sol /etc/logrotate.d/sol
launchct restart logrotate.service

前述のように、logrotateを使用する場合は、solanaバリデータープロセスを開始するスクリプトで「exec」を使用するようにしてください(例:「execsolana-validator …」)。そうしないと、logrotateがそのシグナルをバリデーターに送信するときに、囲んでいるスクリプトが停止し、バリデータープロセスを実行します。

なお、macでsystemdは使えなかった。systemdは従来のinitシステムに対し、起動を高速にし、設定をシンプルにすることを狙っています。Linuxでの同様の新しいinitシステムに、Ubuntuなどで用いられたUpstartがあります。また、MacOSでは新しいinitシステムとしてlaunchdが使われています。

なので、MACようにlaunchctrl restartと書き換えた

cp [オプション] コピー元 コピー先

そもそもlaunchctrlって何?

どこに保存差rたのかわからなくなってときは下記で検索する。

where notepad(notepadの場所を探せる。

cat

catコマンドの“cat”は、「conCATenate(つなぐ、連結する)」のcatです。 ファイルを連結するためのコマンドですが、ファイルの内容をサッと表示する際によく使われます。 Linuxの設定ファイルは、その多くがテキストファイルです。

アイデンティティ:EPhgPANa5Rh2wa4V2jxt7YbtWa3Uyw4sTeZ13cQjDDB8

ゴシップネットワークって何?

Gossip Serviceは、コントロールプレーン内のノードへのゲートウェイとして機能します。バリデーターはこのサービスを使用して、クラスター内の他のすべてのノードが情報を利用できるようにします。このサービスは、ゴシッププロトコルを使用して情報をブロードキャストします

噂がでんぱするように、参加者ネットワーク参加者間でランダムに情報を交換してアップデートしていくのがゴシッププロトコル。このネットワークに参加する方法がゴシップサービス。そのネットワーク内でのIDがアイデンティティということだろう。

分散システムにおいて、ゴシッププロトコルgossip-protocolゴシッピングゴシップアルゴリズムエピデミックアルゴリズムepidemic algorithmsepidemic protocol)とは、システムの参加者間で繰り返し確率的に情報を交換する手法であり、情報の拡散や統計値の計算などに利用される

ゴシッププロトコルではランダムに選んだ相手と情報を交換し、自身が持つデータの更新を繰り返す。システムの参加者が不定期的に増減して全体を把握できない状況や、一時的に通信できない場合でも情報を伝搬できる。病気が伝染する様子に似ていることから、エピデミックアルゴリズムとも呼ばれる

ゴシップの概要

ノードは、クラスターを管理するために、署名されたデータオブジェクトをノード間で継続的に共有します。たとえば、連絡先情報、元帳の高さ、投票数を共有します。

10分の1秒ごとに、各ノードは「プッシュ」メッセージおよび/または「プル」メッセージを送信します。プッシュおよびプルメッセージは応答を引き出す可能性があり、プッシュメッセージはクラスター内の他のユーザーに転送される可能性があります。

Gossipは、既知のUDP / IPポートまたは既知の範囲のポートで実行されます。クラスターがブートストラップ(自分自身で起動)されると、ノードはゴシップエンドポイント(ソケットアドレス())の場所を相互にアドバタイズします。

ソケットアドレスって何?どこに送るのか?の情報

リモート・ホストの IP アドレス

ターゲット・サーバーが TCP/IP 通信に使用するポート番号

UDPって何?投げっぱなしにするタイプの通信方法っぽい。このゴシップネットワークではとにかく情報を共有することが大事なので届いたかどうかは重要ではなくより多くの人に届けることが大事。だからUDPなのだろう。

UDPとは「User Datagram Protocol」の略であり、インターネットで一般的に使用されている、トランスポート レイヤ(第4層)のプロトコルの1つです。 TCP等と同様に、IPの上位プロトコルとして使用されます。 … 一方的にメッセージを送る、メッセージ指向型のプロトコルです。

 トランスポート層の主役はTCPとUDPの2つです。インターネットイニシアティブ(IIJ)が2014年8月に公開した2014年のブロードバンドトラフィックレポートを見ると、インターネットのトラフィックの80%はTCP、13%はUDPが占めています。まさにインターネットの主役といえます。

TCPとUDPはプロトコルとして大きく違います(図5-1)。TCPは通信の送信元と宛先がサーバーとクライアントという2者に明確に分かれており、接続の開始と終了の際に、両者がネゴシエーションしてコネクションを張り、そのコネクションを通じてデータを送ります。これに対しUDPではコネクションという概念がないため、いきなりデータを送信できます。

TCPポート番号って何?

本項ではTCPやUDPにおけるポート番号の一覧を示す。

コンピュータネットワークにおいて、インターネット・プロトコル・スイートトランスポート層にあたるTransmission Control Protocol (TCP) やUser Datagram Protocol (UDP) では、他のプロトコル同様、ホスト間通信のエンドポイントを指定する際に数字の識別子が用いられており、これをポート番号と呼んでいる。インターネットに関連する番号を統合管理している組織であるInternet Assigned Numbers Authority (IANA) は、TCPやUDPのポート番号管理も行っており、特定のポート番号とそのポート番号を用いるアプリケーションの組合せを管理している。以下の表は、これらの組合せを示したものである

ブートストラップ(英語: Bootstrapping)とは一般的な用語として、外部の入力を必要とせずに実行される、自己開始型のプロセスを指す。

ゴシップレコード

ゴシップを介して共有されるレコードは任意ですが、それらを受信するノードにとって意味があるように、必要に応じて署名およびバージョン管理されます(タイムスタンプ付き)。ノードが同じソースから2つのレコードを受信した場合、ノードは自身のコピーを最新のタイムスタンプを持つレコードで更新します。

新しい情報でどんどんレコードを更新していくよ

ゴシップサービスインターフェース

プッシュメッセージ

ノードはプッシュメッセージを送信して、共有する情報があることをクラスターに通知します。ノードはプッシュメッセージをPUSH_FANOUTプッシュピアに送信します。

プッシュメッセージを受信すると、ノードはメッセージを調べて次のことを確認します。

  1. 複製:メッセージが以前に表示されたことがある場合、ノードはメッセージをドロップし、PushMessagePruneスタックの少ないノードから転送された場合に応答する可能性があります
  2. 新しいデータ:メッセージがノードにとって新しい場合
    • 更新されたバージョンの新しい情報をクラスター情報に格納し、以前の古い値を削除します
    • メッセージをに保存しますpushed_once(重複の検出に使用され、PUSH_MSG_TIMEOUT * 5ms後にパージされます)
    • メッセージを自身のプッシュピアに再送信します
  3. 有効期限:ノードは、より古いプッシュメッセージをドロップします PUSH_MSG_TIMEOUT

つまり、新しい情報をもらったら自分のデータを更新して、古い情報をもってそうな近隣の仲間たちに転送もするよ

プッシュピア、プルーンメッセージ

ノードは、既知のピアのアクティブなセットからランダムにプッシュピアを選択します。ノードはこの選択を比較的長い間保持します。プルーニングメッセージを受信すると、ノードはプルーニングを送信したプッシュピアをドロップします。プルーンは、直接プッシュよりも、そのノードへの別のより高いステーク加重パスがあることを示しています。

プッシュピアのセットは、PUSH_MSG_TIMEOUT/2ミリ秒ごとに新しいノードをセットにローテーションすることで最新の状態に保たれます。

プルメッセージ

ノードはプルメッセージを送信して、クラスターに新しい情報があるかどうかを尋ねます。プルメッセージはランダムに単一のピアに送信され、すでに持っているものを表すブルームフィルターで構成されます。プルメッセージを受信するノードは、その値を繰り返し処理し、フィルターを見逃してメッセージに収まるもののプル応答を作成します。

ノードは、現在の値と最近パージされた値を反復処理することにより、プルブルームフィルターを構築します。

ノードは、プッシュメッセージの新しいデータを処理するのと同じ方法で、プル応答のアイテムを処理します。

パージ

ノードは、以前のバージョンの値(プルまたはプッシュによって更新されたもの)と期限切れの値(より古いものGOSSIP_PULL_CRDS_TIMEOUT_MS)をpurged_values(最近持っていたもの)に保持します。purged_valuesより古いノードはパージされます5 * GOSSIP_PULL_CRDS_TIMEOUT_MS

日食攻撃

日食攻撃は、敵対するエンドポイントとのノード接続のセットを乗っ取ろうとする試みです。

これは、次のように実装に関連しています。

  • プルメッセージは、ネットワークからランダムなノードを選択します。プルに対する日食攻撃では、攻撃者がランダム選択に影響を与えて、敵対するノードのみがプル対象として選択されるようにする必要があります。
  • プッシュメッセージはアクティブなノードのセットを維持し、プッシュメッセージごとにランダムなファンアウトを選択します。プッシュに対する日食攻撃は、アクティブなセットの選択、またはランダムなファンアウトの選択に影響を与えます。

時間とステークベースの重み

重みはに基づいて計算されているtime since last pickednatural logstake weight

撮影lnステーク重量のすべてのノードに妥当な時間でネットワークカバレッジのより公正な機会を与えることができます。これはstake weight、ノード間の大きな可能性のある違いを正規化するのに役立ちます。このように、stake weight大きいノードと比較して小さいノードは、選択される前stake weightにln(stake)秒の数倍待つだけで済みます。

敵がこれらのパラメータに影響を与える方法はありません。

プルメッセージ

上記の重みに基づいて、ノードがプルターゲットとして選択されます。

プッシュメッセージ

整理メッセージは、潜在的な接続から敵を削除することしかできません。

プルメッセージと同様に、ノードは重みに基づいてアクティブセットに選択されます。

PlumTreeとの顕著な違い

ここで説明するアクティブプッシュプロトコルは、プラムツリーに基づいてい ます。主な違いは次のとおりです。

  • プッシュメッセージには、発信者によって署名されたウォールクロックがあります。ウォールクロックの期限が切れると、メッセージはドロップされます。敵対的な設定でホップ制限を実装することは困難です。
  • レイジープッシュは、攻撃者がメッセージの指紋を偽造するのを防ぐ方法が明らかでないため、実装されていません。素朴なアプローチでは、敵の入力に基づいて、敵にプルの優先順位を付けることができます。
バージョン:1.6.7

  • ソフトウェアバージョン
ゴシップアドレス:127.0.0.1:1024
TPUアドレス:127.0.0.1:1027
JSON RPC URL:http://127.0.0.1:8899

ここのアドレスはどこも同じ?PCのノードごとに違うと思ってたけど、俺が立てたのも同じアドレスだったのはなぜ。。。。

127.0.0.1はローカルを指すIPなので、当然同じ。自分のIPなので。

これで自分のどのポートが実際開いてるのか見れる。

# -P: ポート番号をポート名に変換しない
sudo lsof -P | grep "LISTEN"

# -i: ポート番号を指定する
sudo lsof -P -i:80 | grep "LISTEN"

Solanaノードは、JSON-RPC2.0仕様を使用してHTTPリクエストを受け入れます。

JavaScriptアプリケーション内のSolanaノードと対話するには、RPCメソッドの便利なインターフェイスを提供するsolana-web3.jsライブラリを使用し ます。

メソッド

⠈00:36:02 | 処理済みスロット:5142 | 確認済みスロット:5142 | ファイナライズされたスロット:5110 | スナップショットスロット:5100 | トランザクション:5142 | ◎499.974295000

ABOUT ME
たけ
はじめまして! たけといいます。 20代男性サラリーマンが資産運用で5年で3000万をめざします。 これを読んで自分でも出来るのではないかと思ってくれる人が増えると嬉しいです。 お金を得ることは手段に過ぎません。若いうちに稼いで、自分の時間をより大切なことに使いたいです。 【2019投資戦歴】 投資資金合計 300万 2019年度単年損益(年利) FX 15万(15%) 投信 9万(7%) 株式 4万(8%) ※投信、株式は含み益