应用所做的一切都通过核心合约的公开函数完成;没有私有 API,也没有来自 Baofa 服务器的签名。本页覆盖接入方最常用的调用,完整接口见各参考页。
单位#
| 量 | 链上单位 |
|---|---|
| 代币 | 基本单位,6 位小数(1 枚 = 1,000,000) |
| 曲线调用中的 BNB | 1e9 wei 的计价单位(1 BNB = 1,000,000,000) |
可支付调用的 msg.value |
wei;等于计价金额 × 1e9 |
| 费用与份额 | 基点(1% = 100) |
| 截止时间 | Unix 秒 |
读取曲线#
curve(coin) 返回曲线记录:虚拟与真实储备、计价资产、完成状态与创作者;curveBalances(coin) 返回其托管余额,isCoin(address) 告诉你某个地址是否由核心合约创建。链上没有报价函数;请用 联合曲线 页的公式计算,或从做同样运算的索引器读取。
买入#
core.buyExactIn{value: spendableQuoteIn * 1e9}(
coin,
spendableQuoteIn, // 含费用的 BNB 花费,计价单位
minTokensOut, // 滑点下限,代币基本单位
partialFill, // true:裁剪到剩余供应并退回其余
buybackIndex, // 除非你路由回购接收方,否则为 0
deadline
);调用返回 (baseOut, quoteSpent),未达下限时以 BuySlippageBelowMinTokensOut 回退,超过截止时间以 Expired 回退,并退回任何未花费的 BNB。完成曲线的那笔买入在 Trade 之后发出 Complete。
卖出#
coin.approve(address(core), amount);
core.sell(coin, amount, minQuoteOut, buybackIndex, deadline);每枚代币都支持 permit,接入方可以用持有者的签名把授权合并进同一笔交易。所得以 BNB 支付;低于下限时以 TooLittleQuoteReceived 回退。
发行#
address predicted = core.predictCoin(creator, salt);
core.create(CreateParams({
name: "...", // 最多 32 字节
symbol: "...", // 最多 13 字节
uri: "https://...", // 最多 200 字节,元数据文档
creator: creator,
quoteAsset: address(0),
frenzy: false,
creatorFeeBps: 0,
holderReward: false,
salt: salt
}));createAndBuy(p, amount, maxQuoteIn, buybackIndex) 在同一笔交易中完成相同的发行,随后以最多 maxQuoteIn 买入 amount 枚代币;其 msg.value 为 maxQuoteIn × 1e9,差额退回。Create 事件携带代币地址、创作者与曲线的起始储备。非零的 creatorFeeBps 只在计价代币曲线上被接受,而上线时没有注册计价代币;frenzy: true 只在狂暴模式标志开启时被接受。
毕业#
core.migrate(coin);曲线完成后无需许可。以 BNB 计价的代币不可携带价值。返回交易对地址,并发出 GraduatedToPancakeV2(coin, pair, quoteToken, coinAmount, quoteAmount, liquidity) 与 CompleteMigration。
创作者收益#
| 操作 | 调用 |
|---|---|
| 把代币的累计额划入创作者余额 | sweepCreatorFee(coin) |
| 读取可领取余额 | creatorFeeBalance(creator, address(0)) |
| 领取 | 从创作者地址调用 collectCreatorFee(address(0)) |
需要索引的事件#
| 事件 | 发出时机 |
|---|---|
Create |
每次发行 |
Trade |
每笔曲线买卖 |
Complete |
耗尽真实代币储备的那笔买入 |
GraduatedToPancakeV2、CompleteMigration |
毕业 |
CollectCreatorFee |
创作者领取 |
交易对上的 PancakeSwap Swap 与 Sync |
毕业后的交易 |
主题列于 核心合约参考 页。
错误#
合约只以具名错误回退,每个错误及其选择器列在参考页上。交易路径上最常见的是 BuySlippageBelowMinTokensOut、TooLittleQuoteReceived、TooMuchQuoteRequired 与 Expired;完成后买入为 BondingCurveComplete;过早 migrate 为 BondingCurveNotComplete;代币本身则会发出 TransferToPairBeforeGraduation。
接入方安全须知#
- 始终设置截止时间与滑点下限;曲线价格随每笔交易变动。
- 绝不要直接向钻石合约地址转 BNB:它在所有账本之外,只有所有者能退回。
- 在把一个地址当作 Baofa 代币之前读取它的
core(),并与 地址 页的核心合约地址比对。 - 代币在毕业前转往其交易对会按设计回退;不要把毕业前的代币路由经过 PancakeSwap。