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

Sui的下一個版本V0.28引入一些不兼容更新,包括新增功能和調(diào)整原有功能,可能需要更新您的應(yīng)用或調(diào)整程序,才能正常運行。(不兼容更新詳情:https://docs.sui.io/doc-updates/sui-breaking-changes)
要了解如何更新您的項目以適用V0.28版本中的相關(guān)調(diào)整,請參閱Sui V0.28版本遷移指南。
2023年3月20日增加以下條目:
【重要不兼容更新】- Sui現(xiàn)在使用flag||pubkey中Blake2b哈希的前32個字節(jié)來計算SuiAddress而不是SHA3_256哈希。有關(guān)詳細信息,請參閱PR9262(https://github.com/MystenLabs/sui/pull/9262)。
【重要不兼容更新】- 此版本用新的sui_getLatestSuiSystemState函數(shù)代替了sui_getValidators和sui_getSuiSystemState函數(shù)。新函數(shù)返回一個平鋪類型,其中包含來自鏈上最新SuiSystemState?Object的所有信息,類型為SuiSystemStateSummary。它還包含一個SuiValidatorSummary類型的數(shù)組,該數(shù)組匯總來自每個驗證節(jié)點的信息,包括:元數(shù)據(jù)、質(zhì)押池和其他數(shù)據(jù)。此版本還在每個驗證節(jié)點的元數(shù)據(jù)中添加了一個p2p_address,該字段的值是驗證節(jié)點用于P2P活動(例如狀態(tài)同步)的地址。
【重要不兼容更新】- 此版本更改了Sui Object類型的序列化格式。Sui現(xiàn)在對Coin<SUI>、Coin<T>和StakedSui等常見類型使用更緊湊的序列化格式,將Object大小減少多達40%。這一類型的Object,將降低存儲時的gas成本。這不會影響使用JSON-RPC API讀取函數(shù)的客戶端,但直接讀取原始Sui Object的客戶端需要了解新的類型編碼。請注意,Sui Move結(jié)構(gòu)的編碼保持不變。有關(guān)詳細信息,請參閱PR9055(https://github.com/MystenLabs/sui/pull/9055)。
【重要不兼容更新】-?sui_getObject端點現(xiàn)在采用SuiObjectDataOptions類型的附加配置參數(shù)來控制端點所檢索的字段。默認情況下,端點僅檢索Object引用,除非客戶端請求明確指定其他數(shù)據(jù),例如type、owner或bcs。要了解更多信息,請參閱PR8817(https://github.com/MystenLabs/sui/pull/8817)。
【重要不兼容更新】- 在管理Sui Move代碼中各UID使用的ID泄漏校驗已被重寫和推翻,新的Object現(xiàn)在必須獲得在創(chuàng)建Object的函數(shù)中創(chuàng)建的“全新”UID,但是當Object的結(jié)構(gòu)被銷毀時,UID可以像Object被包裝一樣存儲(但沒有它的內(nèi)容)。相比之下,之前的規(guī)則規(guī)定UID可以來自任何地方,但必須在Object被解包時被銷毀。我們進行此更改是為了使動態(tài)字段的使用更符合人體工程學(xué),因此如果您希望在將Object解包到其構(gòu)成字段后保留對動態(tài)字段的訪問權(quán)限,則并不總是需要Bag或Table。有關(guān)詳細信息和遷移示例,請參閱PR8026(https://github.com/MystenLabs/sui/pull/8026)。
【重要不兼容更新】- 新的Programmable Transactions功能引入了一種新型交易,它取代了批處理交易和普通交易(特殊系統(tǒng)交易除外)。這些交易允許執(zhí)行一系列命令(各種mini transaction),其中命令的結(jié)果可用于后續(xù)命令。有關(guān)詳細信息,請參閱ProgrammableTransactionsRFC(https://forums.sui.io/t/rfc-planned-feature-programmable-transactions/3823)。
【重要不兼容更新】-?SuiAddress和ObjectID現(xiàn)在是32字節(jié)長而不是20字節(jié)(在十六進制中len從40增加到64)。如果您的軟件與任何ObjectID和SuiAddress交互,您必須更新它以使用更新的地址并重新部署它。請參閱PR8542(https://github.com/MystenLabs/sui/pull/8542)。
【重要不兼容更新】- 此版本對交易和交易執(zhí)行引入了幾個限制。其中許多限制可能會在Sui主網(wǎng)之前發(fā)生變化。要查看V0.28版本中的限制列表,請參閱源代碼(https://github.com/MystenLabs/sui/blob/main/crates/sui-protocol-config/src/lib.rs#L716)。
【重要不兼容更新】- 更改Gas預(yù)算以使用Sui而不是Gas單位。這從任何與用戶相關(guān)的API操作中刪除了Gas單位的概念。這不會更改TransactionData(u64)的格式。從當前格式不再有效的意義上說,這不是重大調(diào)整,而是要求您重新考慮如何使用Gas預(yù)算。
【重要不兼容更新】- 在發(fā)布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現(xiàn)在要求您輸入原始信息而不是哈希后的信息。您還必須提供由u8數(shù)組表示的hash_function名稱。有關(guān)詳細信息,請參閱PR7773(https://github.com/MystenLabs/sui/pull/7773)。
【重要不兼容更新】-?ValidatorMetadata函數(shù)現(xiàn)在包含一個p2p_address字段,該字段的值是驗證節(jié)點用于P2P活動(例如狀態(tài)同步)的地址,要了解更多信息,請參閱PR8636(https://github.com/MystenLabs/sui/pull/8636)。
【交易格式重要不兼容更新】- 向TransactionData添加一個新的過期時間字段,以允許用戶指定交易到期的時間,這意味著驗證節(jié)點將不再有資格簽署和執(zhí)行。在此版本中,過期時間字段唯一受支持的值是epoch。如果未提供,則不會為關(guān)聯(lián)交易設(shè)置過期時間。
【次要不兼容更新】- 此版本修改了ConsensusCommitPrologue交易的格式。這是一個系統(tǒng)生成的交易,它更新Clock?Object上的時間戳,允許Sui Move智能合約從鏈上讀取最新的時間戳。
【次要不兼容更新】- 從Sui Framework中刪除了bulletproofs和elliptic_curve模塊。有關(guān)詳細信息,請參閱PR8660(https://github.com/MystenLabs/sui/pull/8660)。
【次要不兼容更新】- 從Sui Framework架中刪除了Randomness,從JSON RPC中刪除sui_tblsSignRandomnessObject。有關(guān)詳細信息,請參閱PR8977(https://github.com/MystenLabs/sui/pull/8977)。
【次要更新】- PoP的生成發(fā)生了變化,改變了創(chuàng)世快照,因為所有驗證PoP現(xiàn)在都在validator::validate_metadata中完成,它還刪除了bls12381::bls12381_min_sig_verify_with_domain和validator::verify_proof_of_possession。
【API重要不兼容更新】-?GetTransaction API重構(gòu)
[RPC]?sui_getTransaction和sui_multiGetTransaction現(xiàn)在接受一個名為options的附加可選參數(shù),該參數(shù)指定要檢索的字段(例如transaction、effects、events等)。默認情況下,這些操作僅返回交易簽名。
[TS SDK] 將provider.getTransactionWithEffects重命名為provider.getTransactionResponse。新函數(shù)采用新增參數(shù)SuiTransactionResponseOptions,以配置要檢索的字段(例如transaction、effects、events等)。默認情況下,此函數(shù)僅返回交易簽名。
有關(guān)詳細信息,請參閱PR8888(https://github.com/MystenLabs/sui/pull/8888)。
【API重要不兼容更新】-?sui_executeTransactionBlock重構(gòu)
刪除了sui_executeTransactionSerializedSig和sui_submitTransaction操作。
sui_executeTransaction操作現(xiàn)在采用簽名數(shù)組而不是單個簽名來支持Sponsored Transactions。
要了解更多信息,請參閱PR9068(https://github.com/MystenLabs/sui/pull/9068)。
【RPC API重要不兼容更新】- JSON-RPC 治理API的各種變化:
將sui_getDelegatedStakes升級為新的質(zhì)押流程
通過質(zhì)押池對所有StakedSui進行分組,以減少響應(yīng)中重復(fù)的驗證節(jié)點信息
改進ValidatorMetadata響應(yīng),使其更易于閱讀,這也會影響getSuiSystemState。
使SuiSystemState?JSON響應(yīng)camelCased
為Sui初始化設(shè)置添加了?— epoch-duration-ms選項,用于配置本地網(wǎng)絡(luò)epoch時長周期
有關(guān)詳細信息,請參閱PR8848(https://github.com/MystenLabs/sui/pull/8848)。
2023年3月20日添加以下條目:
【API重要不兼容更新】- 在傳遞給任何簽名API之前,必須將有效簽名提交給消息的Blake2b哈希。如果在別處創(chuàng)建簽名,請確保首先對交易數(shù)據(jù)進行哈希處理。有關(guān)詳細信息,請參閱PR9561(https://github.com/MystenLabs/sui/pull/9561)。
【API重要不兼容更新】- 此版本刪除了對用于質(zhì)押鎖定Coin的支持,并修改了StakedSui Object的結(jié)構(gòu)以刪除鎖定周期字段。有關(guān)詳細信息,請參閱PR9046(https://github.com/MystenLabs/sui/pull/9046)。
【API重要不兼容更新】- 所有在其名稱中包含delegation的函數(shù)都使用stake替代,例如,request_add_delegation現(xiàn)在是request_add_stake。有關(guān)詳細信息,請參閱PR9059(https://github.com/MystenLabs/sui/pull/9059)。
【API重要不兼容更新】- 此版本將SuiTransactionBlockResponse中的SuiCertifiedTransaction替換為SuiTransactionBlock。這是因為驗證節(jié)點不能再保證返回交易認證。此版本還統(tǒng)一了SuiTransactionBlockResponse和SuiExecuteTransactionResponse以簡化API。有關(guān)詳細信息,請參閱PR8369(https://github.com/MystenLabs/sui/pull/8369)。
【API重要不兼容更新】- 更新動態(tài)字段名稱的結(jié)構(gòu),使其更容易在sui_getDynamicFieldObject中使用。有關(guān)詳細信息,請參閱PR7318(https://github.com/MystenLabs/sui/pull/7318)。
【API重要不兼容更新】- 此版本從Transaction Builder API中刪除了request_switch_delegation函數(shù)。它還從Sui SDK的驗證節(jié)點集合類型中刪除了pending_delegation_switches字段。有關(guān)詳細信息,請參閱PR8435(https://github.com/MystenLabs/sui/pull/8435)。
【API重要不兼容更新】- 為了減少Sui全節(jié)點同步負載的大小,此版本從TransactionEffect中刪除了事件。這些事件仍包含在sui_getTransactionBlock和sui_submitTransaction最終返回的SuiTransactionBlockResponse中。有關(guān)詳細信息,請參閱PR7822(https://github.com/MystenLabs/sui/pull/7822)。
【API重要不兼容更新】-?StakedSui?Object現(xiàn)在包含質(zhì)押池的ID,pool_id。有關(guān)詳細信息,請參閱PR8371(https://github.com/MystenLabs/sui/pull/8371)。

關(guān)于 Sui Network
Sui是首個從頭開始設(shè)計的無需許可Layer 1區(qū)塊鏈,旨在為創(chuàng)作者和開發(fā)者提供平臺,以構(gòu)建能夠獲取Web3中下一個十億用戶的體驗。Sui具有橫向可擴展性,能夠以快速且低成本支持廣泛的應(yīng)用開發(fā)。
官網(wǎng):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