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以上)
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
▼サポートされる役割
▼ダウンロード
ドキュメンテーション
変更履歴
ノード
SIGTERMをSIGINTに変換するRTSワークアラウンド (#3641)
非 p2p モード用のダミー SIGHUP ハンドラをインストールする (#3896)
Shutdown-on-slot-syncedテストを追加し、ExitSuccessを確保する (#3670)
cardano-node: --shutdown-on-block-synced を実装する (#3932)
ブロックタイプでプロトコルを伝搬する (#3818)
正しい権限で VRF 署名用キーファイルを作成する (#1948)
ChainDBトレーサーの省略を修正 (#4038)
トレースインフラの更新:
コンフィギュレーション構造の見直しによるUXの向上 (#3867)
実装のリワークをしトレース定義からプロトタイプを削除する (#3731)
新しいトレースシステムを選択できるようにトレース設定を修正 (#3655)
メトリクスは、重大度と頻度制限の影響を受けなくなりました (#3876)
ekg-direct のメトリクスを new-tracing に移植する (#3873)
新しいトレースで古いピアのトレースが誤って呼び出されていた (#3880)
TraceConstraintsから未使用の制約を削除する (#3822)
必要に応じてトレース転送の適切な開始 (#3634)
cardano-tracer:
シンボリックリンクの削除、ログの切断の修正 (#3930)
cardano-tracerの一部としてRTView, ウェブパフォーマンスダッシュボード (#3852)
RTView: CPU使用率(GC + App) (パーセント)、https (デフォルト)、エラーエクスポート (#3934)
ドキュメントの更新
Haskell のインストール方法の更新と libsecp256k1 への言及 (#3796)
cardano-node-cli-reference.md を更新 (#3630)
libsodium
のインストールについてさらに詳しく説明(#4000)
コンセンサス
バベッジ時点で、2つのVRFチェックから1つに移動 (#3595)
バベッジ時点で、op cert発行番号のインクリメントを制限 (#3595)
新しい関数 getOpCertCounters (#3781)
バグフィックス: バベッジ時点で、トランザクションの有効間隔が実際に制限されるようにした。 (#3754)
簡略化: dが0のままなので、BabbageはTransitional Praosではなく、本来のPraosプロトコルを実行する。(#3595)
プロトコル: PraosProtocolSupportsNode
クラスの追加(#3758)
帳尻合わせに失敗することもあるEpochInfo
の提供 (#3770)
FallingEdge
パターンの同義語に COMPLETE
プラグマを追加 (#3766)
台帳
バベッジ時代の実装 (#2560, #2599, #2602, #2613, #2618, #2619, #2629, #2633, #2643, #2645, #2654, #2661, #2664, #2666, #2678, #2681, #2689, #2694, #2700, #2701, #2702, #2708, #2710, #2711, #2712, #2716, #2717, #2723, #2727, #2751, #2766, #2789, #2799, #2807, #2813, #2814, #2815, #2816, #2819, #2821, #2822, #2848, #2852)
テイラー級数近似による指数関数の計算のバグを修正しました。 このバグがコードに現れることはなかったが、この修正は将来の耐障害性のために有用である。 (#2591)
Alonzo CDDL仕様に不足しているプロトコルパラメータを追加 (#2590)
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)
台帳の性能を上げるためのさまざまな作業 (#2632, #2636, #2667, #2668, #2699, #2731, #2750, #2761, #2767, #2771, #2772, #2801, #2804)
Alonzo genesis用のJSONシリアライザー/デシリアライザーを追加しました。これは台帳では使われませんが、ノードでは使われるかもしれません。(#2627)
報酬に関連する2つの新規イベントを追加 - DeltaRewardEvent
と
TotalRewardEvent
です。前者は計算中に増分報酬を与え、後者は計算が終了した時点で結果を報告する。 (#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)
報酬の増分計算に使用されるパルスサイズのフィックス。その結果、エポック内の負荷がより均等になるはずです(#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)
アロンゾの時代において、Plutusから提供されたエポック情報を拡張し、未来への時間変換を任意に行えるようにする。これは、コンセンサス のバグに関連するもので、前時代にのみ任意に離れた翻訳を可能にしていました。このバグは修正されましたが、台帳は既存の時代の以前の挙動を維持しなければなりません。(#2785)
JSONデシリアライザーでレガシーコストモードパラメーター名を翻訳するようにしました。 デシリアライザは名前を気にせず、パラメータの順序だけを気にするようになりました。これは、更新提案におけるコストモデルパラメータの扱い方と一貫しています。 (#2792)
純粋なEpochInfo
が過剰に使用されないようにする。 (#2818)
空のtxbodyフィールドをシリアライズしない(#2863)
空のSuccessfulPlutusScriptsEvent
イベントを取り除く (#2861)
ステーキングの Ptr最適化の無効化 (#2875)
整合性ハッシュはすべてのrefスクリプトで必要ありません (#2878)
ネットワーク
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)
yield
を MonadFork
に追加(#3713)
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)
ドキュメンテーション更新
chain-syncのドキュメントを更新 (#3594)
network-muxのタイプミスを修正(#3666)
ドキュメントリンクに最近のnixビルドの変更を反映 (#3651)
Cardano-cli
cardano-api と cardano-cli に Vasil ハードフォークを追加 (#3765)
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)
Plutusv2リファレンススクリプトの残りのタイプを追加 (#4034)
IsString
(ハッシュ ブロックヘッダ)の追加 (#3619)
LedgerStateEvents
型のエイリアスにする (#3692)
プロトコルエポックステートデコードエラーを伝搬 (#3696)
cardano-apiでtx mempool monitoring ミニプロトコルを公開する (#3706)
カルダノAPIにおけるバベッジ機能統合 その1 (#3803)
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)
正しい権限で VRF 署名用キーファイルを作成 (#1948)
example-reference-script-usage.shを更新し、インラインデータムも使用できるようにした (#4006)
プロトコルパラメータに分散化パラメータを要求しない (#4051)
Submit-api
submit-apiのためのBabbageトランザクション (#3979)
Deprecated features
Fixed issues
ChainDBトレーサーの省略を修正 (#4038)
Txおよびレファレンススクリプトのデータを修正 (#3882)
バグフィックス: トランザクションの有効期限は、Babbageのように、実際には制限されま (#3754)
テイラー級数近似による指数関数の計算のバグを修正しました。このバグはコードで表示されることはありませんでしたが、この修正は将来の弾力性に有用です (#2591)
報酬の増分計算に使用されるパルス状のサイズを修正。その結果、エポック内の負荷がより均等になるはずです (#2676)
以下、ノード開発情報ではないため略