# @fivebinaries/coin-selection 中文文档

规范地址：https://npmcn.com/package/%40fivebinaries/coin-selection/

版本：3\.0\.0
npm 元数据更新时间：2024-12-09T12:05:18.449Z
中文译文更新时间：2026-11-14T20:41:01.382Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40fivebinaries/coin-selection
原文对照：https://npmcn.com/package/%40fivebinaries/coin-selection/?lang=original

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

- 包体积（解压后）：158 kB，50 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：2 个
- 首次发布：2021-08-23T16:11:43.200Z
- 最新版本发布：2024-12-09T12:05:18.218Z
- 近 30 天下载量：974314（2026-10-15 至 2026-11-13，npm 官方下载统计）
- 已发布版本数：26（近 12 个月 0 个）

## 中文简介

卡达诺硬币选择算法的最小执行(见 [CIP-2号](https://cips.cardano.org/cips/cip2/)专为Trezor套房开发的。 在引擎盖下 它通过WASM模块 利用了Cardano序列化Lib.

## 安装

```sh
npm install @fivebinaries/coin-selection
```

也可以使用：`pnpm add @fivebinaries/coin-selection`、`yarn add @fivebinaries/coin-selection`、`bun add @fivebinaries/coin-selection`

## README

# 硬币选择

卡达诺硬币选择算法的最小执行(见 [CIP-2号](https://cips.cardano.org/cips/cip2/)专为Trezor套房开发的. 在引擎盖下 它通过WASM模块 利用了Cardano序列化Lib.

## 特征

-   最终tx计划:为给定的投入(只有shelley utxos)编写交易计划,证书(支持股份(去)登记和授权),提取,.
-   Tx计划草案:即使输入不完整(没有收件人地址或数额),也要返回关于潜在交易的基本信息(如大小和收费)
-   设定最大值: 计算可能包含在交易输出中的资产的最大金额

## 使用量

```typescript
const txPlan = coinSelection(
    txParams: {
        utxos: Utxo[];
        outputs: UserOutput[];
        changeAddress: string;
        certificates: Certificate[];
        withdrawals: Withdrawal[];
        accountPubKey: string;
        ttl?: number;
    },
    options: {
        feeParams?: { a: string };
        debug?: boolean;
        forceLargestFirstSelection?: boolean;
    }
);
```

### `coinSelection(txParams, options)`

#### `txParams`

-   `utxos`: 账户的自定义矩阵
-   `outputs`: 请用户提供的产出
-   `changeAddress`: 发送更改的地址
-   `certificates`: 记录登记和/或授权证书(不支持记录池登记)
-   `withdrawals`: 退出请求
-   `accountPubKey`: 账户公钥
-   `ttl`: 交易的启用时间

#### `Options`

-   `forceLargestFirstSelection`: 总是使用最大第一算法
-   `debug`: 打印调试有关硬币选择的信息(所选 utxos,输出包括更改输出,.)

## 示例

### 最后tx计划

```typescript

export const utxo1 = {
  address:
    'addr1q860vxljhadqxnrrsr2j6yxnwpdkyquq74lmghx502aj0r28d2kd47hsre5v9urjyu8s0ryk38dxzw0t5jesncw4v90sp0878u',
  txHash: '3c388acb799a37a4f1cc99bec7626637b0b80626b9ef7c7a687282cab701178d',
  outputIndex: 0,
  amount: [
    {
      quantity: '5000000',
      unit: 'lovelace',
    },
  ],
};

export const utxo2 = {
  address:
    'addr1q860vxljhadqxnrrsr2j6yxnwpdkyquq74lmghx502aj0r28d2kd47hsre5v9urjyu8s0ryk38dxzw0t5jesncw4v90sp0878u',
  txHash: '9e63fddf20cb7b5472e2c9a1bb4bbe3112b8f2b22e45bc441206bcddde5c58a0',
  outputIndex: 1,
  amount: [
    {
      quantity: '5000000',
      unit: 'lovelace',
    },
    {
      quantity: '1000',
      unit: '02477d7c23b4c2834b0be8ca8578dde47af0cc82a964688f6fc95a7a47524943',
    },
  ],
};

const txPlan = coinSelection(
    txParams: {
        utxos: Utxo[];
        outputs: [
        {
            address:
            'addr1qya0nkzrf04gmcpu66vdt7sudwptnyg5df6475y7jhtt2wc44vzmgrfy6wwf69xlaszdslksw8evveyykw4c82eavq7sx29tlc',
            amount: '1000000',
            assets: [],
            setMax: false,
        },
        {
            address:
            'addr1qya0nkzrf04gmcpu66vdt7sudwptnyg5df6475y7jhtt2wc44vzmgrfy6wwf69xlaszdslksw8evveyykw4c82eavq7sx29tlc',
            amount: undefined,
            assets: [],
            setMax: true,
        },
        ],
        changeAddress: `addr1q8u2f05rprqjhygz22m06mhy4xrnqvqqpyuzhmxqfxnwvxz8d2kd47hsre5v9urjyu8s0ryk38dxzw0t5jesncw4v90s22tk0f`,
        certificates: [],
        withdrawals: [],
        accountPubKey:
        'ec8fdf616242f430855ad7477acda53395eb30c295f5a7ef038712578877375b5a2f00353c9c5cc88c7ff18e71dc08724d90fc238213b789c0b02438e336be07',
    },
);

// txPlan
// {
//   max: '7480901',
//   totalSpent: '8655202',
//   fee: '174301',
//   inputs: [utxo1, utxo2],
//   outputs: [
//     {
//       address:
//         'addr1qya0nkzrf04gmcpu66vdt7sudwptnyg5df6475y7jhtt2wc44vzmgrfy6wwf69xlaszdslksw8evveyykw4c82eavq7sx29tlc',
//       amount: '1000000',
//       assets: [],
//       setMax: false,
//     },
//     {
//       address:
//         'addr1qya0nkzrf04gmcpu66vdt7sudwptnyg5df6475y7jhtt2wc44vzmgrfy6wwf69xlaszdslksw8evveyykw4c82eavq7sx29tlc',
//       amount: '7480901',
//       assets: [],
//       setMax: true,
//     },
//     {
//       isChange: true,
//       address: changeAddress,
//       amount: '1344798',
//       assets: [
//         {
//           quantity: '1000',
//           unit: '02477d7c23b4c2834b0be8ca8578dde47af0cc82a964688f6fc95a7a47524943',
//         },
//       ],
//     },
//   ],
// },
;
```

### Tx计划草案

```typescript

const txPlan = coinSelection(
    {
        utxos: [utxo1];
        outputs: [
            {
                address: undefined, // address not filled
                amount: '2000000',
                assets: [],
                setMax: false,
            },
        ],
        changeAddress: `addr1q8u2f05rprqjhygz22m06mhy4xrnqvqqpyuzhmxqfxnwvxz8d2kd47hsre5v9urjyu8s0ryk38dxzw0t5jesncw4v90s22tk0f`,
        certificates: [],
        withdrawals: [],
        accountPubKey:
        'ec8fdf616242f430855ad7477acda53395eb30c295f5a7ef038712578877375b5a2f00353c9c5cc88c7ff18e71dc08724d90fc238213b789c0b02438e336be07',
    },
);

// txPlan:
// {
//     totalSpent: '2168053',
//     fee: '168053',
// },

```

## 页:1

-   如果有证书存在, 或交易包含输出到 `setMax: true` 然后将使用最大的第一算法而不是随机改进.

## 常见问题

### @fivebinaries/coin-selection 是什么？

卡达诺硬币选择算法的最小执行\(见 CIP-2号专为Trezor套房开发的。 在引擎盖下 它通过WASM模块 利用了Cardano序列化Lib\.

### 如何安装 @fivebinaries/coin-selection？

在项目目录运行 npm install @fivebinaries/coin-selection，或使用 pnpm add / yarn add / bun add。

### @fivebinaries/coin-selection 支持 TypeScript 吗？

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

### @fivebinaries/coin-selection 支持 ESM 还是 CommonJS？

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

### @fivebinaries/coin-selection 可以商用吗？

@fivebinaries/coin-selection 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @fivebinaries/coin-selection 的下载量有多少？

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

### @fivebinaries/coin-selection 还在维护吗？

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

