Layer1公鏈Nibiru Chain在2024年1月底推出空投激勵,在經過一個月的空投活動後,其社區增長超過3倍,推特關注人數超過50萬。作為融資超2000萬美元的新公鏈,Nibiru Chain專注於解決DeFi應用的安全性與速度,將成為dYdX的潛在競爭對手。
目前,Nibiru Chain計劃在本週啟動其主網。作為成長快速的Layer1,Nibiru Chain有何技術特性與競爭優勢?其生態項目的開發需要注意哪些安全性問題。今天Beosin將為大家一一解析。
NibiruChain協議解析
Nibiru Chain主要以DeFi交易為核心業務。其核心組件有以下4個:
1. Nibi-Perps
鏈上永續合約交易,讓用戶對BTC、ETH 和ATOM 等熱門加密資產進行最高10倍的槓桿交易。 $NIBI的質押者將擁有Nibi-Perps 的治理權和交易手續費折扣。
2. Nibi-Swap
Nibiru 的自動化做市商協議,計畫支援2種LP池:穩定幣兌換池和普通的恆定乘積池。
3. $NUSD
Nibiru 生態的足額抵押穩定幣。 Nibiru 計畫首先支持使用者使用$USDC和$NIBI來鑄造NUSD, 兩者的具體比例由抵押品比率(Collateral Ratio)決定。如果CR= 80%, 意味著鑄造100 $NUSD, 使用者需要提供80$USDC和等值20NUSD 的NIBI。
未來Nibiru Chain 將支援更多類型的抵押物,目前$NUSD 更像是Cosmos生態的$FRAX。
4. Nibi-Oracles
Nibi-Oracles是Nibiru的原生預言機解決方案,允許驗證者運營商積極參與預言機共識投票,將鏈下數據高保真地整合到區塊鏈上,提供來自外部API 和智能合約的低延遲反饋。
在2024 年,Nibiru Chain 將著眼於擴大生態系統,其主要發展包括多個計劃,例如與多條鏈的主要DeFi項目整合、在一流的中心化交易所上市、完成並行樂觀執行,以及實現全面的EVM 相容性。
安全開發實踐
若在Nibiru Chain上開發應用,其開發流程和所需語言與在其它Cosmos系公鏈幾乎完全相同,遵循以下安全指南可以提高專案的合約安全性:
合約開發安全
1. 做好應對攻擊的準備
與使用Solidity 開發合約類似,開發者都需要考慮如何面對攻擊和修復漏洞。因此開發者需要建立可升級的智慧合約,並制定好風險應對方案。
2. 注意地址的驗證標準化
任何有效的Cosmos SDK地址都有兩種有效的表示形式:全小寫和全大寫,如:cosmos1uzwqa88hcqe5gs7u7lgjxekz7xc6sm0f7xwp6a 與
COSMOS1UZWQA88HCQE5GS7U7LGJXEKZ7XC6SM0F7XWP6A都是同一個位址,Nibiru也是一樣。在處理合約中地址時,我們需要考慮地址的這項特性。
pub fn valid_transfer ( deps: DepsMut, info: MessageInfo, amount: Uint128, dest: String , ) -> Result { // 檢查位址是否在黑名單if let Some (is_in_blacklist) = BLACKLIST. may_load (deps.storage, & &dest. to_string ( )? { if is_denied { return Err (ContractError::DeniedRecipient); } } else if let Some (is_in_blacklist) = BLACKLIST.may_load ( deps.storage , &info.sender.clone ( (ContractError::DeniedSender); } ......};
如上面程式碼所示,由於dest沒有標準化,通常使用的地址為小寫地址,則任何人可以透過提供大寫地址來繞過BLACKLIST進行操作。
3. 注意運算與溢出
在CosmWasm 合約中,開發者需注意整數溢位風險或被0除等情況。建議開發者使用CosmWasm 的Uint256 和Uint512 類型,並使用不會溢出的數學函數full_mul()。
4. 存取控制問題
存取控制是程式安全的主要問題之一,由於存取控制問題所造成的安全事件數不勝數,在Cosmwasm合約中同樣需要重視。以下是一個典型案例:
fn update_config( deps: DepsMut, msg: UpdateMsg) -> Result { let config = CONFIG.load(deps.storage)?;
let new_config = Config { rewards_vault_contract: msg.vault_address .map(|human| deps.api.addr_validate(&human)) .transpose()? .unwrap_or(config.rewards_vault_contract) }; CONFIG.save(defidps) &new) }; ;
Ok(Response::new().add_attribute("action", "update_config"))}
上述程式碼因為缺少呼叫者位址的檢查和限制,允許任何人都可以呼叫update_config(),將自己的位址設為金庫位址,接收合約產生的所有獎勵。
5. 小心無限循環
Cosmwasm合約運行設定了很高的gas limit,但使用不當會耗盡gas。 CosmWasm 合約可能透過在ACK handler 中回調自己而陷入無限循環。如果開發者在兩個CosmWasm 合約之間有傳遞資料包,需注意這可能導致無限循環並損耗大量gas 費用。
專案安全實踐
1. 智能合約審計
智慧合約審計是透過對智慧合約程式碼進行系統的測試和審查,盡可能地發現潛在的安全漏洞,排除安全風險,確保程式碼沒有業務邏輯漏洞,符合預期運作流程和結果。定期對於專案的智慧合約進行安全審計至關重要,審計的時間點建議在合約開發完成後,主網部署之前進行。
2. 使用多簽錢包
專案方需考慮使用多簽錢包管理專案金庫以及智慧合約,多重簽章帳戶需由多個實體持有,盡量避免潛在的存取控制風險和內部作惡。目前Nibiru Chain已採用Nomos多簽解決方案,專案方可考慮使用Nomos進行資產管理。
總結
Nibiru Chain作為一條全新的Layer1公鏈,為DeFi、遊戲、RWA 等領域提供了一個創新平台,旨在解決Web3應用的可訪問性、安全性和性能問題,為開發者和普通用戶提供全面且優秀的服務。