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

Đang mở Phù hợp với người mới
#2,887 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
72/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
rust
Lĩnh vực
cli

Hướng nghiên cứu

Bắt đầu với cmd/soroban-cli/src/commands/network/settings.rs, đặc biệt là match quyết định những giá trị ConfigSettingId nào được đưa vào. Kiểm tra cách --internal kiểm soát các thiết lập không thể nâng cấp và tham khảo hành vi CAP-77 được mô tả trong issue. Cập nhật lựa chọn để đầu ra có thể được dùng làm ConfigUpgradeSet, sau đó xác minh rằng frozen_ledger_keys và freeze_bypass_txs bị loại khỏi đầu ra mặc định.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.

Ngôn ngữ chính
Rust
Star
129
Fork
153
Merge trung bình
1 ngày 14 giờ
Pull request đã merge (30 ngày)
11

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của stellar/stellar-cli

Tất cả issue của stellar/stellar-cli

Issue tương tự

Thêm issue về Rust

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.