爆发 BaofaBaofa 文档
EN 打开应用

架构

四个钻石合约、一个工厂、一个代币合约与 PancakeSwap v2。各部分如何组合、价值存放在哪里,以及设计拒绝做什么。

更新于 2026-11-04合约 baofa-rewrite-2026-11-04-a727bfe

Baofa 是一组为 BNB Smart Chain 编写的 EIP-2535 钻石合约,使用 Solidity 0.8.38,面向 Cancun EVM 编译。每个钻石合约是一个职责固定的模块;代币合约与工厂是普通合约。协议是依据对参考 Solana 程序逐指令写成的完整规格重写的,并通过差分测试与之比对;它不是对另一套 EVM 代码的移植。

组成#

合约 职责 持有价值
BaofaCore 曲线:发行、买入、卖出、毕业、创作者收益账本、持有者奖励、激励、计价资产注册表、协议参数 曲线储备与费用账本,全部以 WBNB 形式
BaofaFees 各消费方的费率与分层、收益分成配置、社交收益账户、捐赠账户、回购划转 分成与社交收益账本,以 WBNB 形式
BaofaFrenzy 狂暴模式交易程序:上限、时间窗、交易员角色、划转、时间窗结束时的销毁 其金库,以 BNB 形式
BaofaRelay 捐赠中继:活动捐赠、周期关闭、兑换为结算资产并由中继员分发 在途捐赠
BaofaCoinFactory 用 CREATE2 为每次发行部署一个 BaofaCoin 无
BaofaCoin 代币:支持 permit 的 ERC-20,一道毕业时打开的闸门 无
Baofa AMM(未部署) 协议自有的毕业场所,之后可由治理挂接 不适用

BNB Smart Chain 上的外部依赖:WBNB、PancakeSwap v2 工厂(毕业时创建交易对)与 PancakeSwap v2 路由(中继兑换)。地址见 地址 页。

价值存放在哪里#

曲线储备、创作者收益累计与协议费累计都以 WBNB 形式保存在核心合约中,按代币与按接收方记账。除狂暴模式金库外,没有任何钻石合约静态持有原生 BNB:可支付入口精确包装它所记账的金额,有状态不变量测试套件在每次调用后断言核心、费用与中继钻石合约不持有任何原生余额。两个推论:

  • 协议中没有任何东西依赖钻石合约的原始余额,因此直接向钻石合约转 BNB 不会改变任何记账。这类转账是搁浅资金,只有所有者的 rescueNative 能退回,且触碰不到账本。
  • 每一笔对外支付要么由收款方主动领取(创作者与协议费领取、毕业费用),要么是带 WBNB 回退的推送(持有者奖励、分成分发、社交领取),因此没有任何收款方能阻塞一笔交易或他人的支付。

一笔交易的调用流程#

  1. 交易者在核心合约上调用 buyExactIn 或 sell,附带截止时间与滑点下限。
  2. 核心合约从费用模块读取该代币计价类别与市值分层对应的费率。
  3. 核心合约以整数运算应用曲线数学,把费用部分划入各自账本,在交易者与曲线之间转移代币,并发出 Trade。
  4. 若买入耗尽了真实代币储备,核心合约发出 Complete;毕业是另一笔无需许可的 migrate 调用。

重入锁是每个钻石合约一把的瞬态存储锁,在整个外部调用期间持有。外部代币转账在状态结算之后进行。

可升级性与所有权#

每个钻石合约有一个所有者,可以通过 diamondCut 更换切面,并以两步完成所有权转移(transferOwnership、acceptOwnership)。所有者也可以放弃所有权;连同移除切割选择器,这会使钻石合约不可变。部署时每个钻石合约的所有者都是部署方;取代它的治理结构见 角色与治理。

代币合约与工厂没有所有者,也没有升级路径。

设计拒绝什么#

拒绝 方式
暂停曲线上的交易 核心合约没有暂停函数
拉黑交易者或代币 不存在这样的函数
发行后增发代币 BaofaCoin 没有增发
预先注入代币的 PancakeSwap 交易对 代币在毕业前拒绝转往其交易对
保留毕业流动性 流动性凭证在毕业交易中转入黑洞地址
收款方挟持交易 主动领取,WBNB 回退
为任意地址免除费用的白名单 白名单只能是狂暴模式钻石合约或无人

源码与验证#

合约在部署时于 BscScan 验证,使用上述编译器设置,优化器运行次数 200。交给外部审查方的审查包包含与部署相同的 75 个 Solidity 文件;见 保障体系。

爆发 Baofa 文档。基于启动合约包构建 baofa-rewrite-2026-11-04-a727bfe · 2026-11-04

baofa.fun · X @baofadotfun