Wait a moment...

【NEM技術勉強会】15.3 投票者 15.4 メッセージ【Symbol白書】

nem30.10xem (3)
574
0
2020-10-14 09:57:55
【NEM技術勉強会】15.3 投票者 15.4 メッセージ【Symbol白書】

15.3 投票者

下記の条件を満たしたアカウントは、エポックごとの投票に参加する資格がある。

  1. 直近のエポックでファイナライズされたブロック高において、ハーベストバランス(残高)がnetwork:minVoteBalanceを下回らないこと。
  2. 投票鍵(voting key)がStartEpochとEndEpochの間で登録されていること。

それぞれのエポックについて、上の条件を満たしたすべてのアカウントが投票セットとみなされる。ここで注意しなければならないのは、投票については(ハーベストとは異なり)インポータンスではなく、残高が使われる点である。これは、インポータント操作が起きる可能性を排除する(脚注;ネットワーク分断が起きている時、それぞれの分断化されたネットワーク内でインポータンスが計算される。その結果、それぞれの分断ネットワークが異なるアクティビティスコアを算出する可能性がある。インポータンスはネットワーク全体に対する絶対値ではなく、参加しているアカウントの総計から計算される相対値であるため、理論的には複数の分断化されたネットワーク内で、それぞれのインポータンスの特別過半数を獲得した異なるブロックが承認される可能性がある)。

 

投票権のあるアカウントのすべてが、投票すると期待される。善良な投票者は、有効な投票ラウンド全てに一回ずつ投票するだろう。すべての投票者が、高い可用性を持ったノードを運用していて、finalization:EnableVoting設定をオンにしてあるという暗黙の了解のもとでではある。よって、投票者の挙動が、上の期待に沿わないものであった場合は、ビザンチン問題の発生源と見なされ、その後の投票でペナルティを与えられる可能性がある。投票権は、より多くの残高を持つ投票者により多くの権利が与えられるような重み付けがなされる。

 

15.4 メッセージ

 

投票準備(prevote)や決定準備(precommit)用のメッセージは、共通の構造を持っている。

図35:メッセージ構造

 

Signatureは、メッセージのBMツリー署名を意味する(3.4: 投票鍵ツリー参照, 未翻訳)。メッセージが関係するエポック内では、(ツリーの)ルート公開鍵が、投票鍵と一致していなければならない。(ツリーの)末端公開鍵は、エポックの鍵ツリー内の公開鍵と一致しなければならない。

 

versionはメッセージのバージョンである。

 

HashesはHashesCountの数分のハッシュを含む。投票準備メッセージは少なくとも1つのハッシュを含むが、finalization:maxHashesPerPointを超えることはない。決定準備メッセージに含まれるハッシュの数はひとつである。

 

StepIdentifierは、メッセージのファイナライゼーションラウンド数を示す。ポイントの最上位ビットは特別な意味を持ち、0ならば投票準備メッセージであることを、1ならば決定準備メッセージであることを示している。

 

HeightはHashesに含まれる最初のハッシュのブロック高である。


投票権にはインポータンスではなく残高に応じた重み付けがなされます。その意味でPoS的ですね。まだ、3.4を読んでいないので鍵ツリーについては未解読ですが、ファイナライゼーションはメッセージを使って投票に参加しているアカウントやブロック高を管理しているようです。

 

目指せ北海道

 

この記事を書いた人
趣味はバイクでツーリングしながら、ブログを書いたり、動画配信したりすること。 ラズパイをバイクに積載して、ボタン一つでYoutubeライブ配信できるシステムを作りました。それを発展させて、XEMの価格を常時監視、取引するボットも作って活用してます。子供の頃から技術書を読むのが好きなので、NEMの技術文書を訳したりもしています。 本業は再生医療研究者です。歯の神経の中にいる「歯髄(しずい)細胞」を活用して新しい医療を開拓するために、しずい細胞プロジェクトを推進中。細胞の流通(トレーサビリティー)管理にNEMを使おうと思ってmijin v.2を導入したんですが、コロナで実用化が全然進みません。管理システムの名称は「ShizuiNet」。