來源:《Testnet Wave 2 Recap – Network Learnings》by SUI Network
編譯:SUI World DAO
今日,Sui Network發文總結Sui Testnet Wave 2,期間,共有7000餘個節點連接到41個驗證者,處理3650萬筆交易,比Wave 1增長1.6倍;共有324萬枚NFT,134萬枚SUI被質押,已處理735萬個質押操作。
Testnet Wave 2 圓滿結束,幫助實現在Sui Network 上進行Staking 操作的目標,Wave 2 上的大量活動讓SUI Network 通往主網的旅程中更有信心。第一篇的回顧文章主要介紹網絡學習部分,後續還將重點討論代幣經濟學和Frenemies 遊戲。
數據快照
在wave2 三週的允許期間,社區共同創造了多項新記錄,跨越33 個epochs :
1)超過7,000 個節點連接到41 個驗證者;
2)169萬個地址;
3)3650 萬筆交易(比wave1 增長1.6 倍)
4)324萬個NFT
5)發布了118,614 個包(比wave1 增加了45 倍)
6)質押134 萬SUI
7)處理了735 萬次質押操作
8)觀察到67 個峰值TPS
9)Sui 錢包DAU 在wave2 期間增長了2.2 倍,達到171K(與1 月份的前三週相比),Sui 錢包的安裝量增長了3 倍以上,達到333K(與1 月份的前三週相比)
10)Sui Explorer 的瀏覽量達到歷史新高,共計100 萬頁面瀏覽量和571,000 獨立訪問者
11)Sui Discord 社區擁有超過600,000 名成員,使其成為全球最大的web3 社區之一
特別是,四個智能合約在wave2 期間收到了超過100 萬筆交易,總共佔wave2 所有交易的40%:
1)Sui 的系統對象位居榜首,處理了超過730 萬筆與質押相關的交易;
2)frenemies 遊戲位居第二,在短短五天的遊戲時間內就完成了超過350 萬筆交易。
3)第三活躍的是8192 遊戲其對象ID 為
0x137aebf47cd16956b68633b6f6f00a992d87d9c6
處理了超過200 萬筆交易。
4)第四活躍的是Sui Capys
對象ID
0x4c10b61966a34d3bb5c8a8f063e6b7445fc41f93
交易量為160 萬筆。
這些新記錄和新的活動水平使我們有機會確定軟件的重大改進,並進一步成熟我們的運營能力以及我們的驗證者和節點運營商社區。
SUI Network 值得注意的網絡改進
與wave1 類似,Wave2 旨在強調和發現Sui 基礎設施的改進。
處理過大的消息或交易
由於Wave 2 專注於質押,網絡經歷了很高的質押和取消質押交易,這幫助我們突破了處理大型網絡消息和交易的界限。特別是,每個未決的權益委託和取消委託交易都會在紀元更改期間生成一個交易。這會影響epoch 更改交易的交易大小,因為每個生成的事件都是交易效果的一部分。在Wave 2 中,我們在一個epoch 中看到了最多230,000 次staking 操作,因此這個epoch 變化的交易效應變得非常大。
這些超大交易會產生許多問題。如果epoch change 交易效果變得太大而無法下載,epoch change 將失敗。如果交易影響大於最大JSON RPC 響應,則無法檢索交易。任何嘗試加載如此大的交易的應用程序(例如Explorer)都可能有崩潰的風險。如此大的交易在計算上也可能過於昂貴,以至於網絡無法處理。在wave2 期間,我們的團隊不得不應用一些緊急限制增加,以保持網絡在處理大量交易時的正常運行。
由於這些發現,我們加快了對對象、包和各種交易數據(輸入參數、交易效果、事件)的保護性大小限制的添加。這些限制將有助於確保存儲、網絡和計算資源不會被主網上的超大交易所淹沒。
更穩健地處理交易的類型參數輸入
2 月1 日,我們發現了一個BUG,如果將Move 模塊指定為類型參數中的交易輸入,則交易處理邏輯無法正確驗證Move 模塊的依賴項(即該類型所屬的模塊是否已發布)。由於Move 包發布是通過拜占庭一致性廣播快速路徑進行的,因此某些驗證者可能會先於其他驗證者了解已發布的Move 模塊,並且可能不同意在類型參數中使用此模塊的交易的有效性。一個這樣的交易阻止了系統形成下一個checkpoit,結果導致了許多完整節點的停止和驗證者的分叉。這是Testnet Wave 2在2月1日凌晨中斷的主要原因。
為了在存在類型參數中輸入模塊無效的已提交交易的情況下保持Testnet 向前發展,我們的團隊執行了一些緊急修復:
1)始終檢查類型參數的模塊是否已發布;
2)允許提交的無效交易通過失敗完成執行;
3)防止提交具有未發布類型參數的進一步交易
我們發現了第二個BUG,即交易輸入檢查邏輯不拒絕在類型參數中插入非Move模塊的對象id作為輸入。因為類型參數必須是Move 模塊,所以交易永遠無法完成,也無法形成下一個checkpoint。同樣,我們的團隊不得不添加緊急修復程序以強制有問題的交易因執行錯誤而失敗,以便恢復網絡。
在Sui 存儲庫中添加了對這兩個BUG的長期修復,作為Fix input object generation #7940。
Narwhal 共識延遲的改進
與Wave 1 類似,Testnet Wave 2 提供了一個寶貴的機會,通過41個去中心化的驗證者進一步描述Narwhal 共識, 在Wave 2 期間,我們藉此機會進行了幾項共識延遲減少優化(向兩個驗證者並行提交共識、並行證書驗證、min_header_delay 參數、一秒min_header_delay) 我們不斷迭代性能,併計劃很快進行更多優化。
值得注意的開發人員經驗教訓
雖然確保網絡的穩定性是當務之急,但我們的長期目標是讓Sui 成為首屈一指的智能合約開發者平台,開發者可以從中獲得web3 最佳創造體驗,為此,我們還在Wave 2 期間監控了開發人員和用戶的摩擦點。
代幣管理
在wave2 期間,有幾個因素使用戶更有可能遇到代幣管理問題,這些問題通常表現為gas 費用不足的錯誤,或者在用戶似乎持有足夠的SUI 餘額進行交易時出現灰色的質押按鈕。
由於網絡上活躍的驗證者遊戲,參考gas 價格可能會波動,並且從一個epoch 到另一個epoch 的漲幅都大於正常水平。高gas 價格的波動可能會使用戶不太可能用一枚價值足夠高的代幣來支付gas 費,其次,初始參考gas價格設置的比Devnet更高,這樣用戶持有多幣的可能性更小,用完幣的速度也更快。最後,質押操作本質上涉及用戶將其現有SUI 餘額委託給一個或多個驗證者。然而,用戶SUI 餘額的代幣佈局可能並不總是與他們預期的質押操作相匹配。
在wave2 期間進行了一些更改以緩解這種情況:
1) 我們在參考GAS 價格較高的時期,提高了默認的水龍頭數量;
2) 我們解決了SDK 中的一個錯誤,即Sui 客戶端選擇的GAS對像大於gas_budget 而不是gas_budget * gas_price
3)為Sui 錢包質押添加了基本代幣管理,其中對於每個質押操作,使用paySui 交易來構建用於委託的質押代幣和為委託提供資金的GAS 代幣。
很快我們計劃支持可編程交易,這將簡化應用程序的代幣管理,敬請期待!
Testnet Wave 更多的成功
每次Testnet Wave 都是恐懼和興奮的結合,我們與Sui 社區合作,有意將網絡的質押能力推向極限,並本著這種精神在Testnet Wave 2 期間成功地加強了Sui。
我們非常感謝社區的參與,這有助於產生負載並發現問題,我們的下一個里程碑是為建設社區啟動一個永久性測試網,該測試網將不再是臨時性的,我們期待進一步的合作。
不久,我們還會發布另外兩篇文章描述我們的Testnet Wave 2 學習,敬請期待。