Sui V0.28版本中的重要更新

Sui的下一个版本V0.28引入一些不兼容更新,包括新增功能和调整原有功能,可能需要更新您的应用或调整程序,才能正常运行。(不兼容更新详情:https://docs.sui.io/doc-updates/sui-breaking-changes)
要了解如何更新您的项目以适用V0.28版本中的相关调整,请参阅Sui V0.28版本迁移指南。
2023年3月20日增加以下条目:
【重要不兼容更新】- Sui现在使用flag||pubkey中Blake2b哈希的前32个字节来计算SuiAddress而不是SHA3_256哈希。有关详细信息,请参阅PR9262(https://github.com/MystenLabs/sui/pull/9262)。
【重要不兼容更新】- 此版本用新的sui_getLatestSuiSystemState函数代替了sui_getValidators和sui_getSuiSystemState函数。新函数返回一个平铺类型,其中包含来自链上最新SuiSystemState Object的所有信息,类型为SuiSystemStateSummary。它还包含一个SuiValidatorSummary类型的数组,该数组汇总来自每个验证节点的信息,包括:元数据、质押池和其他数据。此版本还在每个验证节点的元数据中添加了一个p2p_address,该字段的值是验证节点用于P2P活动(例如状态同步)的地址。
【重要不兼容更新】- 此版本更改了Sui Object类型的序列化格式。Sui现在对Coin<SUI>、Coin<T>和StakedSui等常见类型使用更紧凑的序列化格式,将Object大小减少多达40%。这一类型的Object,将降低存储时的gas成本。这不会影响使用JSON-RPC API读取函数的客户端,但直接读取原始Sui Object的客户端需要了解新的类型编码。请注意,Sui Move结构的编码保持不变。有关详细信息,请参阅PR9055(https://github.com/MystenLabs/sui/pull/9055)。
【重要不兼容更新】- sui_getObject端点现在采用SuiObjectDataOptions类型的附加配置参数来控制端点所检索的字段。默认情况下,端点仅检索Object引用,除非客户端请求明确指定其他数据,例如type、owner或bcs。要了解更多信息,请参阅PR8817(https://github.com/MystenLabs/sui/pull/8817)。
【重要不兼容更新】- 在管理Sui Move代码中各UID使用的ID泄漏校验已被重写和推翻,新的Object现在必须获得在创建Object的函数中创建的“全新”UID,但是当Object的结构被销毁时,UID可以像Object被包装一样存储(但没有它的内容)。相比之下,之前的规则规定UID可以来自任何地方,但必须在Object被解包时被销毁。我们进行此更改是为了使动态字段的使用更符合人体工程学,因此如果您希望在将Object解包到其构成字段后保留对动态字段的访问权限,则并不总是需要Bag或Table。有关详细信息和迁移示例,请参阅PR8026(https://github.com/MystenLabs/sui/pull/8026)。
【重要不兼容更新】- 新的Programmable Transactions功能引入了一种新型交易,它取代了批处理交易和普通交易(特殊系统交易除外)。这些交易允许执行一系列命令(各种mini transaction),其中命令的结果可用于后续命令。有关详细信息,请参阅ProgrammableTransactionsRFC(https://forums.sui.io/t/rfc-planned-feature-programmable-transactions/3823)。
【重要不兼容更新】- SuiAddress和ObjectID现在是32字节长而不是20字节(在十六进制中len从40增加到64)。如果您的软件与任何ObjectID和SuiAddress交互,您必须更新它以使用更新的地址并重新部署它。请参阅PR8542(https://github.com/MystenLabs/sui/pull/8542)。
【重要不兼容更新】- 此版本对交易和交易执行引入了几个限制。其中许多限制可能会在Sui主网之前发生变化。要查看V0.28版本中的限制列表,请参阅源代码(https://github.com/MystenLabs/sui/blob/main/crates/sui-protocol-config/src/lib.rs#L716)。
【重要不兼容更新】- 更改Gas预算以使用Sui而不是Gas单位。这从任何与用户相关的API操作中删除了Gas单位的概念。这不会更改TransactionData(u64)的格式。从当前格式不再有效的意义上说,这不是重大调整,而是要求您重新考虑如何使用Gas预算。
【重要不兼容更新】- 在发布V0.28之前,交易需要某一Coin来支付gas费,有时需要用户在完成交易之前进行单独的交易(例如PaySui)来合并Coin,这也会增加交易成本。此版本将在TransactionData中的字段值类型从gas_payment:ObjectRef更改为gas_payment:Vec<ObjectRef>,其中Vec<ObjectRef>是拥有的SuiObject的非空向量。这将所有Coin组合成一类Coin,使用向量中第一个Coin的ObjectID表示该合集中的所有硬币。
【重要不兼容更新】- ecdsa_k1::ecrecover和ecdsa_k1::secp256k1_verify现在要求您输入原始信息而不是哈希后的信息。您还必须提供由u8数组表示的hash_function名称。有关详细信息,请参阅PR7773(https://github.com/MystenLabs/sui/pull/7773)。
【重要不兼容更新】- ValidatorMetadata函数现在包含一个p2p_address字段,该字段的值是验证节点用于P2P活动(例如状态同步)的地址,要了解更多信息,请参阅PR8636(https://github.com/MystenLabs/sui/pull/8636)。
【交易格式重要不兼容更新】- 向TransactionData添加一个新的过期时间字段,以允许用户指定交易到期的时间,这意味着验证节点将不再有资格签署和执行。在此版本中,过期时间字段唯一受支持的值是epoch。如果未提供,则不会为关联交易设置过期时间。
【次要不兼容更新】- 此版本修改了ConsensusCommitPrologue交易的格式。这是一个系统生成的交易,它更新Clock Object上的时间戳,允许Sui Move智能合约从链上读取最新的时间戳。
【次要不兼容更新】- 从Sui Framework中删除了bulletproofs和elliptic_curve模块。有关详细信息,请参阅PR8660(https://github.com/MystenLabs/sui/pull/8660)。
【次要不兼容更新】- 从Sui Framework架中删除了Randomness,从JSON RPC中删除sui_tblsSignRandomnessObject。有关详细信息,请参阅PR8977(https://github.com/MystenLabs/sui/pull/8977)。
【次要更新】- PoP的生成发生了变化,改变了创世快照,因为所有验证PoP现在都在validator::validate_metadata中完成,它还删除了bls12381::bls12381_min_sig_verify_with_domain和validator::verify_proof_of_possession。
【API重要不兼容更新】- GetTransaction API重构
[RPC] sui_getTransaction和sui_multiGetTransaction现在接受一个名为options的附加可选参数,该参数指定要检索的字段(例如transaction、effects、events等)。默认情况下,这些操作仅返回交易签名。
[TS SDK] 将provider.getTransactionWithEffects重命名为provider.getTransactionResponse。新函数采用新增参数SuiTransactionResponseOptions,以配置要检索的字段(例如transaction、effects、events等)。默认情况下,此函数仅返回交易签名。
有关详细信息,请参阅PR8888(https://github.com/MystenLabs/sui/pull/8888)。
【API重要不兼容更新】- sui_executeTransactionBlock重构
删除了sui_executeTransactionSerializedSig和sui_submitTransaction操作。
sui_executeTransaction操作现在采用签名数组而不是单个签名来支持Sponsored Transactions。
要了解更多信息,请参阅PR9068(https://github.com/MystenLabs/sui/pull/9068)。
【RPC API重要不兼容更新】- JSON-RPC 治理API的各种变化:
将sui_getDelegatedStakes升级为新的质押流程
通过质押池对所有StakedSui进行分组,以减少响应中重复的验证节点信息
改进ValidatorMetadata响应,使其更易于阅读,这也会影响getSuiSystemState。
使SuiSystemState JSON响应camelCased
为Sui初始化设置添加了 — epoch-duration-ms选项,用于配置本地网络epoch时长周期
有关详细信息,请参阅PR8848(https://github.com/MystenLabs/sui/pull/8848)。
2023年3月20日添加以下条目:
【API重要不兼容更新】- 在传递给任何签名API之前,必须将有效签名提交给消息的Blake2b哈希。如果在别处创建签名,请确保首先对交易数据进行哈希处理。有关详细信息,请参阅PR9561(https://github.com/MystenLabs/sui/pull/9561)。
【API重要不兼容更新】- 此版本删除了对用于质押锁定Coin的支持,并修改了StakedSui Object的结构以删除锁定周期字段。有关详细信息,请参阅PR9046(https://github.com/MystenLabs/sui/pull/9046)。
【API重要不兼容更新】- 所有在其名称中包含delegation的函数都使用stake替代,例如,request_add_delegation现在是request_add_stake。有关详细信息,请参阅PR9059(https://github.com/MystenLabs/sui/pull/9059)。
【API重要不兼容更新】- 此版本将SuiTransactionBlockResponse中的SuiCertifiedTransaction替换为SuiTransactionBlock。这是因为验证节点不能再保证返回交易认证。此版本还统一了SuiTransactionBlockResponse和SuiExecuteTransactionResponse以简化API。有关详细信息,请参阅PR8369(https://github.com/MystenLabs/sui/pull/8369)。
【API重要不兼容更新】- 更新动态字段名称的结构,使其更容易在sui_getDynamicFieldObject中使用。有关详细信息,请参阅PR7318(https://github.com/MystenLabs/sui/pull/7318)。
【API重要不兼容更新】- 此版本从Transaction Builder API中删除了request_switch_delegation函数。它还从Sui SDK的验证节点集合类型中删除了pending_delegation_switches字段。有关详细信息,请参阅PR8435(https://github.com/MystenLabs/sui/pull/8435)。
【API重要不兼容更新】- 为了减少Sui全节点同步负载的大小,此版本从TransactionEffect中删除了事件。这些事件仍包含在sui_getTransactionBlock和sui_submitTransaction最终返回的SuiTransactionBlockResponse中。有关详细信息,请参阅PR7822(https://github.com/MystenLabs/sui/pull/7822)。
【API重要不兼容更新】- StakedSui Object现在包含质押池的ID,pool_id。有关详细信息,请参阅PR8371(https://github.com/MystenLabs/sui/pull/8371)。

关于 Sui Network
Sui是首个从头开始设计的无需许可Layer 1区块链,旨在为创作者和开发者提供平台,以构建能够获取Web3中下一个十亿用户的体验。Sui具有横向可扩展性,能够以快速且低成本支持广泛的应用开发。
官网:https://sui.io/
Twitter:https://twitter.com/SuiNetwork
Discord:https://discord.com/invite/sui
中文Medium:https://medium.com/sui-network-cn
中文电报群:https://t.me/Sui_Blockchain_Chinese