# @balancer-labs/balancer-maths 中文文档

规范地址：https://npmcn.com/package/%40balancer-labs/balancer-maths/

版本：0\.0\.41
npm 元数据更新时间：2026-06-30T21:12:48.936Z
中文译文更新时间：2026-11-07T15:31:35.758Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40balancer-labs/balancer-maths
原文对照：https://npmcn.com/package/%40balancer-labs/balancer-maths/?lang=original
项目主页：https://github.com/balancer/balancer-maths#readme
源码仓库：https://github.com/balancer/balancer-maths

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.1 MB，9 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=18\.x
- 运行依赖：0 个
- 首次发布：2024-06-03T09:02:02.621Z
- 最新版本发布：2026-06-30T21:12:48.729Z
- 近 30 天下载量：15692（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：41（近 12 个月 4 个）

## 中文简介

平衡器 V3 数学

## 安装

```sh
npm install @balancer-labs/balancer-maths
```

也可以使用：`pnpm add @balancer-labs/balancer-maths`、`yarn add @balancer-labs/balancer-maths`、`bun add @balancer-labs/balancer-maths`

## README

# 平衡数学 TS

平衡池数学的打字法执行。 也作为出版物发表 [关于国家预防机制的一揽子措施](https://www.npmjs.com/package/@balancer-labs/balancer-maths)。 。 。 .

## 钩子支持

虎克逐个得到支持.

当游泳池的钩子类型包含在 `PoolState` (单位:千美元) `HookState` 还必须传递作为任何断层操作的输入。 见 [删除流动性示例](https://npmcn.com/package/%40balancer-labs/balancer-maths/#readme-remove-liquidity) 见下文.

目前支持的钩子 :

-   退出 FeeHook 语句
    -   此勾钩执行 ExitFeeHook Example 在其中找到的示例 [单重置](https://github.com/balancer/balancer-v3-monorepo/blob/c848c849cb44dc35f05d15858e4fba9f17e92d5e/pkg/pool-hooks/contracts/ExitFeeHookExample.sol)

## 实例

### 交换

```typescript
const vault = new Vault();

const pool = {
  chainId: '11155111',
  blockNumber: '5955146',
  poolType: 'WEIGHTED',
  poolAddress: '0x204d4194e4e42364e3d1841d0a9b1ef857879c31',
  tokens: [
    '0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9',
    '0xb19382073c7A0aDdbb56Ac6AF1808Fa49e377B75'
  ],
  scalingFactors: [ 1000000000000000000n, 1000000000000000000n ],
  weights: [ 500000000000000000n, 500000000000000000n ],
  swapFee: 1000000000000000n,
  balances: [ 64604926441576011n, 46686842105263157924n ],
  tokenRates: [ 1000000000000000000n, 1000000000000000000n ],
  totalSupply: 1736721048412749353n
};

const calculatedAmount = vault.swap(
    {
        amountRaw,
        tokenIn,
        tokenOut,
        swapKind,
    },
    pool,
);
```

### 添加流动性

```typescript
const vault = new Vault();

const pool = {
  chainId: '11155111',
  blockNumber: '5955145',
  poolType: 'WEIGHTED',
  poolAddress: '0x204d4194e4e42364e3d1841d0a9b1ef857879c31',
  tokens: [
    '0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9',
    '0xb19382073c7A0aDdbb56Ac6AF1808Fa49e377B75'
  ],
  scalingFactors: [ 1000000000000000000n, 1000000000000000000n ],
  weights: [ 500000000000000000n, 500000000000000000n ],
  swapFee: 0n,
  balances: [ 64604926441576011n, 46686842105263157924n ],
  tokenRates: [ 1000000000000000000n, 1000000000000000000n ],
  totalSupply: 1736721048412749353n
}

const calculatedAmounts = vault.addLiquidity(
    {
        pool: pool.poolAddress,
        maxAmountsIn: inputAmountsRaw,
        minBptAmountOut: bptOutRaw,
        kind,
    },
    pool,
);
```

### 删除流动性

此示例显示在池与出Fee钩注册时如何计算去除百合操作的结果.

```typescript
const vault = new Vault();

const poolState = {
    poolType: 'WEIGHTED',
    hookType: 'ExitFee',
    chainId: '11155111',
    blockNumber: '5955145',
    poolAddress: '0x03722034317d8fb16845213bd3ce15439f9ce136',
    tokens: [
        '0x7b79995e5f793A07Bc00c21412e50Ecae098E7f9',
        '0xb19382073c7A0aDdbb56Ac6AF1808Fa49e377B75',
    ],
    scalingFactors: [1000000000000000000n, 1000000000000000000n],
    weights: [500000000000000000n, 500000000000000000n],
    swapFee: 100000000000000000n,
    aggregateSwapFee: 0n,
    balancesLiveScaled18: [5000000000000000n, 5000000000000000000n],
    tokenRates: [1000000000000000000n, 1000000000000000000n],
    totalSupply: 158113883008415798n,
};

const inputHookState = {
    removeLiquidityHookFeePercentage: 0n,
    tokens: poolState.tokens,
};

const removeLiquidityInput = {
    pool: '0xb2456a6f51530053bc41b0ee700fe6a2c37282e8',
    minAmountsOutRaw: [1n, 1n],
    maxBptAmountInRaw: 10000000000000n,
    kind: RemoveKind.PROPORTIONAL,
};

const outPutAmount = vault.removeLiquidity(
    {
        pool: pool.poolAddress,
        minAmountsOutRaw: amountsOutRaw,
        maxBptAmountInRaw: bptInRaw,
        kind,
    },
    pool,
    inputHookState
);
```

## 常见问题

### @balancer-labs/balancer-maths 是什么？

平衡器 V3 数学

### 如何安装 @balancer-labs/balancer-maths？

在项目目录运行 npm install @balancer-labs/balancer-maths，或使用 pnpm add / yarn add / bun add。

### @balancer-labs/balancer-maths 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @balancer-labs/balancer-maths 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @balancer-labs/balancer-maths 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=18\.x。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @balancer-labs/balancer-maths 可以商用吗？

@balancer-labs/balancer-maths 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @balancer-labs/balancer-maths 的下载量有多少？

根据 npm 官方下载统计，@balancer-labs/balancer-maths 在 2026/10/08 – 2026/11/06 这 30 天内被下载 15,692 次，日均约 523 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @balancer-labs/balancer-maths 还在维护吗？

最新版本 0\.0\.41 发布于 2026/07/01（4 个月前）；至今共发布 41 个版本，其中过去 12 个月发布了 4 个；首次发布于 2024/06/03。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

