本文將為開發人員在SuiNetwork上的最佳實踐做快速參考。
Sui是基于第一原理重新設計和構建而成的L1公有鏈,旨在為創作者和開發者提供能夠承載Web3中下一個十億用戶的開發平臺。Sui上的應用基于Move智能合約語言,并具有水平可擴展性,讓開發者能夠快速且低成本支持廣泛的應用開發。Sui主網已于2023年5月3日正式上線。
本文將為開發人員在SuiNetwork上的最佳實踐做快速參考。
Move
常規知識
閱讀有關包升級的詳細信息并編寫對升級友好的代碼。
包是不可變的,有漏洞的包代碼可以永遠調用,解決方案是在對象層面添加保護。
蘋果App Store上出現假冒Trezor的惡意應用程序Trezor Wallet Suite:6月20日消息,蘋果App Store上出現一款假冒Trezor的惡意應用程序Trezor Wallet Suite,該應用已經上架了幾周,可能已經竊取了數千人的資金。該惡意程序最初由The Crypto Lawyers的管理合伙人Rafael Yakobi發現。Trezor的實際iOS應用程序被稱為“Trezor Suite Lite”,使用戶能夠跟蹤他們的投資組合并交易資產。如果用戶忘記了錢包應用的登錄細節,錢包供應商會要求他們離線存儲種子短語。種子短語是最后一道防線,用戶只能用它從錢包應用程序中收回資金。
Trezor為用戶提供了Shamir備份,以幫助他們生成多個種子短語,這些種子短語可以存儲在不同的物理位置。下載應用程序后,用戶可以選擇一定數量的短語來解鎖資金。例如,他們可以生成三個種子短語,但只需要兩個就可以解鎖他們的資金。而使用假冒的Trezor Wallet Suite泄露種子短語的用戶可能創建了一個種子短語。生成多個種子短語需要用戶創建新的錢包。多個種子短語可以確保即使假冒應用獲取了一個短語,它也無法訪問用戶資金。
截至發稿時,這款假冒應用已成為英國區App Store搜索量第二高的應用。(BeInCrypto)[2023/6/20 21:49:55]
如果將包從P升級到P',依賴于P的其他包和客戶端將繼續使用P,而不是自動更新到P'。因此,依賴于包和客戶端的代碼都必須更新以明確地指向P'。
Sui發布SIP 6改進提案,開發人員將能構建流動性質押協議:6月10日消息,Layer1 公鏈 Sui Network 發布 SIP 6 改進提案,該 SIP 指定了對StakedSui結構和相關函數的改進,該 SIP 還需通過審核。 Sui 表示,通過 SIP 6 開發人員將能構建流動性質押(協議)。[2023/6/10 21:27:35]
期望被依賴包擴展的包,可以通過提供符合所有版本標準的接口,來避免每次升級時破壞它們之前的擴展。以Wormhole跨鏈橋為例,通過Wormhole作為橋梁發送消息,要想生成發送消息的擴展包,可以使用任意版本Wormhole包中的prepare_message指令來生成MessageTicket,而發送消息的客戶端代碼必須將該MessageTicket傳遞到最新版本包中的publish_message。
Sui 成為甲骨文紅牛車隊的官方區塊鏈合作伙伴:6月1日消息,Sui 宣布與一級方程式車隊甲骨文紅牛車隊(Oracle Red Bull Racing)達成合作,成為甲骨文紅牛車隊的官方區塊鏈合作伙伴。Sui 表示,將在接下來的幾個月打造全球粉絲都能享受的身臨其境的數字體驗。[2023/6/1 11:52:52]
public函數不能刪除或更改,但public(friend)函數可以。您可以自由地使用public(friend)或僅自己可見功能,除非您要將現在的庫函數永遠公開。
不能刪除struct類型、不能添加新字段或通過升級新功能。添加新類型時請謹慎思考,一旦添加后將永遠存在!
使用vector支持的集合,最多不超過1000個數據項。
使用動態字段支持的集合用于任何允許第三方添加的集合、更大的集合和未知大小的集合。
公鏈項目Sui推出區塊鏈瀏覽器Sui Explorer:8月26日消息,據官方推特,前Meta團隊創立的公鏈項目Sui宣布推出其區塊鏈瀏覽器Sui Explorer,以便為用戶和開發者提供檢查和分析工具。
Sui Explorer旨在提供實時鏈上數據、活動和指標,啟用對所有資產和合約的查找、驗證和跟蹤,提供調試和審計工具,并提供實用的智能合約開發和Sui Move獨有的功能。[2022/8/26 12:50:56]
SuiMove對象最大為250KB——任何創建更大對象的嘗試都將導致事務中止,請確保您的對象沒有不斷增長大過vector支持的集合。
如果您的函數f需要來自調用者的付款,例如使用SUI,請使用funf(payment:Coin)函數而不是funf(payment:&mutCoin,amount:u64)函數。這對調用者來說更安全,因為他們可以準確地知道具體支付數額,并且不需要依靠函數f來提取正確的數額。
不需要小幅度優化gas消耗。在Sui上計算花費成本時,使用四舍五入的方法計算出其最接近的bucket,因此只有非常劇烈的波動才會導致gas的變化。特別是,如果您的交易已經在最低成本范圍內,那就不能更便宜了。詳情請參照下圖。
遵循Move編碼慣例來獲得統一的式樣。
可組合性
使用display標準自定義您的對象在錢包、應用程序和瀏覽器中的顯示方式。
避免使用「自我轉移」功能——任何時候都有可能,從當前函數返回obj,而不是寫入transfer::transfer(obj,tx_context::sender(ctx)),這允許調用者或可編程交易塊使用obj。
測試
使用sui::test_scenario`模擬多次交易和多位發送者的測試場景。
使用sui::test_utilsmodule通過assert_eq測試獲得更好的糾錯消息,通過print調試打印,以及通過destroy進行test-only銷毀。
使用suimovetest--coverage計算測試時代碼覆蓋的信息,使用suimovecoveragesource--module查看以紅色突出顯示的未覆蓋行。如果可行,建議將覆蓋率設置為100%。
應用程序
為了獲得最佳性能和數據一致性,應用程序應該在同一個全節點上提交寫入和讀取請求。在TSSDK中,這意味著應用程序應使用錢包的signTransactionBlockAPI,然后通過調用應用程序全節點上的execute_transactionBlock來提交交易,而不是使用錢包的signAndExecuteTransactionBlockAPI。這確保了先寫后讀的一致性——從應用程序的全節點讀取將立即反映事務的寫入,而不是等待checkpoint。
為了降低延遲,如果您的應用程序需要知道交易已確認,但不需要立即查看交易效果或讀取交易寫入的對象/事件,請使用帶有"showEffects":false和"showEvents":false的executeTransactionBlock。
應用程序應該將頻繁讀取的數據本地緩存,而不是從全節點頻繁抓取。
盡可能地使用可編程交易塊來組合現有的鏈上功能,而不是發布新的智能合約代碼。可編程交易塊允許大規模批次處理和異構組合,進一步降低已經很低的gas費。
應用程序應該將對gas預算、gas價格和coin選擇權留給錢包,這將為錢包提供了更大的靈活性,并且錢包有責任試運行交易以確保交易不會失敗。
簽名
永遠不要簽署兩筆觸及同一獨享對象的并發交易,要么單獨使用獨享對象,要么等待一筆交易結束后再發送下一筆交易。違反此規則可能會導致客戶端模棱兩可,從而同時鎖定兩個交易中涉及的獨享對象,直到當前epoch結束。
任何發起交易的suiclient命令都可以接受--serialize-output標志以輸出要簽名的base64交易。
Sui支持多種簽名方案進行交易簽名,包括包括本機多重簽名。
當以太坊在2087年最終成為主流,美聯儲不再存在時,歷史學家會將Crypto的起源追溯到2011年的一個時刻,當時暴雪削弱了VitalikButerin《魔獸世界》中角色的“虹吸生命”法術.
1900/1/1 0:00:00Web3產品正在替代用戶最喜歡的Web2應用程序,而且采用速度比你想象的要快。隱私和去中心化是吸引開發人員使用區塊鏈技術改進當今Web2應用程序的兩個最具吸引力的功能.
1900/1/1 0:00:00上一個十年,以Airbnb和Uber為首的幾家創新公司創造了新的互聯網市場。這些開創性的平臺為世界帶來了一種全新的商業模式:以去中心化為基礎的共享經濟.
1900/1/1 0:00:00過去一年,香港在數字資產監管方面有不少重大進展。2022年10月,香港政府發布政策宣言,表明支持數字資產并將從各方面促進行業發展.
1900/1/1 0:00:00吳文謙,現為TKX資本的合規合伙人,香港特別行政區高等法院執業律師。他曾領導火幣和OKX加密交易所法律和合規職能,并為累計籌集超過2億美元的加密項目和加密基金提供咨詢.
1900/1/1 0:00:00AlchemyInsights近日發布題為Web3DevelopmentReport:Q3''2022EthereumEcosystemandBeyond的報告,指出市場雖深陷熊市.
1900/1/1 0:00:00