Beosin 已推出針對 Nibiru 生態的審計方案
封面:Nibiru
Layer1 公鏈 Nibiru Chain 在 2024 年 1 月底推出空投激勵,在經過一個月的空投活動後,其社區增長超過 3 倍,推特關注人數超過 50 萬。 作為融資超 2000 萬美元的新公鏈,Nibiru Chain 專注於解決 DeFi 應用的安全性與速度,將成為 dYdX 的潛在競爭對手。
目前,Nibiru Chain 計劃在本周啟動其主網。 作為增長快速的 Layer1,Nibiru Chain 有何技術特點與競爭優勢? 其生態項目的開發需要注意哪些安全問題。 今天 Beosin 將為大家一一解析。
Nibiru Chain 協定解析
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 <Response, ContractError> { // 检查地址是否在黑名单 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 ( ) )? { if is_denied { return Err (ContractError::DeniedSender); } ...... };
如上面代碼所示,由於 dest 沒有經過標準化,通常使用的位址為小寫位址,則任何人可以通過提供大寫位址繞過 BLACKLIST 進行操作。
3. 注意運算與溢出
在 CosmWasm 合約中,開發者需注意整數溢出風險或被 0 除等情況。 建議開發者使用 CosmWasm 的 Uint256 和 Uint512 類型,並使用不會溢出的數學函數 full_mul()。
4. 存取控制問題
訪問控制是程式安全的主要問題之一,由於訪問控制問題引起的安全事件數不勝數,在 Cosmwasm 合約中同樣需要重視。 以下是一個典型案例:
fn update_config( deps: DepsMut, msg: UpdateMsg) -> Result<Response, ContractError> { 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(deps.storage, &new_config)?;
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 應用的可訪問性、安全性和性能問題,為開發者和普通使用者提供全面且優秀的服務。
免責聲明:作為區塊鏈資訊平臺,本站所發佈文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。 文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。