[Cross Value Chain]Cross Value Chain のWhitePaperを読み解いていくシリーズ(4)
引用元:https://crosstech.gitbook.io/whitepaper/vpow-consensus-algorithm-overview
日本語訳
今回は、Cross Value Chainの特徴的な仕組みのVPoWという合意形成の仕組みです。取引について正しいか間違っているかを判断したうえで、トランザクションを許可する仕組みになります。この仕組みは、XWalletというVPoWに参加できるウォレットを持つことで参加できます。参入障壁はとても低いです。
他のチェーンではこの仕組みが計算能力を沢山もっていることで参加できるPoWであったり、トークンを一定数ステーキングすることを条件にノードに参加できるPoSという仕組みがあるのですが、たくさんの何かを持っていないと参加できない仕組みは、中央集権的になります。
そして分散、分権されていると言えるのか?という議論があり、それらを変えようとするチェーンは等しく参加できるように、持っているトークンが多くても、少なくても参加できるようにするべきと言われるものの、それが実現できているチェーンは非常に少ない現在です。
難しく書かれているかもしれませんが、J-Nodeは、7つのウォレットに対して問いかけをして、7つのウォレットのうち6つ以上のウォレットの結果があっていればそのトランザクションは有効と判断します。参加したウォレットは報酬がもらえます。
VPoW 合意アルゴリズムについて
VPoW(Voting Proof of Work)は、特別な「J-node(ジェイノード)」が取引(トランザクション)が本物か偽物かを判断する役割を果たします。どのJ-nodeが選ばれるかはランダムで、それぞれが「投票ノード」から取引の確認状況を受け取ります。
どうやって真偽を判断するの?
J-nodeはある計算式に基づいて取引が本当か偽物かを決めます。もし取引が「真(True)」か「偽(False)」かの結果の合計が75%以上(これをしきい値と呼びます)であれば、その取引のトークンがリリースされます。すなわち、取引が成立します。
サンプルソースコード
プログラムを解説
上記のサンプルプログラムをGPT-4に依頼してみます。2つの関数があることがわかります。
XWalletと思われる対象がこれを呼び出すのかわかりませんが、IP addressとカテゴリという2つのものをハッシュしたものを利用しております。 この先のプログラムはわからないためこのプログラムは投票プログラムの一部になります。
voter_registration関数
目的: この関数は、ユーザー(voter)が投票に登録するためのものです。
引数: _ip addressとしてIPアドレス(文字列)を受け取ります。
動作:
msg.sender(トランザクションを送信したアドレス)と_ip addressを結合し、そのハッシュ値を生成します。
すでに登録されている場合(votersマッピングでtrueがセットされている場合)はエラー(requireステートメント)が発生します。
まだ登録されていない場合、votersマッピングでそのハッシュ値に対してtrueをセットします。
vote_casting関数
目的: この関数は、投票を行うためのものです。
引数: _ip address(IPアドレス、文字列)と_category(投票するカテゴリ、文字列)を受け取ります。
動作:
_ip addressと_categoryを結合し、そのハッシュ値を生成します。
このハッシュ値に対応するurlDataマッピングのvoteCountをインクリメントします。
投票が行われたことを示すイベントvotedEventを発火します。
以上がChatGPT4によるコードの解析です。
エスクローアカウントって何?
エスクローアカウントは、間違ってトークンを誤った相手に渡さないようにするための安全装置です。J-nodeがトークンを一時保管し、複数の投票ノードが取引を確認した後、J-nodeがその取引が本当であると確認すれば、トークンが受取人のウォレットに送られます。
エスクローアカウント決定式
D は決定の条件、つまり取引が"True"と認識されるかどうかを示す指標です。
Ri はi番目のノードの返信信号です。この例ではT (True) とNT (Not True) という信号が存在しています。
θj はNFTコンテンツがコメントを持つ場合の決定条件のバイアス(オフセット)を示すものです。
n は投票ノードの総数を示します。
以下は、デフォルト設定の例です。7つのノードが選択され、6つのノードがTrueと応答し、1つのノードがNot-Trueと応答しました。しきい値が75%以下ならば、トランザクションは「True」のトランザクションと見なされます。
例では、応答シグナルがTrueの場合(1行目と2行目)およびそうでない場合(3行目、4行目、および5行目)の両方で結果はTrueです。
CVCを維持する動機は、各トランザクションの確認投票とVPoWマイニングの機能を持っていることです。CVCアルゴリズムは、トランザクションノードを特定するためにランダムにノードを選択します。合意が達成されると、すべての選択されたノードがトークン報酬を受け取ります。したがって、すべての参加投票ノードは、所定の期間内にトランザクション確認に応答すれば報酬を受け取る機会があります。
報酬は?
VPoWには、ウォレットを所有している全てのユーザーが参加可能であり、それに伴い報酬を獲得するチャンスが与えられます。さらに、ウォレット所有者の数だけノードが分散されるため、システムは多数のノードによって構成されます。例として、ウォレットの総数が100万の場合、チェーンを支配するためには少なくとも75万のウォレットをコントロールする必要があるというのが、このシステムの特徴として挙げられます。
この記事が気に入ったらサポートをしてみませんか?