新公链 Nibiru 主网将上线,解析其技术特点与安全开发实践
2024-03-11 17:57
Beosin
2024-03-11 17:57
订阅此专栏
收藏此文章
作为融资超 2000 万美元的新公链,Nibiru Chain 专注于解决 DeFi 应用的安全性与速度。


撰文:Beosin


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

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

Beosin
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开