更新日志

  • Anza
  • 发布于 2025-04-25 17:18
  • 阅读 16

本文档是Solana项目的更新日志,记录了从1.17.0版本到2.2.0版本的重要变更。

变更日志

此项目的全部显著变更都将记录在此文件中。

请在进行更改时遵循本文档底部的指南 格式基于 Keep a Changelog。 此项目遵循 语义化版本 并遵循 向后兼容性策略

发布渠道有各自的变更日志副本:

<a name="edge-channel"></a>

[2.2.0] - 未发布

[2.1.0]

  • 破坏性更改:
    • SDK:
    • cargo-build-sbfcargo-build-bpf 已经弃用两年了,现在已经完全移除。 请使用 cargo-build-sbfcargo-test-sbf 代替。
    • Stake:
    • 移除未发布的 redelegate 指令处理器和 CLI 命令 (#2213)
    • Banks-client:
    • 放松函数限制,使用 &self 代替 &mut self (#2591)
    • agave-validator:
    • 移除 --rocksdb-shred-compaction 中已弃用的 fifo 值 (#3451)
  • 变更
    • SDK:
    • 移除 respan 宏。这被标记为“仅供内部使用”,并且不再在内部使用。
    • 添加 entrypoint_no_alloc!,一个性能更高的程序入口点,避免分配,每个唯一帐户节省 20-30 个 CU
    • cargo-build-sbf: 工作区或包级别的 Cargo.toml 可以指定 tools-version,以便在构建链上程序时覆盖默认的平台工具版本。例如:
      [package.metadata.solana]
      tools-version = "1.43"

      [workspace.metadata.solana]
      tools-version = "1.43"

      所选工具版本的优先级顺序为:--tools-version 参数、包版本、工作区版本,最后是默认版本。

    • package-metadata: 在 Cargo.toml 中指定程序的 id,以便下游用户和工具使用 solana-package-metadata 轻松使用 (#1806)。例如:
      [package.metadata.solana]
      program-id = "MyProgram1111111111111111111111111111111111"

      可以在程序 crate 中使用:

      solana_package_metadata::declare_id_with_package_metadata!("solana.program-id");

      这相当于编写:

      solana_pubkey::declare_id!("MyProgram1111111111111111111111111111111111");
    • agave-validator: 更新 PoH 速度检查,以与来自 Bank 的当前哈希率进行比较 (#2447)
    • solana-test-validator: 添加 --clone-feature-set 标志,以模拟目标集群的功能 (#2480)
    • solana-genesis: --cluster-type 参数现在从目标集群克隆功能集 (#2587)
    • unified-scheduler 作为 --block-verification-method 的默认选项 (#2653)
    • 警告 --block-production-methodthread-local-multi-iterator 选项已弃用 (#3113)
    • --block-production-method 添加新的变体 central-scheduler-greedy。这是一个简化的调度器,比更严格的 central-scheduler 变体具有更好的性能。

[2.0.0]

  • 破坏性更改
    • SDK:
    • 移除对 Borsh v0.9 的支持,请使用 v1 或 v0.10 (#1440)
    • Copy 不再在 RentEpochSchedule 上派生,请切换到使用 clone() (solana-labs#32767)
    • solana-sdk: 移除已弃用的符号
    • solana-program: 移除已弃用的符号
    • RPC: 移除过时和已弃用的 v1 端点。这些端点是: confirmTransaction, getSignatureStatus, getSignatureConfirmation, getTotalSupply, getConfirmedSignaturesForAddress, getConfirmedBlock, getConfirmedBlocks, getConfirmedBlocksWithLimit, getConfirmedTransaction, getConfirmedSignaturesForAddress2, getRecentBlockhash, getFees, getFeeCalculatorForBlockhash, getFeeRateGovernor, getSnapshotSlot getStakeActivation
    • RpcClientRpcClient::nonblocking 中移除已弃用的方法
    • solana-client: 移除已弃用的重新导出;请直接导入 solana-connection-cachesolana-quic-clientsolana-udp-client
    • agave-validator 中移除已弃用的参数:
    • --enable-rpc-obsolete_v1_7 (#1886)
    • --accounts-db-caching-enabled (#2063)
    • --accounts-db-index-hashing (#2063)
    • --no-accounts-db-index-hashing (#2063)
    • --incremental-snapshots (#2148)
    • --halt-on-known-validators-accounts-hash-mismatch (#2157)
  • 变更
    • central-scheduler 作为 --block-production-method 的默认选项 (#34891)
    • solana-rpc-client-api: RpcFilterError 依赖于 base64 版本 0.22,因此用户可能需要升级到 base64 版本 0.22
    • --health-check-slot-distance 的默认值从 150 更改为 128
    • CLI: 可以在程序部署期间指定 --with-compute-unit-price--max-sign-attempts--use-rpc
    • replaceRecentBlockhash config 参数为 true 时,RPC 的 simulateTransaction 现在在响应中返回额外的 replacementBlockhash 字段 (#380)
    • SDK: cargo test-sbf 接受 --tools-version,就像 build-sbf 一样 (#1359)
    • CLI: 可以指定 --full-snapshot-archive-path (#1631)
    • transaction-status: SPL Token amountToUiAmount 指令将金额解析为字符串而不是数字 (#1737)
    • 按照 SIMD-0118 实现了分区纪元奖励。功能门控:#426。具体更改包括:
    • 扩展 EpochRewards 系统变量并使其持久化 (#428, #572)
    • 现在允许在分配期间使用 Stake Program credits (#631)
    • 更新 Bank::epoch_rewards_status 中的类型 (#1277)
    • 从快照启动时重新计算分区 (#1159)
    • 从快照中删除 epoch_rewards_status (#1274)
    • 添加了 --block-verification-methodunified-scheduler 选项 (#1668)
    • 弃用 --rocksdb-shred-compactionfifo 选项 (#1882)
    • fifo 将在 v2.0 中继续支持,并计划在 v2.1 中完全移除

[1.18.0]

  • 变更
    • 添加了 github 检查以支持 changelog 标签
    • --use-snapshot-archives-at-startup 的默认值现在是 when-newest (#33883)
    • 但是,solana-ledger-tool 的默认值仍然是 always (#34228)
    • 添加了 --block-production-methodcentral-scheduler 选项 (#33890)
    • 更新到 Borsh v1
    • 添加了 allow_commission_decrease_at_any_time 功能,该功能允许在投票帐户上降低佣金,即使在 epochs 的后半段,commission_updates_only_allowed_in_first_half_of_epoch 功能也会阻止它
    • 更新本地账本存储,以便 RPC 端点 getSignaturesForAddress 始终按 block-inclusion 顺序返回签名
    • RPC 的 simulateTransaction 现在以 json/jsonParsed 形式返回 innerInstructions (#34313)。
    • Bigtable 上传现在包括每个插槽的条目摘要数据,存储在新的 entries 表中
    • 禁止 --signer CLI 标志的多个值,强制用户指定多个 --signer 出现,每个签名一个
    • 新的程序部署默认使用程序的精确大小,而不是两倍大小。如果程序帐户需要容纳更大的程序,则必须在使用 solana program extend 扩展它们,然后再进行升级。
    • gossip_service::get_client() 的接口已更改。gossip_service::get_multi_client() 已被移除。
    • CLI: 可以在程序部署期间指定 --with-compute-unit-price--max-sign-attempts--use-rpc
  • 升级说明
    • solana-programsolana-sdk 默认支持 Borsh v1,对 v0.10 和 v0.9 具有有限的向后兼容性。请升级到 Borsh v1。
    • 运行自己的 bigtable 实例的运营商需要在升级其仓库节点之前创建 entries

[1.17.0]

  • 变更
    • 添加了变更日志。
    • 添加了 --use-snapshot-archives-at-startup,以便更快地重启验证器
  • 升级说明

添加到此变更日志

受众

  • 此日志中的条目旨在让贡献者、共识验证器运营商、rpc 运营商和 dapp 开发人员轻松理解。

值得注意

  • 如果满足以下条件,则更改值得注意:
    • 添加功能门控,或
    • 实现 SIMD,或
    • 修改公共 API,或
    • 更改正常的验证器/rpc 运行配置,或
    • 更改命令行参数,或
    • 修复已引起公众关注的错误,或
    • 显着提高性能,或
    • 由外部贡献者编写。

说明

  • 在实现更改的同一拉取请求中更新此日志。如果更改分布在多个拉取请求中,请在使功能代码完整的拉取请求中更新此日志。
  • 将注释添加到你合并到的每个分支的 [Unreleased] 部分。
    • 将更改的描述添加到“变更”部分。
    • 如果更改可能需要以下操作,请添加“升级说明”:
    • 验证器或 rpc 运营商更新其配置,或
    • dapp 或客户端开发人员进行更改。
  • 链接到任何相关的功能标志问题或 SIMD。
  • 如果你在多个分支上添加条目,请尽可能使用相同的措辞。这简化了日志版本之间的差异比较过程。

维护此变更日志

创建新的发布分支时:

  • 提交到 master 以更新变更日志:
    • 更新 edge、beta 和 stable 链接
    • 创建新部分:vx.y+1.0 - Unreleased
    • 从 vx.y.0 部分删除 Unreleased 注释。
  • 从该提交开始创建 vx.y 分支
  • 将该提交标记为 vx.y.0

创建新的补丁版本时:

  • 提交到发布分支以更新变更日志:
    • vx.y.z 部分删除 Unreleased 注释
    • 在顶部添加一个新部分,用于 vx.y.z+1 - Unreleased
  • 将该新提交标记为新版本
  • 原文链接: github.com/anza-xyz/agav...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Anza
Anza
江湖只有他的大名,没有他的介绍。