3月第2週の開発週次報告をいつもよりやや突っ込んで分析したみた

ということで、暗号通貨そのものへの不安の広がりを感じますので、今回は、よりマジメに3月第2週の開発週次報告を読みます!

まずは、DAEDALUSから見てみましょう。DAEDALUS=ウォレット、という認識は強いと思いますが、実際のところ、DAEDALUSは週次報告のくくりを見ると、3つの要素から構成されています。ウォレット、アプリケーションプラットフォーム、CARDANOエクスプローラーです。

各々みていきましょう。

DAEDALUS-CARDANOウォレット

Daedalus 2.3.0-ITN1リリース。接続時間および同期時間の改善を意図して、cardano-walletおよびJörmungandrノードの新バージョンを導入。
・メンテナンス:カスタム番号、日付、時間フォーマットのテストカバレッジを実装、設定画面のテーマ選択を再び可能に。サードパーティパッケージの更新作業。

とあります。いつもはこんな感じです〜と流しますが、今日は少し真面目に突っ込んでみていきましょう。

:innocent:「cardano-walletおよびJörmungandrノードの新バージョンを導入というのはどういうことでしょうか?ウォレットにcardano-walletを導入って「馬から落ちる時に落馬するシステム」並に意味がよくわかりません!」

これはcardano-walletというのはDAEDALUSを後ろで支えてあげるシステムのような意味で理解すると良いでしょう。Cardanoは1にも2にも3にもHaskell重視のプロジェクトですが、DAEDALUSチーム自体が使っているのは実はJavaScriptです。これは私たちが使う、本当に表面の製品だからです。いわば車のハンドルだったり椅子だったりの部分です。中身のエンジンやバッテリーなどは全てHaskellで作られています。これがcardano-walletです。紛らわしいので私は財布支援機能、とかいう風に読んでいます。

したがって、「cardano-walletおよびJörmungandrノードの新バージョンを導入」というのは、新しいエンジンやバッテリーに合わせたハンドルや椅子にしました、というような感じで捉えていただければいいかなと思います!

:innocent:「テストカバレッジ?サードパーティパッケージ?とはなんですか?私は日本人で日本語しかわかりません。こういう横文字はマジでよくわかりません。」

テストカバレッジを上げる、というのはテストされている、しようとしている範囲を上げた、という意味です。車で言うと、今まで椅子はテストしていなかったけど椅子の安全性もテストするようにしました、とすると椅子をテストカバレッジに含め、テストカバレッジを上げた、ということになります!

サードパーティパッケージの更新、というのは、DAEDALUSの動きやデザインに関して、DAEDALUSチーム以外が作った所とうまく連携するようにした、というような意味です。つまり、実際椅子の塗料は塗料チームが作っていますが、それと椅子の素材がその塗料に馴染むように改良した、みたいな意味合いです!

DAEDALUS-アプリケーションプラットフォーム

・Cardano GraphQLにCORS設定を追加して、APIアクセスの制御性を向上。子では特定のオリジン配列が可能に。
・GraphQLスキーマ用に自動生成されたTypeScript定義もパッケージとして消費用に公開され、クライアント側の型の安全性のために実行するサービスへ直接依存する必要性を切り離しています。

:innocent:「前からこの項目あるけど、そもそもアプリケーションプラットフォームって何?」

アプリケーションプラットフォームですがこれはアプリをたくさん扱うための場所、という意味です。アプリというのは、改めて何かというと、ん?ってなるかもしれませんが、単純にパソコンやスマホを開くと表示されるアイコン達、これがアプリです。DAEDALUS-アプリケーションプラットフォームはDAEDALUSで構築されるアプリ達、あるいはそのアプリ達の場所作りを担当しているんだという感じです。

:innocent:「Cardano GraphQL?CORS設定?APIアクセスの制御性?オリジン配列?・・・???????高度に暗号化されてますね、もう見たくありません」

と思われるかもしれませんが、粘り強く専門用語を倒していきましょう。まずは、Cardano GraphQLは、Cardanoブロックチェーンの状態を問い合わせることができるための便利ツールです。車で言うと速度メーターを簡単に取り付けられるための速度メーターの接続部分、と言う感じでしょうか。CORS設定と言うのは、「Cross Origin Resource Sharing」の略で、異なる領域にアクセスしたときのルールで、車で言うと、速度メーターの取り付け部分に、これならOK、これはダメと言うルールを入れることができました、と言うような意味です。APIというのは、Application Programming Interfaceの略で、外部からの情報を扱うためのもので、「Cardano GraphQLにCORS設定を追加して、APIアクセスの制御性を向上」は車で言うとメーターの接続部分にOK、NGの基準を入れることができるようにして、車のメーターからデータを読み取ってメーターに表示させる仕組みがメーター計測データを取りに行こうとする時の流れをコントロールしやすくしました、という意味になります。オリジンとは、オリジン = スキーム、ホストの組み合わせで、http://ex.comで言うとhttp://がスキームex.comがホストです。URLのようなものだと思ってください!これをシングルまたはコンマ区切りでいけます、という感じです。

:innocent: GraphQLスキーマ?TypeScript定義?クライアント側?・・・??????????????????????????????????

スキーマというのは構造みたいな意味、 TypeScriptとは、型がついたJavaScriptのこと、 クライアント側というのは私たちユーザー側、ということ、つまり、速度メーター表示する構造用に作られた型つきのプログラムが公開されて、型がついているので、エラーが起きづらく私たちそれを利用するユーザー側が安全に使えるよ、というような意味です。

DAEDALUS-CARDANOエクスプローラー

・QAチームは、QAテスト結果に合わせたフロントエンドのデザインおよびアプリケーションロジックの変更を完了しました。開発の深化を補助するために、継続的なデプロイプロセスの新たなステージングを確立し、他のウェブプロジェクトを進めるための標準を向上させました。

:innocent:「QAってなんですか?ステージングを確立ってなんですか?」

QAってのは品質向上、ステージングを確立というのは基礎ができた、というような意味です…つまり、品質向上チームはエクスプローラのデザインとか仕組みを改善して、いい感じの仕組みを作るための基礎ができたよ、という感じです!

ADRESTIA-ウォレット

cardano-walletとcardano-nodeの組み合わせを使用した、Byronウォレットから別のByronウォレットへトランザクションを送信する最初のE2E統合シナリオを制作しました。これは主要なマイルストンであり、チームはあといくつかの統合シナリオを制御してから、来週のリリースを目指しています。

また、最近発見されたいくつかの不具合、特にWindowsデバイスで見られる奇妙なビヘイビアについて調査を進めているほか、Nightlyの自動テストがWindows環境でまもなく行えるようになる見通しです。これにより、IDの発行およびレゾリューションスピードの改善が見込まれます。

:innocent:「ADRESTIAってどっかで聞いた気がするのですがなんでしたっけ?」

出ましたADRESTIA!ということで、これは復習です、ADRESTIAは単純にいうとプールとDaedalusを繋ぐ橋です。ここでいうウォレットというのはDaedalusではなく、Daedalusへの橋を意味しています。

:innocent:「cardano-nodeって何?E2E統合シナリオとは?ビヘイビア?Nightlyとは?レゾリューションって何?」

cardano-nodeはHaskell版のプール、E2E統合シナリオとはエンドツーエンドつまり最初から最後までの状態、ビヘイビアというのは振る舞い、Nightlyとは最新版のこと、レゾリューションとは細かさのことです…つまり、Haskell版のプールなどまで含めた最初から最後までのテストを作りました。Windowsが変な動作をする現象について調査してて最新版を自動でテストできる仕組みがWindowsでできるようになります、というような感じです。来週になんらかのリリースがあるようなので期待ですね!

ネットワーキング

・多重化層のingressキューを保護するサイズ制限の計算を行ったほか、コードのリファクタリングによりネットワーク中のバイト数に影響するすべての必要とされるパラメーター(例:パイプライン化されているメッセージ数)を中央部に設定。
・ハンドシェイクミニプロトコル用のタイムアウトを実装し、cardano-db-syncクライアントがノードに接続することを妨げているいくつかのバグを修正。

:innocent:「多重化層のingressキュー?リファクタリング?パイプライン化?ハンドシェイクミニプロトコル?タイムアウト?cardano-db-syncクライアント?」

ingress=装置へ入力するタイミングで帯域情報計測する概念/システム
キュー=データを先入れ先出しのリスト構造で保持するもの
リファクタリング=プログラムの動作や振る舞いを変えることなく、内部の設計や構造を見直し、コードを書き換えたり書き直したりすること
パイプライン=コンピュータにおける処理要素を直列に連結し、ある要素の出力が次の要素の入力となるよう配置・処理するもの
ハンドシェイク=二台の装置が通信する際に、相手方の応答確認や設定値の交換など、本来的な信号やデータの伝達以外に行われる通信のこと
プロトコル=コンピューター同士の通信をする際の手順や規格
タイムアウト=処理やデータ転送などがあまりに長引いた場合に、途中で強制的に打ち切って終了すること
cardano-db-sync=チェーンをたどり、チェーンからPostgreSQLデータベースにデータを挿入する機能

ということで、専門用語多めなので単語毎に説明されても辛いかもしれません、元の文書を言い換えますと…

・データが入ってくる時のサイズ量を計測するためのツールの箱の大きさを制限する計算を行って、コードの内部改良をして順番通りに処理されるメッセージの数の設定も調整しました。
・プール同士が通信する時のルールとして、一定時間経ったら通信が切れるようにして、データをやりとりする機能のバグを修正しました。

という感じです。これでもちょっとわかりづらいかもしれませんが、つまりはプールとプールが通信する時のルールを改良しましたという感じです!

DEVOPS

・新しいCardanoノード用のWindows Cl自動化、およびDaedalusの新Haskellノードおよびウォレットとのパッケージ化に取り組む。

つまり、Haskellノードに関連する開発を色々やっているという感じです!

CARDANO分散化

・バグの修正を行い、正確なブロックヘッダーサイズおよびブロックボディサイズ関数を導入(単純なspec関数に置き換え)。(当作業の残りとして、再ハッシュを避けるためにシリアライズのアノテーションを適用する予定)
・極めて重要なVRFチェックの最適化(毎回計算する代わりにln (1-f)を保存)を追加し、報酬計算においてステーク総数とアクティブステーク数を入れ替え。IOHK研究者の推奨に従ったものだが相対的ステークはパフォーマンスなど別の部分でまだ使用中。
・期限切れのノードを停止するメカニズム追加。現在最大主要プロトコルバージョンのグローバル変数が設定され、このポイントを超えたブロックは有効と見なされる。
・ステークプール登録パラメーターにオプションのステークプールメタデータおよびステークプールリレーを追加し、Shelley-ledger Haskellパッケージおよびモジュールに改称したほか、テストパフォーマンスに取り組む。

:innocent:「シリアライズ?アノテーション?VRFチェック?ln (1-f)?相対的ステーク?期限切れのノード?最大主要プロトコルバージョン?グローバル変数?ステークプールリレー?」

シリアライズ=複数の要素を一列に並べる操作や処理のこと。 単に シリアライズ といった場合には、プログラムの実行状態や複雑なデータ構造などを一つの文字列やバイト列で表現する「直列化」を指すことが多い
アノテーション=データやプログラムの中に特殊な記法を用いて埋め込まれた付加情報のこと
VRFチェック=ルータの中に、なんちゃってルータを作る技術=1つのルータ上で独立した複数のルーティングテーブルを保持 できる技術
ln (1-f)=ファイルやディレクトリのリンクを作りだすコマンド
相対的ステーク=他との関係性から計算したステーク
期限切れのノード=停止するプール
最大主要プロトコルバージョン=たくさん使われているプールのシステムのバージョン
グローバル変数=コンピュータプログラミングにおいて全てのスコープからアクセスできる変数
ステークプールリレー=プールの中継システム

ということで、これも専門用語多めなので単語毎に説明されても辛いかもしれません、元の文書を言い換えますと…

・バグ修正して、正確なブロックの頭と胴体の大きさに関する関数を入れました。残り、再度のハッシュになることを避けるためにデータを圧縮するときに追加の情報をそこに埋め込むようにします。
・チェックにあたって、相対的に割り出す方法ではなく、関数を使って効率的に計算するようになりました。
・停止したいノードを停止できるようになり、あるポイント以上のブロックが有効になるとするようなシステムも出ました。
・プール登録するに当たって、その中継やメタデータが入れられるようにしました。

という感じです!

GOGUEN

・エミュレーターにトランザクション署名用のマルチエージェント効果を追加し、ウォレットAPIから署名関数を削除。
・未使用アウトプットとこれを生成したトランザクションの追跡を保持するチェーンインデックスを追加し、データ値を検索可能に。
・ステートフルチェーンフォロワープロトコルを疑似ノードに追加して直近のブロックのみに対するクエリを作成することを可能にし、毎回ブロックチェーン全体を送信する必要をなくした。
・追加的な述語を使用できるようにrunGuardedStepをStateMachineモジュールに追加。(実際にトランザクションを送信する前にチェック)
・MarloweチームはBlocklyのブロックの説明をよりコンパクトにする作業に取り組む。またMarlowe静的解析用にQuickCheckプロパティを追加し、コントラクトプロパティを証明するためにLiquidHaskell の使用量を調査。

:innocent:「??????????????????」

エミュレーター=特定のハードウェアやOS向けに開発されたソフトウェアを、本来の仕様と異なる動作環境で擬似的に実行させるためのソフトウェアのこと
マルチエージェント効果=各 エージェント は他の エージェント や環境と通信しながら動作を行います。 エージェント 同士が協調することで、単一の エージェント では達成できない事柄をシステム全体として達成できます。
未使用アウトプット=残高
チェーンインデックス=チェーンでの検索指標
ステートフルチェーンフォロワープロトコル=ステートフルは、状態を保持するシステムやプログラムのこと。状態を保持してあげる仕組み。
疑似ノード
クエリー クエリ (query) とは 、英語で「問い合わせ(る)」、「訪ねる」などの 意味 を持つ英語の単語で、ITではソフトウェアに対するデータの問い合わせや要求などを一定の形式で文字に表現することを 意味 します。
追加的な述語
runGuardedStepをStateMachineモジュール=ガードがついたステップをステートマシンモジュールに入れるということ
Blockly=ブロックを組み立てるようにしてスマコンを作れるようにする仕組みのこと。
静的解析用ーソースコードを実行せずにソフトウェアの品質と信頼性の検証を行う作業
QuickCheckプロパティ-QuickCheck(クイックチェック)は、テストスイート用のテストケースを生成してソフトウェアテストを行うための、Haskellで書かれたコンビネータライブラリ
LiquidHaskell の使用量ーLiquid Haskell は GHC の型よりも、さらに厳密な 篩型 (Refinement Type) の型検査器です。

ということで、Goguenはことさらに、専門用語だらけなので単語毎に説明されても辛いかもしれません、元の文書を言い換えますと…

・テスト用ソフトで、署名用の複数プールでやることによる効果で、ウォレットと連携する機能から署名する機能を逆に削除できるようになる。
・残高と取引を追って紐付ける検索機能をつけた。
・「状態」を記録する仕組みを入れて、直近のブロックのみへのデータ要求作成をできるようにして、簡単にデータを取り入れられるようにした。
・取引を送る前にチェックする仕組みも追加した。
・Marloweは、スマコンを簡単に作れる仕組みの中のブロックの説明をより簡単にした。またコードをそのまま分析できるHaskellの仕組みを追加した。

という感じです!

以上です!

ということで今回、単語の知識を踏まえると、週次報告が少し読みやすくなるかなと思い、長々と解説させていただきました…

・ぜひ、今後もこのような記事を書いていこうかなと思っています、よろしければZZZ、KTN、JAPAN、JP、POPシリーズのどれかのステークプールへの委任より、CardanoZを応援してもらえますと嬉しいです!

・また、CardanoADA非公式オープンチャットコミュニティも、全体チャット上級チャット運営チャットにわかれ、より分散化が進みました、700名以上総計で参加されいます!テレグラムに近い、匿名で(LINE本アカウントを知られることなく)参加できるLINEのチャットです。とはいえ、まだできたでホヤホヤのコミュニティですので、いざこざもたくさん起きていますし今後も起きます。その度に都度ルール等を改善してまずは日本最強のクリプトコミュニティにして行きたいと思います😄

それではまた!