ホワイトペーパー紹介 その5の1(NEM:XEM編)

NEMとは

2018年1月26日未明。仮想通貨取引所 CoinCheck から当時の価格で580億円相当のNEMが流出される事件がおきました。この流出事件が起きる前から、NEMは仮想通貨ファンには根強い人気があったのですが、流出騒ぎでさらに脚光(違う意味で??)を浴びる形になりました。今回は、そのNEMのホワイトペーパーについてまとめていきたいと思います。

ちなみに、現在日本の取引所でNEMを扱っているのは「Zaif」と「DMM Bitcoin」、「CoinCheck」となっております。

ZaifでNEMを始める方はこちら

※口座開設方法も詳しくご説明しております  簡単口座開設【Zaif編】

ちなみに、今回紹介するNEMのホワイトペーパーは正確にいうとTechnical Referenceとなっています。

https://nem.io/wp-content/themes/nem/files/NEM_techRef.pdf

最近では、「Catapult(カタパルト)」と呼ばれる次世代技術のホワイトペーパーも出てきていますが、まずは基本的な部分を抑えるためにTechnical Referenceを翻訳して見ることにしました。

非常に長いため2回に分けてご紹介していきますが、じっくり読み込むと非常に面白い内容になっていますので、時間のある方はぜひゆっくりとお付き合いください。

NEM Technical Reference翻訳

1 Introduction(イントロ)

NEMは、既存のブロックチェーン技術に改良が加えられた仮想通貨です。NEMの仮想通貨の発展における最大の貢献は、重要度の証明(Proof of Importance, PoI)と呼ばれる合意形成の仕組みです。

PoIは、

  • PoWと違い、計算量の高さだけに依存しないために電力消費量が抑えられ環境に優しい
  • PoWと違い、高性能なマシンを準備できるような経済的に豊かな者だけに権利が偏らない。
  • PoSと違い、通貨を大量に保有できるような経済的に豊かな者だけに権利が偏らない。

PoIは、通貨の残高に加え活動的な参加者により多くの報酬を与え、PoWやPoS特有である豊かな人がより豊かになってしまうという現象を防止します。

NEMの目標は、仮想通貨のエコシステムの基盤となることです。NEMはマルチシグトランザクションと暗号化メッセージ、また悪意あるノードの影響を最小化するために、改良したEigentrust++を実装しています。

 

2 Accounts and Addresses(アカウントとアドレス)

NEMはすべてのトランザクションの機密性、信頼性、否認不可性を保証するために、楕円曲線暗号を用います 。アカウントは、秘密鍵と公開鍵のペア(Ed25519)を持ち、トランザクションが確定されることで更新される情報と紐づいています。公開鍵は一方向関数によりNEMアドレスへと変換されるため、アカウントは一意なアドレスを持つことになります。

 

2.1 Account state(アカウントの状態)

アカウントには以下の情報が紐づけられており、これをアカウントのstate(状態)と呼びます。

  • 残高
  • 収穫(ハ—ベスト)したブロックの数
  • そのアカウントが参照された最初のトランザクションのブロック高
  • マルチシグアカウントリストと連署者リスト
  • 委任されたアカウントの情報
  • 重要度とNCD認知度ランク
  • 権利確定した残高(PoIやNEMにとって重要)

NEMネットワークの通貨はXEMと呼ばれます。 すべてのアカウントのXEM残高は権利確定したものと権利未確定のものに分割されます。アカウントがXEMを受け取った時には権利未確定の残高に加えられます。XEMを送金する場合、権利確定残高と権利未確定残高の比率を保留し、 1440ブロックごとに権利未確定残高の10分の1が権利確定残高に移動します。

ネメシスブロックのアカウントは完全に権利確定します。

 

2.2 NEM addresses(NEMのアドレス)

NEMのアドレスはbase-323でエンコードされたトリプレットで、以下の情報を持ちます。

  • どのネットワークであるかを示すバイトコード
  • 公開鍵の160ビットハッシュ値
  • 4バイトのチェックサム

NEMのアドレスは、チェックサムによって入力ミスに気づきやすくなっています。一度もトランザクションの送受信したことがないアドレスに対しても送金することができます。送信先アカウントのアドレスが誰のものでもない場合、そのXEMはまず間違いなく失われます。

 

2.3 Converting a public key into an address(公開鍵をアドレスに変換する)

公開鍵をアドレスへ変換するには以下の手順を必要とします。

  • 公開鍵に256-bit sha3関数を実行。
  • さらに160bit Ripemdハッシュ関数を適用。
  • Ripemdによってハッシュ化された値の先頭にバージョン情報を付与。
  • 256-bit sha3関数をもう一度適用し、先頭4バイトをチェックサムとする。
  • 3の実行結果と4のチェックサムを結合
  • 結果をbase32でエンコード

例)

  1. 公開鍵

X: deb73ed7d0334e983701feba4599a37fb62e862e45368525b8d9fb9ab80aa57e

Y: 169318abc3e5b002059a396d4cf1c3d35ba022c675b15fb1c4943f7662eef268

Z: a90573bd221a3ae33fec5d4efc4fa137897a40347eeafe87bee5d67ae5b4f725

  1. 圧縮後の公開鍵

c5247738c3a510fb6c11413331d8a47764f6e78ffcdb02b6878d5dd3b77f38ed

  1. sha3-256関数を実行(上の手順の①)

70c9dcf696b2ad92dbb9b52ceb33ec0eda5bfdb7052df4914c0919caddb9dfcf

  1. Ripemdハッシュ関数を適用(手順②)

1f142c5ea4853063ed6dc3c13aaa8257cd7daf11

  1. バージョン情報を付与(手順③)

681f142c5ea4853063ed6dc3c13aaa8257cd7daf11

  1. sha3-256関数をもう一度適用(手順④)

09132a5ea90ab7fa077847a699b4199691b4130f66876254eadd70ae459dbb53

  1. 先頭4バイトをチェックサムとする

09132a5e

  1. 5と7を結合(手順⑤)

681f142c5ea4853063ed6dc3c13aaa8257cd7daf1109132a5e

  1. base-32エンコーディング

NAPRILC6USCTAY7NNXB4COVKQJL427NPCEERGKS6

  1. わかりやすい形に直すと

NAPRIL-C6USCT-AY7NNX-B4COVK-QJL427-NPCEER-GKS6

図:Nemesisブロックの生成

 

2.4 Intentional address collision(アドレスの衝突)

異なる公開鍵から同一のアドレスが生成されると、攻撃者によって資金が引き出される可能性があります。

攻撃が成功するためには、sha3_256関数と、160 bit Ripemdハッシュ関数を通した値を同時に満たす公開鍵と秘密鍵のペアを見つけなくてはなりません。sha3_256は128ビットの安全性を持ちためsha3_256単体でも攻撃成功率は十分低いと言えます。NEMアドレスの重複の可能性は、ビットコインにおける重複の可能性とほぼ同じ確率と言えます。

 

3 Cryptography(暗号化)

ブロックチェーンテクノロジーは、暗号学の利用を前提としています。NEMは他の通貨と同様に、楕円曲線暗号を利用しています。これは、セキュリティとスピードを保証するうえで重要です。

NEMは、素数2255 – 19によって定義された有限体上の歪曲エドワーズ曲線

と、Ed25519と呼ばれるデジタル署名アルゴリズムを共に使用する方法を選択しています。これはD.J.Bersteinによって開発された、世界有数の安全で高速な署名アルゴリズムです。

対応するグループGの基点をBと呼び。このグループは、

q = 2252 – 2774231777737235353519197790883648493

の要素を持ちます。

すべてのグループ要素Aは256ビットの整数Aに符号化することができ、256ビットの文字列として解釈することもできます。またAを復号して再度受け取ることもできます。ここで言及されるハッシュ関数Hは、512ビットのSHA3ハッシュ関数です。

 

3.1 Private and Public key(秘密鍵と公開鍵)

秘密鍵は256ビットのランダムな整数kです。公開鍵A導出の手順は以下の通りです。

Aは公開鍵として機能する256ビットの整数Aにエンコードされます。

 

3.2 Signing and verification of a signature(署名と署名の検証)

メッセージM、秘密鍵k、公開鍵Aが与えられると、署名を生成するために以下の手順が実行されます。

(R、S)は秘密鍵kのもとでのメッセージMの署名です。署名の順応性の問題を防ぐためには、S < qとS > 0を満たす署名のみが有効であるとみなされることに注意してください。

メッセージMの署名(R、S)、および公開鍵Aを検証するには、S < qおよびS > 0をチェックしてから以下の計算を行います。

そして、以下を確認します。

Sが前述のように計算されていた場合。

よって

が成り立つことになります。

 

3.3       Encoding and Decoding messages(メッセージのエンコードとデコード)

NEMはメッセージのエンコード(暗号化)とデコード(復号化)にあたり、Bouncy Castle(Javaの暗号化API)のAESを利用しています。

秘密鍵kAを持ち、公開鍵ABの保有者に対してのメッセージを暗号化したいとします。 その場合に必要な共有鍵は以下のようにして計算されます。

※(2)aAを上述の

に基づいて計算します。

Saltは256ビットSHA3ハッシュ関数

shared secret = 公開鍵

さらに、別のランダムな16バイトをIVデータとして使用します。このことから、暗号化されたメッセージのペイロードは

  • salt
  • IVデータ
  • 暗号化メッセージのブロック

となります。

復号化も同じやり方で行われます。 公開鍵AB保有者は秘密鍵kA保有者の公開鍵AAと自身の秘密鍵kBおよびsaltを知る必要があり、以下のようにして共有鍵を作成します。

aB​​を上述の

に基づいて計算。

共有鍵と秘密鍵、IVデータを暗号化エンジンに供給すると、エンコードされたメッセージが復号化されます。

 

4 Transactions(トランザクション、取引)

トランザクションはアカウントの状態を変更できる唯一の方法です。まだブロックに取り込まれていない新たなトランザクションは未承認トランザクションと呼ばれます。未承認トランザクションはブロックに取り込まれるとは限らないため、そのままではアカウントの状態を変更することはできません。トランザクションがハーベスト(収穫:BitCoinで言うマイニング)によってブロックにとりこまれた場合のみ、アカウントの状態が更新されます。

トランザクションはいくつかの種類が存在します。トランザクションはPeer-2-Peerネットワークのリソースを消費するため手数料がかかります。金額はトランザクションの種類とパラメータによって決まります。

トランザクションには期限があります。ハーベストによってブロックに取り込まれる前に期限が切れたトランザクションはノードによって破棄されます。

各種アカウントの解説。

 

4.1       Transfer transactions(送金トランザクション)

送金トランザクションは、XEMをあるアカウントから別のアカウントへと移すトランザクションです。最大48バイトの小さなメッセージを持つことができます。(実際は96バイトですが暗号化に必要なデータが含まれます)

送金トランザクションの手数料は2つに分けられます。

送金手数料:TransferFee【最大:2か(99 ∗ arctan(送金量/150000))の大きい方 】

メッセージ手数料:MessageFee【メッセージ無しなら0。最大:2 × (1かメッセージ長さ/16の大きい方)】

この二つの合計が手数料になります。

 

4.2       Importance transfer transactions(重要度移転トランザクション)

重要度移転トランザクションは、ハーベストの権限を別のアカウントに委任します。これをハーベストの委任(delegated harvesting)と呼びます。これにより、元のアカウントは、リモートサーバー(VPS等)上で秘密鍵を公開しなくても、委任された重要度を利用してハーベストできます。この機能により、コールド・ストレージ内のアカウントは資金を危険にさらすことなくハーベストできます。

重要度移転トランザクションの料金は6XEMで固定です。

 

4.2.1    Activating(有効化)

ハーベストを委任するアカウントを指定した重要度移転トランザクションが行われることで、委任されたアカウントはハーベストが可能になります。

重要度移転トランザクションがネットワークに受理された後、委任が完了するには360ブロックの承認が必要です。

アクティベーション期間中は、元のアカウントのみ収穫できますが、委任されたアカウントは収穫できません。アクティベーション後は、委任されたアカウントのみが収穫できます。

 

4.2.2    Deactivating(無効化)

ハーベストを委任されたアカウントに対して特別なトランザクションを行うことで、委任を無効化できます。

このトランザクションも、360ブロックの承認が終わるまで委任の無効化は完了しません。

その間、元のアカウントはハーベストできませんが、委任されたアカウントは行なえます。無効化完了後、委任されたアカウントはハーベストを行うことができなくなり、元のアカウントがハーベストできるようになります。

 

4.3 Multisig related transaction types(マルチシグ関連トランザクション)

現在、NEMはマルチシグ(多重署名)アカウントをネイティブにサポートしています。 NEMのマルチシグトランザクションはフレキシビリティを考慮して設計されています。他のトランザクション(現時点では、送金トランザクション、重要度移転トランザクション、集計変更)は、マルチシグトランザクションでラップすることができます。

 

4.3.1 Aggregate modification transactions (multisig modification)(集合変更トランザクション)

集合変更トランザクションは、マルチシグ変更トランザクションとも呼ばれ、以下の2種があります。

  • マルチシグアカウントの作成

マルチシグアカウントに署名された特別なマルチシグ変更トランザクションを送信することで、アカウントをマルチシグアカウントに変更できます。このトランザクションには、連署人の情報が指定され、連署人は最大32です。

その後、マルチシグアカウントからトランザクションを開始することはできません。

  • マルチシグアカウントの設定変更

マルチシグアカウントの作成後、マルチシグトランザクションでマルチシグ変更トランザクションをラップするにより連署人の追加や削除ができます。一つのマルチシグ変更トランザクションで、複数の連署人を追加できますが、削除は1つだけです。

  • 連署人の追加には、全ての連署人の署名が必要です。
  • 連署人の削除には、削除されるもの以外の全ての連署人の署名が必要です。

全ての連署人が削除された場合、アカウントは通常のアカウント戻ります。マルチシグ変更トランザクションの手数料は

※number of modifications(変更の数)

 

4.3.2 Multisig signature transactions(マルチシグ署名トランザクション)

マルチシグ署名トランザクションは、マルチシグトランザクションに署名する際に使用されます。

手数料は常に6 XEMです。手数料は、連署人のアカウントではなくマルチシグアカウントから引き出されます。

対応するマルチシグトランザクションがブロックに取り込まれている場合にのみ、マルチシグ署名トランザクションはブロックチェーンに取り込まれます。マルチシグ署名トランザクションだけではブロックには取り込まれません。

 

4.3.3 Multisig transactions(マルチシグトランザクション)

前述のように、他のトランザクションはマルチシグトランザクションでラップできます。

マルチシグアカウントから他のアカウントにXEMを送信するには、送金トランザクションをラップしなければいけません。マルチシグにラップされたトランザクションには6 XEMの手数料がかかります。この手数料は、通常の手数料に加算されます。

次の例では、その詳細な手順を説明します。

仮に、マルチシグアカウント(M)の残高が1000 XEMで、3人の連署人(A、B、C)がいたとします。そして、100NEMをMから別のアカウントXに送金するとします。

3人の連署人は、いずれも100 XEMの送金開始を提案できます。そして、Bが送金を開始しAとCがマルチシグに署名するとします。

トランザクションの受け取りには、以下の手順が必要です。

  1. Bが、マルチシグアカウントの署名者として、また100XEMの送金量をもつ、未署名の通常の送金トランザクションを作成。
  2. Bは、見署名の送金トランザクションをマルチシグトランザクションでラップします。
  3. Bは、マルチシグトランザクションに署名し、NEMネットワークに送信します。
  4. AおよびCに、保留中のマルチシグトランザクションがあることが通知されます。
  5. Aは、見署名の送金トランザクションのハッシュに署名して、マルチシグ署名トランザクションを作成し、ネットワークに送信します。
  6. Cも、見署名の送金トランザクションのハッシュに署名して、マルチシグ署名トランザクションを作成し、ネットワークに送信します。
  7. すべての連署人が送金トランザクションに署名すると、トランザクションはネットワークに受理され100XEMがMからXに転送されます。

 

Aおよび/もしくはCが、トランザクションの期日前にマルチシグ署名トランザクションを送信しなかった場合、マルチシグ送金トランザクションはネットワークによって拒否され、送金は行われません。

 

4.4 Unconfirmed transactions (spam filter)(未承認トランザクション(スパムフィルタ))

新しいトランザクションが作成されノードに運ばれると、

  • そのトランザクションを未承認トランザクションとしてキャッシュに置く。
  • そのトランザクションを他ノードにブロードキャストする。(有効な場合のみ)

といった手順が踏まれます。

また、各ブロックチェーンの同期中に未承認トランザクションをポーリングする仕組みがあり、

ポート7890番を解放していない(ブロードキャストを受信できない)ノードは、新しい未承認トランザクションを検知します。

手数料を低くしてしまうと、ネットワークを妨害するトランザクション(スパム)によって、ネットワークが氾濫してしまう恐れがあります。そのため、ノードによって処理される未承認トランザクションの数は制限する必要があります。

誰かがネットワークにスパムを送っている時も、通常のトランザクションは処理しなければいけないため、単純にトランザクションの数を制限するだけではうまくいきません。また、アカウントごとに未承認トランザクションの数を制限するとしても上手くいかないでしょう。なぜなら、攻撃者は好きなだけアカウントを作成できるからです。NEMでは非常にスマートな方法でフィルタリングが行われます。

  • 未承認トランザクションを格納するキャッシュを1000スロットとします。
  • 120スロット未満しか満たされていない場合、トランザクションは拒否されません。
  • そうでない場合に、fsで満たされたスロットが存在し、かつ署名者Aの新しい未承認トランザクションが到着すると、キャッシュ内のアカウントAのスロットの公平な分配計算方法は

importance(重要度)

transaction fee(送金手数料)

fair share(公平なスロット分配量)

Aがfair shareよりも少ないスロットの場合、新たな未承認トランザクションは受理されます。

トランザクションの手数料を増やすことで、トランザクションが承認される機会を増やすことができます。

下の図は、有効で重要度1の場合のスロット数と公平なスロット分配量の関係です。攻撃者がたくさんのスロットを占領しようとしても、それほど得ることができないことがわかります。

アカウントの数を増やしたとしても、各アカウントの重要度は低くなります。手数料を増やすことで攻撃することもできますが、攻撃者自身の資産を消費することになります。

 

5 Blocks and the block chain(ブロックとブロックチェーン)

全ての仮想通貨において中核となるのは、ブロックチェーンと呼ばれる公開台帳です。NEMの各ブロックには120のトランザクションを含めることができます。チェーン内のブロックと、ブロック内のトランザクションは順序付けされているため、取引の完全な履歴がブロックチェーン内には記録され、永続にデータベースに格納されることになります。NEMでは、ブロックチェーン内の最初のブロックをネメシスブロックと呼んでいます。

各ブロックの構成は以下の通りです。

  • ブロックのバージョン
  • ブロックのタイムスタンプ
  • ハーベスト者の公開鍵
  • ブロックデータに対する署名
  • 一つ前のブロックのハッシュ値
  • 生成されたハッシュ
  • ブロック高
  • トランザクションのリスト

※以降のセクションでは、ハッシュ関数Hは256ビットのSha3ハッシュ関数を意味します。

 

5.1 Block difficulty(ブロック生成難度)

ブロック生成の難度は、最後の60ブロックの難度とタイムスタンプから計算されます。60ブロック以下の場合はある分だけが考慮されます。

次の図は、360ブロックの生成難度の平均です。

ブロックが一つの場合、予め定義された初期難度(1014)を用います。

それ以外の場合、直前のnブロックから次のように計算されます。

※ d(平均難度)

※ t(平均生成時間)

※ difficulty(新しい難度)

新しい難度が直前のブロックの難度よりも5%以上離れた場合5%に制限されます。

さらに、難度は一定の範囲内に保たれます。1013〜1015が境界となります。

シミュレーション時とNEMのベータ版では、このアルゴリズムが平均時間60±0.5秒でブロックを生成したことが確認されています。

5%という緩やかな変化率は、全体に対しての重要度が50%未満の攻撃者が秘密裏にチェーンを作っていたとしても60秒よりもかなり長い時間がかかることになり、他のチェーンよりも長いチェーンを作ることを難しくします。

 

5.2 Block score(ブロックスコア)

ブロックスコアは、その難度と最後のブロック以降に経過した時間(秒)から導き出されます。

※score(ブロックスコア)

 

5.3  Block creation(ブロック生成)

新しいブロックの生成プロセスは収穫(ハーベスティング)と呼ばれます(ビットコインでいうマイニングに相当するもの)。収穫者アカウントはブロックに含まれるトランザクションの手数料を得ることができます。収穫者(ハーベスター)には、できるかぎり多くのトランザクションをブロックに追加するインセンティブが生まれます。ハーベスティングに参加する資格があるXEMの最低残高は10,000XEMです。

アカウントが特定のネットワークに新しいブロックを作成できるかどうかを確認するために、次の変数が計算されます。

※ h = H ( 直前のブロックのハッシュ, アカウントの公開鍵) …(256ビットの整数)

※ t = 直前のブロックからの時間(秒)

そして、”hit”と”target”という整数の値が導かれます。

hit < targetが満たされる時に、アカウントには新しいブロックの生成が許可されます。収穫が委任されている場合、委任されたアカウントの重要度の代わりに元のアカウントの重要度が使用されます。

ターゲットは経過時間に比例するので、全アカウントが不運にも高いヒットを生成したとしても、一定時間経過で新しいブロックは作成されます。

ヒットに指数関数的に分布があることにも注意してください。したがって、重要度が多くのアカウントに分割されていたとしても、新しいブロックを作成する確率は変わりません。

 

5.4 Block chain synchronization(ブロックチェーンの同期)

ブロックにはスコアが割り振られているので、ブロックの集合にもスコアをつけることができます。

ブロックチェーンの同期は、ブロックチェーンを基礎としたあらゆる仮想通貨にとって中心的なタスクです。時々刻々と、ローカルノードはリモートノードにチェーンのことについての問い合わせを行います。リモートノードは計算された信用できる値(6章を参照)に基いて選ばれます。

もし、リモートノードがスコアの高い方のチェーンを請け負った場合、2つのノードが最後の共通ブロックへの同意を試みます。同意に成功した場合、リモートノードはローカルノードへこのチェーンの400ブロックを供給します。

供給されたチェーンが有効だった場合、ローカルノードは自身のチェーンをリモートノードのチェーンと置き換えます。無効だった場合、ローカルノードはそのチェーンを排除し、リモートノードとの同期には失敗したものとみなします。

このアルゴリズムはフォークも解消します。最後の共通ブロックとローカルノードの最終ブロックを比較したとき、ブロック高の差は360以下になります。ゆえに、この同期アルゴリズムで解消できるフォークの最大差は360です、

以下のフローチャートは詳細な図解です。

 

6 A reputation system for nodes(ノード評価システム)

他の仮想通貨ネットワークと同様、NEMのネットワークはpeer-to-peer(P2P)ネットワークです。 P2Pネットワークには大きな利点があります。それは、単一の誰かを排除してもシャットダウンできない頑健性です。

とはいえ、数年間の経験よりP2Pネットワークの欠点も明らかになりました。 ネットワークの参加者は匿名で、誰でも加わることができます。これは、悪意あるノードをネットワークに注入する事を容易にし、根拠の無い情報を広めるなどネットワークを妨害させることにもなります。そのような悪意あるノードを特定して、トランザクション量を減らす必要があります。そのための方法として、もっとも効果的な方法の一つが、ノードを評価する仕組みです。NEMでは、EigenTrust評価システムと同じようなアルゴリズムを実行することでこのアプローチをフォローしています。


6.1 Node interactions
(ノード間のやりとり)

NEMネットワークのノードは、トランザクションやブロック等についての情報を共有することで、お互いにやり取りしています。ノードは、他のノードに新しい情報をブロードキャストするか、新しい情報について他のノードに問い合わせを行います。

そして、リモートノードから情報を受け取ると、その情報が妥当なものか検証し、また使用可能かチェックします。各ノードは、やり取り(もしくは呼出)の結果を成功(新しい有効な情報を受け取った)、ニュートラル(既知の有効な情報を受け取った)、または失敗(無効な情報を受け取った)とするかどうかを決定できます。

各ノードiは、ノードjとの成功や失敗といったやり取りを数えたマップ【success(i,j)、failed(i,j)】として、結果を記録していきます。ニュートラルに関しては記録しません。

6.2 Local trust value(ローカルノードの信頼度)

各ノードは、設定ファイルで構成され、自分自身のニーズに合わせてユーザーが編集できるいわゆる事前信頼済みノードの集合Pで始まります。まずノードは、事前信頼済ノードにネットワーク内に存在する他のノードについて尋ねます。そして、ネットワーク内のn個のノードについて知ることができたら、各ノードは初期の信頼ベクトルを設定することができます。

※otherwise(それ以外)

Pjは、初期状態のノードjがどれくらい信頼できるノードを有するかを示す信頼度です。

一定時間経過後、ノードは他のノードといくらかのやり取りを交わし、計算によってローカルの信頼度を更新できます。

そして、ローカルの信頼度を正規化します。

このコンポーネントを用いてローカルの信頼ベクトルを定義します。

 

6.3 Aggregating local trust values(ローカルノードの信頼度の集計)

ノードは時々、ローカルの信頼度を他のノードにブロードキャストします。

他のノードからローカルの信頼度を受信すると、ノードiは、ノードjが持つ自身の信頼度でノードkにあるローカル信頼ノードjを重み付けすることによって、ノードkのための集合信頼度を計算することができます。

これは、C =()を定義することと、成分 を有するベクトル によって行列表記で書くことができます。

繰り返すものと定義すると、

これは、Cが既約で非周期的であるという前提の下で、行列Cの左の主固有ベクトルに収束します。この仮定が有効であることを保証するために、初期の信頼ベクトルの一部を繰り返しの中に織り込むことによって繰り返しをわずかに変化させます。

ここでは0 <a <1が選択されます。この繰り返しは、ノードが他のノードに対して持っている信頼度を表すベクトル に常に収束します。

 

6.4  Enhancing the algorithm(アルゴリズム強化)

信頼値を計算するための上記のアルゴリズムは、他のノードからのフィードバックが正しいものかは不明であるという問題があります。悪意のあるノードは、善意のノードには低い信頼値を、不正なノードの場合は高い信頼値を結託してフィードバックするかもしれません。

改善方法として、他のノードによるフィードバックの信頼性を評価すること、およびその信頼性でフィードバックの信頼値を重み付けすることがあります。そのために、common(u、v)は次のように定義されます。2つのノードuおよびvは、互いにやり取りを行います。とすると、2つのノード(sim(u、v))へのフィードバックの類似性を計算することができます。

※ bは正の整数(原著ではb=1で提案されています)です。

この場合、フィードバックの信頼性は以下のようにして定義されます。

最終的に、行列L =(lij)は以下のように定義することができます。

これには、信頼値とフィードバックの信頼性が両方を組み込まれています。

これで、容易に上述の式

に繰り返しが定義できます。

これは、べき乗法により基底行列の左固有ベクトルに収束します。

オリジナルのEigentrust++論文では、善意のノードと悪意のノードとの間の信頼値の伝播を制限するために追加措置を提案しています。この論文は、ファイル共有ネットワークを念頭に置いています。そのようなネットワークでは、不完全なデータ(ファイルの一部)が共有されると、妥当性をチェックすることができません。したがって、善意のノードであっても悪意のあるデータを配布する可能性があります。NEMネットワークのノードは、常にデータを完全にダウンロードし、他のノードに配布する前に完全性を検証します。NEMネットワークのシミュレーションでは、追加で信頼値伝播対策を行わなくとも、悪意のあるノードの影響を軽減するのに十分である結果が示されています。

図6:悪意のノードが常に攻撃するシミュレーション

 

6.5 Benefits of the reputation system(評価システムの利点)

ノードに評価管理システムを導入することで、他のノードの信頼値に応じて通信相手となるノードを選択することができます。これはまた、ネットワークの負荷分散にも役立ちます。なぜなら、通信相手の選択はノードの誠実さにのみ依存し、その重要性に依存しないからです。

このアルゴリズムにより、通信の失敗数が劇的に減ることをシミュレーションにより確認できます。悪意のノードが悪意のデータしか提供しない場合でも、容易に識別できるからです。(図6)

たとえ悪意のあるノードが結託し他の悪意のノードに高い信頼値を与え、一定の割合で悪意のデータとフィードバックを送り続けたとしても、この信頼アルゴリズムは通信の失敗割合を下げることができます。(図7)

図7:悪意のノードが攻撃するシミュレーション

 

NEM Whitepaper翻訳記事第一弾はここまでです。

第二弾も近日中にアップ予定です。

長文にお付き合いいただきありがとうございました。

 

簡単スタート仮想通貨取引はこちらから↓

仮想通貨取引はだれでも簡単にスタートできます。

新オススメの取引所はこちら!!

手数料が安く仮想通貨FXなら“GMOコイン

大手証券会社「GMOクリック証券」も手がけるGMOならではの安心取引。口座開設も非常にスマートで最短3営業日で登録できます。(混み具合で変わるようですが・・・)


登録の方法はこちらで詳しくご紹介しておりますのでご活用ください

 

オススメ取引所 口座開設方法【GMOコイン編】

手数料の安さとトークン取り揃えに加えて仮想通貨積み立てもできる“Zaif”

2018年1月現在、BitCoinの現物取引手数料が-0.01%と最安の取引所Zaifです。
取扱アルトもそこそこに、COMSAトークンをはじめとした各種トークンを取り揃えていますので、現在別の取引所をメインで使っている方にもオススメの取引所です。
2018年9月、残念ながらZaifも通貨の盗難事件が発生しました。今はZaifでの取引もオススメできない状況になってしまいました。

オススメ取引所 口座開設方法【Zaif編】

 

オススメの取引所①はこちら!!

出川哲朗さんのCMでおなじみの大手仮想通貨取引所CoinCheckさんです。CoinCheckさんは選べる仮想通貨の種類がダントツに多いので、初心者には一押しの取引所です。下のバナーから、簡単に登録できます。

2018年1月26日 コインチェックはNEMが大量に流出する事件が起こりました。27日現在は、入出金等が停止されているため登録はお勧めできません。

2018年3月12日 流出したNEMの返金と、一部の仮想通貨が取引再開されました。今後の巻き返しに期待ですね!!

ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin

コインチェックの超簡単登録方法

 

CoinCheckで480億円相当のNEMが盗難に。

世界中で仮想通貨の流出が相次いでいます。

仮想通貨取引所に預けたままにするのは危険です!自分の資産は自分で守る。ハードウェアウォレットの導入はこちらから。
※現在、非常に品薄状態だそうです。また、中古品は危険なのでハードウェアウォレットは正規品の購入をオススメします!!

正規品購入はこちらから

 


こちらも合わせてお読みください

 

【おすすめハードウェアウォレットの使い方】

スマホを持っている方はこちらもオススメです!導入が無料でとっても簡単なソフトウェアウォレットGincoです。

こちらも合わせてお読みください

 

【Gincoの使い方を詳しく紹介】


Zaifに無料登録する

SNSでもご購読できます。

コメントを残す


%d人のブロガーが「いいね」をつけました。