> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kas.fun/llms.txt
> Use this file to discover all available pages before exploring further.

# 合约概览

> KasFun 智能合约架构

## 架构

KasFun 由三个核心合约组成：

```mermaid theme={null}
graph TD
    MF["<b>MemeFactory</b><br/>createToken() · buy() · sell()<br/>getTokenInfo() · getCurrentPrice()"]
    BC["<b>BondingCurve</b><br/>(纯数学计算)<br/>calculateBuyReturn · calculateSellReturn"]
    C["<b>Council V1</b><br/>(每个代币独立，毕业后激活)<br/>选举 · 提案 · 投票"]
    TA["Token A<br/>(ERC-20)"]
    TB["Token B<br/>(ERC-20)"]

    MF --> TA
    MF --> TB
    MF -- 读取 --> BC
    TA -. 毕业 .-> C
    TB -. 毕业 .-> C
```

## MemeFactory

核心合约。所有代币创建和 Bonding Curve 交易都通过 MemeFactory 进行。

| 函数                                    | 说明                                              |
| ------------------------------------- | ----------------------------------------------- |
| `createToken(params)`                 | 创建新代币（payable，需要平台签名）                           |
| `buy(token, minTokensOut)`            | 用 KAS 买入代币（payable）                             |
| `sell(token, tokenAmount, minKasOut)` | 卖出代币换回 KAS（需要 ERC-20 授权）                        |
| `getTokenInfo(token)`                 | 获取代币状态（储备、是否毕业等）                                |
| `getCurrentPrice(token)`              | 获取当前 KAS 价格                                     |
| `getBondingCurveProgress(token)`      | 获取募集进度（0–10000 = 0–100%）                        |
| `getTokenParamVersion(token)`         | 获取 Bonding Curve 参数（virtualToken, virtualKas 等） |
| `bondingCurve()`                      | 获取 BondingCurve 合约地址                            |

MemeFactory 创建的每个代币都兼容 **ERC-20** 标准。

## BondingCurve

无状态的数学合约。所有函数都是 `pure` 或 `view`——不修改状态。由 MemeFactory 内部调用，也可供外部进行价格计算。

<Info>
  BondingCurve 合约地址不是固定的——需通过 `MemeFactory.bondingCurve()` 读取。

  ```javascript theme={null}
  const bcAddress = await factory.bondingCurve();
  ```
</Info>

| 函数                                   | 说明                 |
| ------------------------------------ | ------------------ |
| `calculateBuyReturnWithParams(...)`  | KAS 输入 → 代币输出      |
| `calculateSellReturnWithParams(...)` | 代币输入 → KAS 输出      |
| `calculateBuyCostWithParams(...)`    | 期望代币输出 → 所需 KAS 输入 |

## Council V1

每个代币独立的治理合约，在代币毕业后激活。每个毕业代币可以拥有自己的 Council，包含选举出的成员、提案和投票。

| 功能       | 说明                   |
| -------- | -------------------- |
| **选举**   | 代币持有者投票选举 Council 成员 |
| **提案**   | Council 成员为社区创建提案    |
| **投票**   | 代币持有者通过锁定代币对提案投票     |
| **税费配置** | 社区可以通过提案设置代币交易税      |

<Info>
  Council 合约地址是每个代币独立的。可以在 [kas.fun](https://kas.fun) 上对应代币的社区页面查看。
</Info>

## 代币标准

* 所有代币兼容 **ERC-20**（transfer, approve, balanceOf 等）
* 总供应量：每个代币 **1,000,000,000**（10 亿），18 位小数
* 代币在创建时全部铸造。80% 进入 Bonding Curve 池，20% 预留
