`network settings` outputs `frozen_ledger_keys` and `freeze_bypass_txs`, which can't be used in a `ConfigUpgradeSet`

オープン 初心者向け
#2,887 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
72/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
rust
領域
cli

調査の方向性

まず cmd/soroban-cli/src/commands/network/settings.rs を確認し、特にどの ConfigSettingId の値を含めるかを決める match を見てください。--internal がアップグレードできない設定をどのように制御するかを確認し、issue に記載された CAP-77 の動作を参照してください。出力を ConfigUpgradeSet として使用できるように選択処理を更新し、frozen_ledger_keys と freeze_bypass_txs がデフォルト出力から除外されることを確認してください。

索引モデルが issue の本文から書いたものです。

説明

bug
What version are you using?

stellar-cli 30.0.1 (the relevant code is the same in 28.1.0).

What did you do?

I fetched testnet's config settings so that I could apply them to a local network as a config upgrade, which is what quickstart does to keep its local network's limits in sync with testnet:

stellar network settings --network testnet --output json \
  | jq -r '.updated_entry[] | keys[0]'
What did you expect to see?

Only the settings that a config upgrade can set. The --output help describes the output as the ConfigUpgradeSet XDR type, and settings that can't be upgraded (live_soroban_state_size_window, eviction_iterator) are already left out unless --internal is given, so I expected the output to be usable as a ConfigUpgradeSet as is.

What did you see instead?

The output also includes frozen_ledger_keys and freeze_bypass_txs. CAP-77 says these can't be upgraded by the regular mechanism that overwrites the whole entry, only through their frozen_ledger_keys_delta and freeze_bypass_txs_delta settings, so stellar-core rejects a ConfigUpgradeSet that contains them.

Quickstart works around this by stripping them out with jq before encoding the ConfigUpgradeSet: https://github.com/stellar/quickstart/blob/cb64aee580f1589c79264a98eaad839628074cd8/.scripts/update-config-settings#L56-L60

Thoughts

The command chooses which settings to fetch in cmd/soroban-cli/src/commands/network/settings.rs, and only LiveSorobanStateSizeWindow and EvictionIterator are gated behind --internal. Every other ConfigSettingId falls through to a catch-all arm whose comment says "All other configs can be modified by network upgrades and are always output": https://github.com/stellar/stellar-cli/blob/f2a7b74175c34585f3b30a1abf42a2d41cbcc390/cmd/soroban-cli/src/commands/network/settings.rs#L84-L91

The CAP-77 settings presumably landed in the catch-all when they were added to the XDR, so they're output even though that comment doesn't hold for them. Perhaps they could be treated the same as the other non-upgradeable settings and only output with --internal. Replacing the catch-all with an explicit match over every variant might also be worth considering, so that each setting added in a future protocol needs a decision about whether it can be upgraded.

主要言語
Rust
スター
129
フォーク
153
平均マージ
1日 14時間
マージ済み PR(30日)
11

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

stellar/stellar-cli のほかの issue

stellar/stellar-cli の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。