Beosin 已推出針對 Nibiru 生態的審計方案
封面:Nibiru
Layer1 公鏈 Nibiru Chain 在 2024 年 1 月底推出空投激勵,在經過一個月的空投活動後,其社區增長超過 3 倍,推特關注人數超過 50 萬。 作為融資超 2000 萬美元的新公鏈,Nibiru Chain 專注於解決 DeFi 應用的安全性與速度,將成為 dYdX 的潛在競爭對手。
目前,Nibiru Chain 計劃在本周啟動其主網。 作為增長快速的 Layer1,Nibiru Chain 有何技術特點與競爭優勢? 其生態項目的開發需要注意哪些安全問題。 今天 Beosin 將為大家一一解析。
![](https://web3caff.com/wp-content/uploads/2024/03/image-173.png)
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 立場無關。 文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。