Cardano Node 1.35.0

Vasil HFCイベント前の大型アップデートです。ステークプールのアップグレード前に、内容をきちんと理解するためにまとめております。内容の保証はできかねるため、あくまで原文の補助としてお使いください。

Node 1.35.0は、Vasilハードフォーク後のPlutusの新機能の使用を可能にする重要な機能を追加し、以下のノードとCLIのサポートを含みます。

Plutus v2プリミティブと関連する新しいコストモデル

また、ロギング/モニタリング、ネットワーキングのコードベースが大幅に改良されたほか、拡散パイプラインの初実装、VRFチェックの低減など、メモリと時間のパフォーマンスが大幅に向上し、さらに台帳にもいくつかの改良が加えられています。

本バージョンでは、特にCLI操作上の運用証明書に関して、以下のような重要な変更が行われていますので、ご注意ください。この変更に対応するために、Stake poolのオペレータは、管理スクリプトを更新する必要があるかもしれません。

重要な変更

  • このバージョンでは、元帳の状態を最初のブロックから再生する必要があり、最初の同期に時間がかかる可能性があります。ユーザーはノードをデプロイする際にこれを考慮する必要があります。

  • バベッジの時点で、運用証明書(op cert)のカウントアップ番号を制限しています。以前は、op certの発行番号は、以前使われていた番号より大きければ、何でもよかったです。現在、op certカウンタは、以前に使用されたop certより正確に1つ多くなければいけません。

  • 更新可能な分散化プロトコルパラメータ('d')は、Babbageから削除されました。現在の設定から変更できなくなります。(完全分散)

  • バグフィックス:Babbageから、トランザクションの有効間隔が実際に制限されるようになります。

既知事象

既知の問題点についてはこちらをご覧ください。

技術仕様

▼最小システム要件

  • 2コア以上のIntel / AMD x86 プロセッサ, 1.6GHz 以上, (ステークプール、リレー向けには2GHz以上)

  • 16GB のRAM

  • 75GB のストレージ空き容量 (将来向けには100GBを推奨)

▼プラットフォーム

  • Linux 64-bit (Ubuntu 18.04 LTS, 20.04 LTS; Mint 19.3, 20; Debian 10.3)

  • Windows 64-bit (8.1, 10, 11)

  • MacOS 10.13, 10.14, 10.15, 11

▼サポートされる役割

Platformブロック生成リレークライアント (デスクトップ)

Linux

✔️

✔️

✔️

Windows

✔️

MacOS

✔️

▼ダウンロード

ドキュメンテーション

変更履歴

ノード
  • SIGTERMをSIGINTに変換するRTSワークアラウンド (#3641)

  • 非 p2p モード用のダミー SIGHUP ハンドラをインストールする (#3896)

  • Shutdown-on-slot-syncedテストを追加し、ExitSuccessを確保する (#3670)

  • cardano-node: --shutdown-on-block-synced を実装する (#3932)

  • 依存関係やピンを更新する (#3700)

  • ブロックタイプでプロトコルを伝搬する (#3818)

  • 正しい権限で VRF 署名用キーファイルを作成する (#1948)

  • ChainDBトレーサーの省略を修正 (#4038)

  • トレースインフラの更新:

    • コンフィギュレーション構造の見直しによるUXの向上 (#3867)

    • 実装のリワークをしトレース定義からプロトタイプを削除する (#3731)

    • 新しいトレースシステムを選択できるようにトレース設定を修正 (#3655)

    • GC メトリクスを登録 (#3858)

    • メトリクスは、重大度と頻度制限の影響を受けなくなりました (#3876)

    • ekg-direct のメトリクスを new-tracing に移植する (#3873)

    • ノード状態データポイントの拡張と修正 (#3854, #3656)

    • 新しいトレースで古いピアのトレースが誤って呼び出されていた (#3880)

    • TraceConstraintsから未使用の制約を削除する (#3822)

    • 必要に応じてトレース転送の適切な開始 (#3634)

  • cardano-tracer:

    • 転送されるトレースのフォーマット修正 (#3640, #3654, #3660, #3671).

    • テスト修正 (#3714)

    • シンボリックリンクの削除、ログの切断の修正 (#3930)

    • 空行のバグを修正 (#3962)

    • cardano-tracerの一部としてRTView, ウェブパフォーマンスダッシュボード (#3852)

    • RTView: CPU使用率(GC + App) (パーセント)、https (デフォルト)、エラーエクスポート (#3934)

  • ドキュメントの更新

    • Haskell のインストール方法の更新と libsecp256k1 への言及 (#3796)

    • cardano-node-cli-reference.md を更新 (#3630)

    • 新しいトレースに関するドキュメントを改善(#3834, #3842)

    • 推奨システム要件 (#4005)

    • libsodiumのインストールについてさらに詳しく説明(#4000)

  • ワークベンチ、ビルド、テスト、ベンチマークの各種インフラの改善(#3638, #3643, #3705, #3789, #3812, #3824, #3941, #3851)

コンセンサス
  • ブロック拡散パイプライン (#3688, #3742, #3752, #3688)

  • バベッジ時点で、2つのVRFチェックから1つに移動 (#3595)

  • バベッジ時点で、op cert発行番号のインクリメントを制限 (#3595)

  • 新しい関数 getOpCertCounters (#3781)

  • バグフィックス: バベッジ時点で、トランザクションの有効間隔が実際に制限されるようにした。 (#3754)

  • 簡略化: dが0のままなので、BabbageはTransitional Praosではなく、本来のPraosプロトコルを実行する。(#3595)

  • プロトコル: PraosProtocolSupportsNode クラスの追加(#3758)

  • 帳尻合わせに失敗することもあるEpochInfo の提供 (#3770)

  • FallingEdge パターンの同義語に COMPLETE プラグマを追加 (#3766)

  • 簡略化:古くなったハンドシェイクのバージョンを削除 (#3696, #3699)

台帳
  • テイラー級数近似による指数関数の計算のバグを修正しました。 このバグがコードに現れることはなかったが、この修正は将来の耐障害性のために有用である。 (#2591)

  • Alonzo CDDL仕様に不足しているプロトコルパラメータを追加 (#2590)

  • 台帳とTPraosプロトコルの分離に取り組む。 (#2575, #2605, #2628, #2630, #2711, #2748, #2763, #2776)

  • Plutus V2で、固定長リストを使って整合性ハッシュのコストモデルをエンコードする。 (#2589)

  • 全時代にわたる追加テスト(#2338, #2598, #2620, #2656, #2674, #2695, #2696, #2698, #2747, #2758, #2760, #2790, #2817)

  • 様々な内部リファクタリングと小さな修正 (#2596, #2597, #2600, #2603, #2606, #2608, #2611, #2621, #2622, #2623, #2624, #2639, #2644, #2650, #2660, #2671, #2706, #2709, #2721, #2722, #2733, #2735, #2752, #2755, #2768, #2769, #2773, #2777, #2795, #2803)

  • MIRの証明書において、正しい転送のみ許可されるようにチェックを追加する。 (#2579)

  • 実行中の台帳のメモリ使用量を削減するためのさまざまな作業 (#2584, #2592, #2607, #2609, #2616, #2625, #2637, #2675, #2707, #2759)

  • 台帳の性能を上げるためのさまざまな作業 (#2632, #2636, #2667, #2668, #2699, #2731, #2750, #2761, #2767, #2771, #2772, #2801, #2804)

  • Alonzo genesis用のJSONシリアライザー/デシリアライザーを追加しました。これは台帳では使われませんが、ノードでは使われるかもしれません。(#2627)

  • 報酬に関連する2つの新規イベントを追加 - DeltaRewardEventTotalRewardEvent です。前者は計算中に増分報酬を与え、後者は計算が終了した時点で結果を報告する。 (#2615, #2647, #2673, #2690)

  • リワードイベント、RestrainedRewardsを追加。登録解除などの理由でその後支払われなかったリワードの詳細が含まれます。 (#2726)

  • スナップショットされた時刻のステーク分布が得られるイベントを追加する。(#2652)

  • Plutusスクリプト実行に関連する2つの新規イベントを追加. IsValidがtrueでエラーがない場合、SuccessfulPlutusScriptsEventが放出される。 このイベントには、トランザクション内のすべてのスクリプトをリターンするために必要なすべての情報が含まれています。IsValidが false であり、かつエラーが存在する場合、2つのイベントが発行されます。成功したスクリプトを含む先行イベントと、失敗したスクリプト詳細とFailedPlutusScriptsEvent です。(#2670)

  • エポック境界で発行されるイベントTotalAdaPotEventを追加。 様々なADAポット(リザーブ、トレジャリー、リワードポットなど)の大きさを報告するイベントです。 (#2797)

  • トランザクションにおいて、バイロン出力と、Plutus V2のロックされた出力を使うのをできないようにする。PlutusV1スクリプトは、バイロン出力と同じトランザクションで使用することができます。しかしByronの出力は、Plutusでは見えません。(#2617)

  • テストにおけるメモリーリークを修正 (#2648)

  • コストモデルキーのリファレンスを追加する (#2635)

  • シェリー仕様の中で、シードの計算方法、およびスロットからシードへの変換方法を指定する(#2626)

  • ベンチマーク・スイートの大幅な改良 (#2668, #2669, #2699)

  • 報酬の増分計算に使用されるパルスサイズのフィックス。その結果、エポック内の負荷がより均等になるはずです(#2676)

  • 未使用のcardano-ledger-example-shelleyパッケージをプルーニングしました(#2693)

  • STSのルールに、まだ失敗が蓄積されていない場合にのみ、特定の処理を実行するロジックを追加。これは、例えば、トランザクションが壊れている場所でPlutusスクリプトを評価するのを避けるのに便利である(#2679, #2847)

  • CostModel コンストラクタを隠す。適切なCostModel の構築方法は costModelParamsToCostModel を使うことです(#2703, #2730)

  • ブロックの処理に必要なUTxOエントリーのセットを問い合わせることをサポートします。これは、UTxOをディスク上に移動する際に必要となる重要な機能である。 (#2715)

  • Byron/Shelley トランジションでの AVVM アドレスのスタッシュのサポートを追加。ディスク上のUTxOを有効にするのは少し面倒な作業です。AVVM アドレスはShelleyとAllegraの境界で削除されなければならない一方で、UTxOがディスク上にある時点では (Shelley以降)、UTxOに対する完全なクエリを禁止しているためです。 (#2728)

  • Datumの台帳ベースのバリデーションを削除する。これは現在、完全にPlutusによって行われます (#2757)

  • すべての元帳イベントに関するドキュメントを追加します。これは以下の場所で見ることができます。 https://github.com/input-output-hk/cardano-ledger/blob/master/docs/LedgerEvents.md (#2778)

  • アロンゾの時代において、Plutusから提供されたエポック情報を拡張し、未来への時間変換を任意に行えるようにする。これは、コンセンサス のバグに関連するもので、前時代にのみ任意に離れた翻訳を可能にしていました。このバグは修正されましたが、台帳は既存の時代の以前の挙動を維持しなければなりません。(#2785)

  • JSONデシリアライザーでレガシーコストモードパラメーター名を翻訳するようにしました。 デシリアライザは名前を気にせず、パラメータの順序だけを気にするようになりました。これは、更新提案におけるコストモデルパラメータの扱い方と一貫しています。 (#2792)

  • 純粋なEpochInfoが過剰に使用されないようにする。 (#2818)

  • 空のtxbodyフィールドをシリアライズしない(#2863)

  • 空のSuccessfulPlutusScriptsEvent イベントを取り除く (#2861)

  • ステーキングの Ptr最適化の無効化 (#2875)

  • 整合性ハッシュはすべてのrefスクリプトで必要ありません (#2878)

ネットワーク
  • 多ノード拡散シミュレーション (#3497)

  • inboundGovernorLoop により出力されるトレースの例外 (#3591)

  • prop_timeouts_enforced を追加 (#3532)

  • IOSimPORを使ったコネクションマネージャーのテスト (#3632)

  • localrootpeers のルックアップ結果を上書きしない (#3641)

  • muxのtcpベアラのtcp_infoを抽出 (#3648)

  • IOSim MonadFixのインスタンス (#3647)

  • io-classes: traceTVar と traceTMVar の 厳格なバージョンを追加 (#3654)

  • プラットフォームに依存しないTCPInfoトレース (#3660)

  • IOSimPORを用いたコネクションマネージャ移行順序テスト (#3640)

  • IOSimPORからST効果を削除しました (#3662)

  • RootPeersDNS: DNSの結果をガベージコレクトし、真実の単一ソースをテスト (#3643)

  • net-simテストでのaccept errorsを有効にする (#3668)

  • cardano-pingの対応プロトコルバージョンの更新 (#3700)

  • yieldMonadFork に追加(#3713)

  • 拡散試験 (#3619, #3629, #3633, #3636, #3707, #3727, #3728, #3761)

  • cardano-ping: unless quiet の誤植を修正。(#3729)

  • FFI経由ではなく、ベースからgetMonotonicNSecをインポート(#3735)

  • connection-manager: ミニプロトコル・パラメータ (#3606)

  • TxSubmission V1およびNodeToNodeV_6より小さいか等しいすべてのノード間バージョンを削除 (#3696)

  • NodeToClientV_8以下を削除 (#3699)

  • 既知の無効なブロックに対する厳しすぎる切断ルールの緩和 (#3726)

  • io-simとtyped-protocolを新しいリポジトリに移動(#3747)

  • BabbageとP2PのNodeToNodeVersionを修正 (#3775)

  • 各種変更 (#3736)

  • ドキュメンテーション更新

    • chain-syncのドキュメントを更新 (#3594)

    • network-muxのタイプミスを修正(#3666)

    • ドキュメントリンクに最近のnixビルドの変更を反映 (#3651)

    • タイプミスを修正 (#3635)

Cardano-cli
  • cardano-api と cardano-cli に Vasil ハードフォークを追加 (#3765)

  • リファレンススクリプトの統合 (#3953)

  • Plutusv2リファレンススクリプトの残りのタイプをつなげる (#4034)

  • 署名付きトランザクション(エンベロープ)のフレンドリーな出力表示を追加 (#3617)

  • cardano-cliのトランザクションビュー: フレンドリーな証明書出力表示の追加 (#3377)

  • cardano-cliのクエリ kes-period-info: 常にメトリクスを表示 (#3683)

  • リーダーシップスケジュールのJSON形式(#3687)

  • Vasil cardano-cli のアップデート (#3810)

  • 担保のリターンにリファレンススクリプトやデータムが含まれないようにする。 (#3850)

  • kes-period-info のプロパティテスト (#3718)

  • deserialiseFromRawBytesHex を拡張し、エラーの説明を生成するようにしました (#3304)

  • genesis create-cardano コマンドを追加します。 (#3832)

  • ブロックタイプでプロトコルを伝搬する (#3818)

  • kes period infoコマンドの修正 (#3945)

  • 正しい権限で VRF 署名用キーファイルを作成 (#1948)

  • cardano-cliでローカルエンコードをUTF-8に設定 (#4018)

  • example-reference-script-usage.shを更新し、インラインデータムも使用できるようにした (#4006)

  • cardano-cliで簡単なリファレンススクリプトを組む(#4014)

  • cardano-cli に read-only-tx-in-reference オプションを追加 #(4042)

Cardano-api
  • cardano-api と cardano-cli に Vasil ハードフォークを追加 (#3765)

  • リファレンススクリプトの統合 (#3953)

  • Plutusv2リファレンススクリプトの残りのタイプを追加 (#4034)

  • IsString (ハッシュ ブロックヘッダ)の追加 (#3619)

  • LedgerStateEvents 型のエイリアスにする (#3692)

  • プロトコルエポックステートデコードエラーを伝搬 (#3696)

  • cardano-apiでtx mempool monitoring ミニプロトコルを公開する (#3706)

  • カルダノAPIにおけるバベッジ機能統合 その1 (#3803)

  • 未使用のパッケージを削除する (#3816)

  • BlockInModeにIsCardanoEra制約を追加 (#3665)

  • cardano-api の TxOut をインラインデータで更新 (#3773)

  • cardano-apiのtxoutをリファレンススクリプトで更新 (#3779)

  • カルダノAPIでリターンと総担保を実装 (#3787)

  • cardano-api に参照トランザクション入力を追加 (#3804)

  • Txおよびレファレンススクリプトのデータを修正 (#3882)

  • API機能 cddlTypeToEra をバベッジ時代に対応(#3916)

  • TxWitness BabbageEraのタイプミスを修正 (#3961)

  • KES-period-info プロパティテスト (#3718)

  • deserialiseFromRawBytesHex を拡張し、エラーの説明を生成するようにしました (#3304)

  • genesis create-cardano コマンドを追加 (#3832)

  • ブロックタイプでプロトコルを伝搬 (#3818)

  • 正しい権限で VRF 署名用キーファイルを作成 (#1948)

  • example-reference-script-usage.shを更新し、インラインデータムも使用できるようにした (#4006)

  • 削除されたコメントの復元 (#4044)

  • プロトコルパラメータに分散化パラメータを要求しない (#4051)

Submit-api
  • submit-apiのためのBabbageトランザクション (#3979)

Deprecated features

Fixed issues
  • ChainDBトレーサーの省略を修正 (#4038)

  • KES期間情報コマンドの修正 (#3945)

  • Txおよびレファレンススクリプトのデータを修正 (#3882)

  • バグフィックス: トランザクションの有効期限は、Babbageのように、実際には制限されま (#3754)

  • テイラー級数近似による指数関数の計算のバグを修正しました。このバグはコードで表示されることはありませんでしたが、この修正は将来の弾力性に有用です (#2591)

  • 報酬の増分計算に使用されるパルス状のサイズを修正。その結果、エポック内の負荷がより均等になるはずです (#2676)

以下、ノード開発情報ではないため略

Last updated