暗号通貨NEM(ネム)についてざっくりと調べた

bitcoinやEthereumなど暗号通貨が色々存在する中、NEMという暗号通貨は全通貨がすでに発行済みであることやPoIという謎のコンセンサスアルゴリズムを採用しているということで非常に興味が湧いたので雑ながら調査してみた。

調べる際には下記の点について気にしながら各種記事を読んだ。

  • 専門用語をあまり使わずに概念レベルの理解をする
  • P2P上における悪意あるノードに関する対策はどうやってるのか
  • 不正なブロックが承認されないようにする仕組みは何か

また、ブロックチェーンの復習もかねて自分なりの理解も含めてメモしたので間違ってる記述も色々ありそう。

あと、雰囲気で理解しやすいように砕けた書き方になってる。

ちなみに雑なメモじゃなくちゃんと知りたい人は、下記のリンクを読んでください。僕のメモより圧倒的に詳しく網羅的に書かれてます。

基本知識

  • NEM = New Economy Movement
  • 総発行量は8,999,999,999XEMで全て発行済み。今後の新規発行は無い。
  • マイニングが存在しない

P2P

  • P2Pとは、クライアント-サーバーモデルと違い端末間(ノード間)で通信するアーキテクチャ
  • NEMではローカルノードとリモートノードが存在するシステム
  • EigenTrust++

ブロックチェーン

  • 雑な理解 => 改ざんされると困るものの改ざんをみんなで防ぐシステム
  • 改ざんされると困るもの(決済、契約、投票等)全てに応用可能
  • プログラマティックな核となる部分
    • 前のブロックのハッシュを次のブロックに含める
  • コンセンサスアルゴリズム
    • 雑な理解 => 改ざんされると困るものの改ざんを防ぐアルゴリズム。不正なブロックの生成を防ぐためのアルゴリズム
    • PoW
      • コンピューターリソースと電力を使った競争による
      • bitcoiinとか
    • PoS
      • コインの保有量による(あんま調べてない...)
      • Ethereumとか
    • PoI
      • コインの保有量と取引量によるノードの重要度による
  • ざっくりまとめると、
    • 分散ネットワーク上に
    • 三者認証局みたいなシステムを建てて
    • 改ざんされると困る様々なものを
    • 独自のアルゴリズムを使って防ぐ仕組み

ブロック

  • ブロックの生成時間は約1分前後になるように難度を調整してる
  • ブロックの構成
    • ブロックのバージョン
    • ブロックのタイムスタンプ
    • 収穫者(ブロックの作成者)の公開鍵
    • ブロックのデータに対する署名
    • 一つ前のブロックのハッシュ値
    • ジェネレーションハッシュ(ブロックの作成に必要)
    • ブロック高
    • トランザクションのリスト

マイニング

  • NEMではマイニングが無く、報酬を分配するハーベスティングを行う
  • 10000XEM以上(vested balance)を持っている人のみ参加可能
    • vested balanceとはハーベスティングする許可を得るために必要な信頼度みたいなもの
    • ウォレット内に保有するXEMの量によって日に日に増えていく仕組み
    • 10000XEMくらい保有して10日程度でハーベスティングの許可が降りる == vested balanceが1万XEMになる
    • 不正にアカウントを作成させるのを防ぐための仕組み
  • ローカルハーベスティングとデリゲートハーベスティングがある
    • 違いはローカルでやるか、リモートのサーバーでやってもらうか
    • あとは開始までの時間や手数料が違う

コンセンサスアルゴリズム

  • コンセンサスアルゴリズムとは、PoW,PoSのようなブロックチェーンの改ざんを防ぐためのもの
  • NEMではPOI(Proof of Importance)を採用してる
  • NEM:XEMをたくさん使った(流通させた)人がより多くのブロックの承認ができ、報酬を得られる
  • 電力消費や富の局所集中を防ぐ
  • POIのスコアが大きい人はよりマイニング実行者に選ばれやすくなる。
  • NCDawareRank
    • 雑な理解だけど、POIのスコア計算の一部を担うアルゴリズム
    • PageRankよりも複数のアカウント作成によるスパム攻撃に強い
    • NCDawareRankはPageRankで悪用されがちなバックリンクなどの不正はスコアを下げる要因になる
  • Nothing-at-Stake問題
    • 不正なブロックをリスクなく生成できる(インセンティブが内在する)問題
      • ブロック生成コストが低い場合に発生する
      • PoWでは発生しない
        • めっちゃ電力食うのでコスト高い
      • PoSで発生しえる
      • PoIでは生成コストはほぼ無いが、生成難度を調整することである程度対策を打ってる

その他の特徴的な点や気になる用語

  • NIS
  • アポスティーユ(apostille)
    • 公的記録やオリジナル作品ファイルの所有者と改ざんしてないことを証明する署名システム
    • ファイルをアポスティーユするとNEMブロックチェーンに登録され、ファイルの所有者であることを証明する秘密鍵等が発行される
    • 所有者はその秘密鍵を使ってファイルが改ざんされてないかチェックできる
  • ネームスペースとモザイク
    • ネームスペースはドメインみたいなもの
    • モザイクは独自通貨
    • モザイクは送受信できる
    • 名前、供給量、可分性を自由に設定でき、徴収機能も備えてる
    • testname_spece:test_mosaic みたいな感じで表記する
    • 仮想通貨NEM:XEMXEMもモザイクの一つ
    • なのでXEMさえ持ってれば好き勝手に独自通貨razokulover:hadakaみたいな通貨を発行できる
  • マルチシグ
    • マルチシグ(正式名称マルチシグネチャ)は一つのアカウントに関する出金を複数名で管理する手段
    • 具体的な使い方としては、財団のお金を複数人で管理するなど

次やること

基本用語とざっくり仕組みの理解ができたら次はAPIをいじって遊びたい。

nem-toolchainというcliツールがあってこれを使うとアカウント作成やモザイク作成などが簡単にできるらしいし、Golang製みたいなのでAPIの叩き方とかみてみるのもよさそう。

とりあえずハーベスターになるには10000XEMないといけないけど、今は10000XEM=110円くらいなのですぐには無理っぽい。

参考リンク

www.wantedly.com