NEMブロックチェーン上でImportance(重要度)を上げるにはどうすればよいか?翻訳
How Do I Get Importance on the NEM Blockchain?
よく聞かれる質問のうちの一つが、「Proof-of-Importanceはどのような仕組みなのか」というものです。この質問に関しては、すでに記事があるので、もし読んでいなければそちらを読んで下さい。
PoIが何であるかを学んだあとに、多く人はこんな質問をします。
「どうやったら重要度(以下、Importance)を高めることができるのですか?」と。
この質問に対する答えのコンセプトは、「NEMネットワークの利用に対して報酬が支払われる」というものです。これは、「資産やマイニングの電力に対して報酬支払われる」コンセプトとは正反対のものです。
この記事では、重要度の計算の公式について詳細を記載しますが、複雑な数学や暗号学の概念は使わないようにします。
PoIスコアを増やすためには、NEMを使ってより多くの人と、よりたくさん取引をすることが必要です。取引の結果、手数料によって通貨を使うことになりますが、あなたのPoIスコアは上がります。またNEMには、人工的にPoIスコアを上げて利益を得ることはできないような対応策が施されています。
Importanceを持つための適格性について
Importanceスコアをまず得るためには、vestedされた10,000XEMが必要になります。vestedされている必要があるので、10,000XEMちょうど保有していては、vested XEMは10,000にはなりません。10,000XEM以上必要です。なぜなら、ご存知の通り、XEMは24時間で保有量の10%が vested XEMになっていくからです。
XEMの供給量の合計は8,999,999,999XEMとなっているため、理論的には、重要度を得られるアカウントは、899,999ユーザのみです。ハーベスティングをする実際のアカウントの数は、もっと少ないでしょう。理由は、10,000XEM以上を保有しているアカウントが多くいるからです。
XEMが普及するにつれ、またNEMネットワークの用途が増えるにつれて、ハーベスティングのために必要な最低限の保有XEM量は、今後ハードフォークによって減らす可能性もあります。
Importanceの計算について
Importanceの計算にあたって、いくつかの数字に必要になります。以下でその数字がどのように計算されるかを説明します。
シングル・トランスファー・スコア(アウトリンク・マトリックス)
NEMのブロックチェーンは、資格あるユーザ(vested XEM 10,000以上保有するユーザ)の以下の条件を満たした取引を考慮します。
・1000XEM以上、送金する取引
・30日以内(43200ブロック以内)の取引
・他の資格あるユーザ(vested XEM 10,000以上保有するユーザ)から受け取る取引
その際、「AさんからBさんに送金する取引」について少し複雑な計算がされます。この計算は、普通の人にはとても難解な数学ですが、重要なのは、「いくら送金されたか」「送金されてどのくらい時間が経ったか」が考慮されるという点です。
上の図を見るとわかる通り、この「取引のImportance」は、時間の経過と共に下がっていきます。1日前にされた取引のほうが、20日前にされた取引よりも、Importanceにとっては価値のあるものになります。
次にNEMネットワークは、上の方法で得られた「取引のImportance」情報を元に、重要度のために必要な数字を計算します。この数字は、最終的なImportanceではありませんが、「AさんからBさんに送金が行われたすべての取引」にスコアを与えます。
そして「AさんからCさんへの取引」、「AさんからDさんへの取引」など、Aさんが送金をした人数の分だけ、上記のプロセスに則り、シングルトランスファースコアが計算されます。
プレファイナルスコア
上の計算で、取引で関わった人とのスコアがわかったところで、さらに計算が必要になります。最初の、シングル・トランスファー・スコアをすべて計算に使い、NCD aware Rank という数字を生成します。この計算は、Googleの検索結果を決めるアルゴリズムである「ページランク」と似たような計算がされています。
NEM Technical Referenceでは、この計算に、4ページ近く使って説明しています。なおこのNEM Technical Referenceを読む際は、高度な数学の理解があることが望ましいです。
ファイナルスコア
そして最終的なスコアが以下の点を考慮されて、計算されます。
・vested XEMの合計保有量
・一時的に重み付けされたXEMの総合保有量
・NCD aware Rankスコア
・様々なアルゴリズム
従って、簡単に言うと、「取引」がImportanceの計算にとって非常に重要になっています。なので、NEMネットワークを普通に使うことがImportanceのスコアを高めることになります。
不正操作の防止策について
PoIのようなシステムには、いくつかの攻撃に対する防止策が必要になってきます。このセクションでは、その攻撃と防止策を挙げていきます。
Sybil Attack(シビルアタック)
複数のアカウントを作り、ネットワークを支配権を得ようとする攻撃が、シビルアタックです。
NEMでは、ハーベスティングによって報酬を得る仕組みになっており、Importanceの高いアカウントが、より多くのブロックをハーベスティグすることができます。よって、シビルアタックをしようとする攻撃者は以下のことを試みるでしょう。
・NCD aware Rankスコアを高めるため、アカウント間で送金取引をする
・攻撃者がコントロールするアカウントに、ランダムに送金取引をする
・シングルトランスファースコアを高めるために、ループでXEMを送金し続ける
NEMはこれらの攻撃を防ぐために以下の戦略を取っています。
・webページの「ページランク」では、人々はより人気なページに見せるため、他のページから大量にバックリンクされることにより、誤用されることがあります。
一方NCDawareRankのアルゴリズムでは、上のような仕組みの際は少し価値が下がるようになっています。
・XEMの残高は時間をかけてvestedされるため、攻撃者が攻撃に必要なXEMを保有するには、非常に長い時間がかかるようになっています。
・「アカウントの純損失」をスコアの計算に使っているため、
10,000XEMを送って、それを受け取り直したアカウントは、
10.000XEM送って何も受け取らなかったアカウントよりも、重要度が少し下がります。
・シングルトランスファースコアのセクションにあるグラフを見てわかるように、
importanceに関係する送金XEM数(取引のimportance)は、時間の経過とともに減っていきます。攻撃者が一時的にしかスコアをあげることはできず、長期的ではありません。
・Technical Referenceを見て分かる通り、他にも様々な数学的な指標を調整しています。しかしこの数学は、普通の人には少し難しいかもしれません。
これらすべての戦略を組み合わせて、攻撃者が人工的にimportanceを高めようとすることを防ぐことができます。
Loop Attack(ループアタック)
攻撃者は、自分たちで作ったアカウント間で、XEMの送金を繰り返します。
しかし前述の理由で、この攻撃はうまくいきませんし、攻撃者のハーベスティングの儲けを損なう可能性さえあります。
これには数学的トリックがあり、下のグラフで上手にまとめています。
これらのグラフは、
普通のアカウント(Honest)は、8億XEMを一つのアカウントで保持するとし、
シビルアタック攻撃者のアカウント(Sybil)は、8億XEMを様々な戦略を使って保持するとします。
X軸は攻撃者のアカウントの数を表します。(単位はlog : 対数尺度であり、線ごとに10倍になります。)
グラフ(a)では、攻撃者はXEMをループさせていますが、importanceは4%しか増えていません。一方で、取引の手数料としてたくさんのXEMを失うため、普通のアカウントより、ハーベスティングできるXEMは少なくなる可能性が高いです。
グラフ(b)では、攻撃者は、XEMを複数のアカウントに置き、それらをメインアカウントに一気に送金した方法をとっています。しかしimportanceは、短時間かつ7%しか増えていません。しかもその後、取引はないのため、importanceは下がっていき、さらにこの時点ではすでに多くの取引のための手数料を失っています。
グラフ(c)では、攻撃者はXEMを、持っている複数のアカウントにランダムに送金しています。これによって、他の2つの手法より多くの取引手数料を失いますが、攻撃者のimportanceスコアを高めるには最も効率のよい方法になっています。(100個の資格あるアカウントへ送金し、importanceは7%増加しています。)
しかし、これも攻撃者は、多くの手数料を失っています。ちなみにこの手数料は、ハーベスティングを通じて他の人に分配されます。
攻撃によって、何も得られなければ、攻撃する動機というのは生じません。
結論
NEMのimportanceシステムは、アドレス(アカウント)がどれだけ重要か、という計算が使われている強固なシステムです。このシステムを操作することは、不可能でないにしても、非常に難しく、なんとか操作できたとしても、その時点で多くのお金を失うでしょう。
つまり、最初の質問「どうやったらimportanceを高めることができるのですか?」という質問に対する答えは、シンプルです。
より高いimportanceスコアを持ちたければ、より多く取引をし、普通に・不正をせず取引をしましょう。