opbnb的安全实践
opBNB 网络是 BNB 智能链的 Layer 2 扩展解决方案,由 Optimism OP Stack 的 bedrock 版本[1]提供支持,其原理在于将交易处理和资源利用从 BNB 智能链分流,同时将数据发布到底层主网上。用户可以通过将资金从 BSC 存入 opBNB,并在 opBNB 上使用应用程序和合约进行交互。接着,序列化器聚合交易、计算状态转换,并将其提交至 BSC 上的 Rollup 合约。证明生成器能够生成密码学证明,证明这些状态转换的有效性,验证者将检查这些证明以验证 opBNB 状态的正确性。opBNB 的核心是允许用户以高吞吐量和低费用存取资金、使用智能合约以及查看网络数据。通过充分利用 Layer 2 技术,opBNB 能够超越 BNB 智能链的限制,为用户提供更出色的体验。
Layer 1 网络是提供数据传输和验证基础设施的基础网络,例如 BSC 和以太坊。这些网络在高峰期面临网络拥塞的挑战,通常会发生在任何热门应用程序运行促销活动或流量激增时。网络拥塞可能导致高交易费用、交易缓慢和用户体验不佳。
为了克服这些挑战,Layer 1 网络需要提高其可扩展性,即处理更多交易而不影响安全性的能力。例如,2021 年,BSC 在 BNB 智能链上有一个 Web3 游戏,每天生成超过 800 万笔交易[2]。
在这种使用情况下,BSC 的吞吐能力显然会被大大超过,导致交易速度减慢、交易最终确认延迟以及游戏玩家和其他 dApp 用户的不佳体验。
每日 Gas 费用可能潜在地上涨到超过 6,800 BNB(价值 300 万美元),这将对游戏的可用性和可持续性造成重大障碍。
如此大规模的 dApp 所带来的巨大交易负载似乎难以在 BSC 的当前形态下有效处理。为了支持这样的 dApp,需要进行重大优化和扩展解决方案,以避免网络性能下降和不合理高成本。
opBNB 的目标是为 BSC 上高活跃应用程序,如 DeFi、NFT 和游戏,提供网络拥塞问题的扩展解决方案。opBNB 基于 OP Stack,并通过优化挖矿流程和缓存数据访问,实现了每秒 100M Gas 的吞吐能力,远高于 BSC。
与以太坊上的其他 Layer 2 解决方案,如 OP Mainnet 和 Arbitrum 相比,opBNB 具有较低的 Gas 费用和更高的区块 Gas 限制,这意味着当 Layer 2 的交易量增加时,Gas 费用将更加稳定。以下列出了以太坊 EIP-1559 参数以供参考。
在 opBNB 上开发几乎与直接在 BNB 智能链上构建相同。opBNB 使用 EVM 执行引擎,这意味着去中心化应用程序可以从以太坊、BNB 智能链、Polygon 和其他 EVM 兼容链迁移,而无需更改太多代码。遵循以下安全指南可以极大提高合约安全性。
所有重要的合约都有可能出现错误。特别是在 opBNB 初期,仍然可能出现问题。因此,您必须准备好处理它们,而且您的合约必须具备响应的能力。您可以通过以下方式来做到这一点:
简单总结一下,以下是与智能合约升级相关的问题:
Solidity 没有浮点数,因此舍入误差是不可避免的。设计者必须意识到向上舍入还是向下舍入是正确的做法,以及舍入应该对谁有利。
// bad
uint x = 5 / 2; // Result is 2, all integer divison rounds DOWN to the nearest integer
使用乘数可以防止四舍五入,将来处理 x 时需要考虑到这个乘数:
// good
uint multiplier = 10;
uint x = (5 * multiplier) / 2;
存储分子和分母意味着可以在链外计算分子/分母的结果:
// good
uint numerator = 5;
uint denominator = 2;
单步所有权转移意味着,如果在转移所有权或管理权限时传递了一个错误的地址,则表示该角色将永远丢失。如果在此功能中将管理权限赋予了错误的地址,则会对合约造成不可挽回的损失。
Ownable2step 要求接收者确认所有权,这可以确保不会意外地将所有权发送到输入错误的地址。
参考以下实现: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable2Step.sol
实施安全访问控制的一种方法是使用多重签名帐户来管理合约。与常规外部帐户不同,多重签名帐户由多个实体拥有,需要最低数量的帐户签名(比如 5 个中的 3 个)才能执行交易。
使用多重签名进行访问控制增加了额外一层安全性保障,因为需要多方同意才能对目标合约执行操作。如果有必要使用所有权模式,这种方法尤其有用,因为攻击者或内部作恶者操控敏感的合约函数以达到恶意目的会更加困难。
为了防止函数和事件(Event)产生混淆,命名一个事件使用大写并加入前缀(我们建议 LOG)。对于函数,始终以小写字母开头,构造函数除外。
// bad
event Transfer() {}
function transfer() {}
// good
event LogTransfer() {}
function transfer() external {}
资产价格随买卖压力而变动。如果内存池中有大额订单,交易者就有动力复制该订单,但价格会更高。这样,他们就会买入资产,让大订单推动价格上涨,然后立即卖出。卖出订单有时被称为“backrunning”。卖出指令可以通过下一个较低 Gas 价格的卖出指令来完成,这样的顺序看起来像这样:
抵御这种攻击的主要方法是提供一个“滑点”参数。如果“frontrun buy”本身将价格推高超过某个阈值,“large buy”(大额买入)订单就会恢复,使 frontrunner 交易失败。
这就是所谓的“三明治”(sandwhich),因为大额买入被 frontrun 买入和 backrun 卖出夹在中间。这种攻击同样适用于大额卖单,只是方向相反。
许多应用需要提交的数据是私有的,直到某个时间点才能工作。游戏(比如,链上游戏 rock-paper-scissors)和拍卖(比如,sealed-bid second-price auctions)是两个典型的例子。如果你的应用存在隐私保护问题,一定要避免过早发布用户信息。
例如:
在 DeFi 协议中采取以下多种安全实践,能更大程度地保证 DeFi 协议安全。
智能合约审计是对与区块链交互的代码进行详细系统的审查。智能合约安全审计对于排除在开发过程中可能出现的安全漏洞至关重要,这些漏洞可能会导致潜在的攻击,危及用户资金安全。定期进行安全审计对于在产品生命周期内排除漏洞至关重要。安全审计必须在智能合约的新版本(例如 V1、V2 和 V3)的开发完成后、主网部署之前进行。
ScaleBit 作为一个为 Web3 Mass Adoption 提供安全解决方案的区块链团队,凭借着在区块链跨链和零知识证明等扩展技术方面的专业能力,主要为 ZKP、Layer 2 和跨链应用提供细致和尖端的安全审计,致力于为可扩展的区块链生态系统的大规模应用提供安全保障。
链上活动跟踪机器人用于检测智能合约中的关键操作或状态变化(恶意交易),如外部函数调用、重入调用,并通过自定义通知提醒团队及时采取必要的行动。
形式化验证是一种用于证明设计的正确性并通过严格的数学程序展示错误根本原因的方法。形式化验证可以帮助验证诸如加密协议等系统的正确性。它通过数学方式进行,以避免源代码中的任何加密漏洞。在形式化验证中,人们编写规范(根据上下文定义什么是正确的,什么是错误的),以揭示错误。
形式化验证与安全审计不同,它专注于智能合约代码的数学逻辑,并能够可靠地找到审计公司常常忽略的复杂错误。
作为最大资本效率,降低风险的解决方案,经济安全是一种关注 DeFi 项目的财务模型的解决方案。它确保协议在财务安全方面经过广泛测试,并帮助开发人员了解有关安全、治理和共识机制的决策可能如何影响网络活动和资产价值。
Layer 2 在很大程度上依赖于跨链桥,opBNB 也不例外。在 opBNB 网络上构建或部署任何应用程序之前,您必须首先将 BNB(tBNB)作为您的 Gas 代币从 BNB 智能链存入 opBNB,这也是通过跨链桥实现的。然而,跨链桥攻击数量明显增加,这些桥已成为恶意攻击的目标,成为漏洞利用的蜜罐,有时会造成严重的影响。
托管者:
债务发行者:
通信者:
接口(可通过“撤销批准”来修复):
网络:
如果项目中包含桥智能合约,就必须遵循标准,并在此基础上创建安全合约。从过去发现的错误中吸取教训,并准备好解决方案。
确保经过验证的合约满足以下要求:
遵循以下安全验证要求可以极大提高跨链桥安全性:
在 opBNB 生态中,严格遵循上述安全实践对于确保您的协议的安全性至关重要。这些实践涵盖了多个关键方面,包括智能合约、DeFi 协议以及跨链桥。遵循这些实践不仅可以有效降低潜在漏洞和攻击的风险,还能增强用户信任,确保他们的资金和数据受到可靠的保护。
此外,我们还需要强调进行安全审计的重要性,作为一家业内领先的区块链安全团队,ScaleBit 团队在 ZKP、Layer 2 和跨链应用的安全审计服务具备专业能力和丰富的实践经验。安全审计是确保协议和智能合约完整性的至关重要步骤,它有助于识别并纠正潜在的漏洞和安全风险,以确保用户的资金和数据受到可靠的保护。ScaleBit 致力于为 Web3 的广泛采用提供安全解决方案,成为确保协议和智能合约安全性的可信合作伙伴。通过严格的审查和测试,提供对潜在威胁的深入洞察,以确保 opBNB 生态的用户能够放心使用这一创新生态系统。
参考资料
[1] https://community.optimism.io/docs/developers/bedrock/ [2] https://bscscan.com/address/0x39bea96e13453ed52a734b6aceed4c41f57b2271?ref=binance.ghost.io#analytics [3] https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable2Step.sol [4] https://docs.bnbchain.org/opbnb-docs/docs/intro [5] https://docs.bnbchain.org/opbnb-docs/docs/core-concepts/need-for-opbnb [6] https://github.com/arunimshukla/Best-DeFi-Security-Practices
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!