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 ( ) )? { 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 { 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应用的可访问性、安全性和性能问题,为开发者和普通用户提供全面且优秀的服务。