ファクト

ÆTERNITYのセキュリティ監査報告を読んでみる9

更新日:

本稿について

ÆTERNITYのメインネットリリース前から行われているセキュリティ監査報告のv0.5について見ていきます。今回の範囲は「5. Nodes」の「5.1 Design」、「5.2 Miner Nodes」です。

原文はこちらになります

スポンサードサーチ

今回のまとめ

  • ノードにはサードパーティ製のノード「elixir-node」もあるが、今回の監査ではÆTERNITYのノード「Epoch」を扱う。
  • EpochはErlangという言語で開発されている。cnlabは、Erlangはスケーラブルな分散型システムにとって良い選択であると考えている。
    • ノード実装はコア、Cowboyサーバ、Noiseプロトコル、eNaClからなる。
  • マイニングノードは基本的にはEpochと同じで、これにマイニング機能が加わったされたもの。マイニングはC言語ベースのCuckooサイクルに準じてUnixサーバ上の別のプロセスで動く(Erlangとは無関係)。

※以下、今回まとめた範囲の和訳になりますので詳細をご覧になりたい方は読み進めてください。

5. ノード

ノードはÆTERNITYネットワークのコアコンポーネントである。本章では"Epoch"と呼ばれるÆTERNITYノードのリファレンス実装をアセスメントする。

ÆTERNITYネットワークの本番ローンチ前であるが、サードパーティによって別のノード("elixir-node")が実装されている。elixir-nodeについては本アセスメントのスコープ外である。

5.1 設計

ÆTERNITYノードのリファレンス実装はErlangというプログラミング言語で書かれている。ErlangはスウェーデンのEricsson社がスケーラブルな分散型システムのための言語として開発した関数型言語である。Erlangの重要な機能はタスク分散で、タスクをプロセッサ上で独立して実行できる多数の(数千以上の)軽量なプロセスに分散する。従って、Erlangは意図して確実なプロセス分離を提供できる。

cnlabは、Erlangはスケーラブルな分散型システムにとって良い選択であると考えている。

ノード実装はいくつかの異なるコンポーネントで構成される。

  • ノードコア
  • HTTPサーバ(Cowboy)
  • Noiseプロトコル実装(Erlang)
  • eNaCl - libsodiumへのバインディング(楕円曲線暗号)(※1)

筆者注:

  • ※1について
    libsodiumは暗号関連の便利な機能を提供してくれるライブラリ。もとはNaCl(エヌエーシーエル→塩化ナトリウム→塩)というライブラリから分岐してできたものです。バインディングというのはあるプログラミング言語向けにライブラリなどが提供されていることを指します。
    eNaClはÆTERNITYのノード開発言語であるErlang向けに提供されているlibsodiumのことです。他にもErlang向けのlibsodiumライブラリはあります(Erlang-NaCl、Erlang-libsodium、Salt)が、GitHubを見る限りeNaClが最も活動量(Commit、Release、Contributor等)が多く妥当かなといった印象です。

5.2 マイナーノード

マイナーノードは実装の観点からすれば通常のノードと同じである。マイニングはUnixサーバ上の別のプロセスに実装され、Erlangランタイム環境外で実行する。このプロセスはJohn TrompによるCuckooのC言語実装3に基づく。

脚注3:https://github.com/tromp/cuckoo

ÆTERNITYのセキュリティ監査報告を読んでみる8 ←← 前)|(次 →→ ÆTERNITYのセキュリティ監査報告を読んでみる10

免責

邦訳には誤りがある場合がございます。予めご承知おき下さい。

確実な情報を知るためには冒頭に示した原文をご参照くださいますようお願いいたします。

-ファクト
-, , ,

Copyright© 暗号通貨界隈のメモ書きなど。 , 2019 All Rights Reserved Powered by STINGER.

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