@balancer-labs/sor

中文文档
4.1.3发布于 2025/02/04GPL-3.0-onlyTypeScriptESM + CJS近 30 天下载 1.3万

There are two types of swap available:

原始使用文档
文档目录4 节
  1. Overview Of Use And Example
  2. Contributing/Adding New Pools
  3. Environment Variables
  4. Note on Licensing

Smart Order Router (SOR)

Smart Order Router, or SOR, is an off-chain linear optimization of routing orders across pools for best price execution.

SOR exists in the Bronze release as a way to aggregate liquidity across all Balancer pools. Future releases of Balancer will accomplish this on-chain and allow aggregate contract fillable liquidity.

Liquidity aggregators are free to use the SOR npm package or create their own order routing across pools.

Read More

Overview Of Use And Example

There are two types of swap available:

swapExactIn - i.e. You want to swap exactly 1 ETH as input and SOR will calculate X amount of BAL you receive in return.
or
swapExactOut - i.e. You want to receive exactly 1 BAL and SOR will calculate X amount of ETH you must input.

The SOR will return totalReturn/totalInput as well as a list swaps to achieve the total. Swaps can be through direct pools, i.e. A > POOL1 > B, or via a multihop pool, i.e. A > POOL1 > C > POOL2 > B. The swaps are returned in a format that can be directly to the Vault to execute the trade.

The example file swapExample.ts in: ./testScripts, demonstrates full examples with comments.

To Run:

Create a .env file in root dir. Depending on network being used add an RPC URL (e.g. Alchemy, Infura), e.g.: RPC_URL_MAINNET=alchemy/infura

Supported networks out of box for example are:

RPC_URL_MAINNET
RPC_URL_POLYGON
RPC_URL_ARBITRUM
RPC_URL_GNOSIS
RPC_URL_ZKEVM
RPC_URL_GOERLI

Install dependencies: $ yarn install

Run example: $ ts-node ./test/testScripts/swapExample.ts

Contributing/Adding New Pools

Running tests locally:

  1. Add .env and add following RPC URLs (e.g. Alchemy, Infura)
RPC_URL_MAINNET=
RPC_URL_POLYGON=
  1. Start local forked nodes to test against:

$ yarn run node

$ yarn run node:polygon

  1. Run tests: $ yarn test

To run a single test file use test:only, e.g.:

$ yarn test:only test/composableStable.integration.spec.ts

Adding New Pools:

See info here

Environment Variables

Optional config values can be set in the .env file:

PRICE_ERROR_TOLERANCE - how close we expect prices after swap to be in SOR suggested paths. Defaults 0.00001.

INFINITESIMAL - Infinitesimal is an amount that's used to initialize swap amounts so they are not zero or the path's limit. Defaults 0.000001.

Example:

PRICE_ERROR_TOLERANCE=0.00001
INFINITESIMAL=0.000001

Note on Licensing

Except where indicated otherwise, the code in this repository is licensed GPLv3.

Superluminal Labs Ltd. is the owner of the directories balancer-sor/src/pools/gyro2Pool/, balancer-sor/src/pools/gyro3Pool/, balancer-sor/src/pools/gyroEPool/, balancer-sor/src/pools/gyro2V2Pool/, and balancer-sor/src/pools/gyroEV2Pool/ and any accompanying files contained herein (collectively, these “Software”). Use of these Software is exclusively subject to the Gyroscope Pool License, which is available at the provided link (the “Gyroscope Pool License”). These Software are not covered by the General Public License and do not confer any rights to the user other than the limited rights specified in the Gyroscope Pool License. A special hybrid license between Superluminal Labs Ltd and Balancer Labs OÜ governs Superluminal Labs Ltd's use of the Balancer Labs OÜ code Special License, which is available at the provided link. By using these Software, you agree to be bound by the terms and conditions of the Gyroscope Pool License. If you do not agree to all terms and conditions of the Gyroscope Pool License, do not use any of these Software.

版本与发布记录

@balancer-labs/sor 共发布 108 个版本,首次发布于 2020/02/26;过去 12 个月发布了 0 个版本。

版本发布日期距今
4.1.3latest2025/02/041.8 年前
4.1.22025/02/041.8 年前
4.1.1-beta.182024/08/082 年前
4.1.1-beta.172024/02/212 年前
4.1.1-beta.162023/08/093 年前
4.1.1-beta.152023/08/013 年前

其他发布通道:next → 1.0.0-1,beta → 4.0.1-beta.12-beta.0。

关于 @balancer-labs/sor 的常见问题

@balancer-labs/sor 是什么?

There are two types of swap available:

如何安装 @balancer-labs/sor?

在项目目录运行 npm install @balancer-labs/sor,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@ethersproject/abi(^5.4.1)、@ethersproject/address(^5.4.0)、@ethersproject/bignumber(^5.4.2)、@ethersproject/constants(^5.4.0)、@ethersproject/contracts(^5.4.1)、@ethersproject/providers(^5.4.4)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@balancer-labs/sor 支持 TypeScript 吗?

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

@balancer-labs/sor 支持 ESM 还是 CommonJS?

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

@balancer-labs/sor 可以商用吗?

@balancer-labs/sor 使用 GPL-3.0-only 许可。强 Copyleft:分发包含该代码的软件时,整个作品需以 GPL-3.0 兼容许可开源,并附带专利与反锁定条款。仅内部使用不触发此义务。以上为概括,不构成法律意见,请以许可原文为准。

@balancer-labs/sor 的下载量有多少?

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

@balancer-labs/sor 还在维护吗?

最新版本 4.1.3 发布于 2025/02/04(1.8 年前);至今共发布 108 个版本,其中过去 12 个月发布了 0 个;首次发布于 2020/02/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。