# @bitgo/eth-contracts 中文文档

规范地址：https://npmcn.com/package/%40bitgo/eth-contracts/

版本：1\.0\.0
npm 元数据更新时间：2026-03-09T04:23:31.101Z
中文译文更新时间：2026-11-08T04:23:02.519Z
软件包许可：未声明

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

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

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

- 包体积（解压后）：233 kB，66 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：6 个
- 首次发布：2020-12-11T22:55:11.738Z
- 最新版本发布：2020-12-11T22:55:12.221Z
- 近 30 天下载量：33291（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：1（近 12 个月 0 个）

## 中文简介

一个建立Ethereum智能合同功能的图书馆.

## 安装

```sh
npm install @bitgo/eth-contracts
```

也可以使用：`pnpm add @bitgo/eth-contracts`、`yarn add @bitgo/eth-contracts`、`bun add @bitgo/eth-contracts`

## README

# Ethereum合同 SDK

一个简单的图书馆,用于构建埃特鲁姆智能合约互动. 离线时, 或远离 Web3 钱包, 聪明 合同互动相当困难。 因为它需要特别的交易数据来定义 函数调用智能合同。 该图书馆打算通过提供一个简单的接口来改进这一经验 为常见的智能合同功能呼叫。 它还旨在推广到各种合同.

## 安装

```bash
npm i @bitgo/eth-contracts
```

## 示例使用

基本使用使用户能够按名称指定合同,并从中建立交易数据.

```js
import { Contract } from '@bitgo/eth-contracts';
const cDAI = new Contract('Compound').instance('cDAI');
const { data, amount, address } = cDAI.methods().mint.call({ mintAmount: '1000000000' });
```

用户可以通过地址而不是名称指定合同协议实例

```js
import { Contract } from '@bitgo/eth-contracts';
const cDAI = new Contract('Compound').address('0x5d3a536e4d6dbd6114cc1ead35777bab948e3643');
const { data, amount, address } = cDAI.methods().mint.call({ mintAmount: '1000000000' });
```

解码器可以解析数据,输出对特定合同呼叫的可人读解释.

```js
import { Decoder } from '@bitgo/eth-contracts';
const decoder = new Decoder();
decoder.decode(Buffer.from('a9059cbb00000000000000000000000010d4f942617a231eb1430c88fe43c8c2050437d90000000000000000000000000000000000000000000000000000000000002710', 'hex'));
{ methodId: '0xa9059cbb',
  name: 'transfer',
  args:
   [ { name: '_to',
       type: 'address',
       value: '0x10d4f942617a231eb1430c88fe43c8c2050437d9' },
     { name: '_value', type: 'uint256', value: 10000 } ],
  contractName: 'StandardERC20' }
```

## 与 BitGo SDK 集成

这个库的输出是作为 BitGo SDK 的参数而形成的 `sendMany` 电话 这使得它有用 与 Bitgo SDK 合并.

### 使用比特Go的示例

```js
import { Contract } from '@bitgo/eth-contracts';

import { BitGo, Coin } from 'bitgo';

async function sendBitGoTx() {
    const bitGo = new BitGo({ env: 'test' });
    const baseCoin = bitGo.coin('eth');
    const bitGoWallet = await baseCoin.wallets().get({ id: '5941ce2db42fcbc70717e5a898fd1595' });

    const cDAI = new Contract('Compound').instance('cDAI');
    
    const transaction = await bitGoWallet.sendMany({
      recipients: cDAI.methods().mint.call({ mintAmount: '1000000000' }),
      walletPassphrase: 'password'
    })
      
}

sendBitGoTx();
```

## 类型

#### 合同

**合同类型( )** - 获取可用的合同类型.

```js
const types = Contract.listContractTypes();
// response: ['Compound', 'StandardERC20']
```

**列表 方法( )** - 获取可用的合同方法.

```js
const types = new Contract('StandardERC20').listMethods();
// response: [{ name: 'transfer', inputs: [...], outputs: [...] }, { name: 'approve', ... }]
```

**方法( )** -- 获得合同方法构建对象

```js
const types = new Contract('StandardERC20').methods();
// response: { transfer: { call: <function to build transfer> }, approve: { call: <function to build approve> } }
```

**获取Name ()** - 获得合同名称

```js
const types = new Contract('StandardERC20').getName();
// response: StandardERC20
```

**地址( )** -- 设定合同地址

```js
const types = new Contract('StandardERC20').address('0x5d3a536e4d6dbd6114cc1ead35777bab948e3643');
// response: Contract with address set
```

**实例( )** -- 定案合同

```js
const types = new Contract('StandardERC20').instance('DAI');
// response: Contract with DAI address set
```

## 支持的协议 :

这个库支持数量有限的智能合同协议,因为它在当地维持固态ABIS.

-   化合物 -- -- [实例](https://npmcn.com/package/%40bitgo/eth-contracts/examples/Compound)
-   标准ERC20 -- [实例](https://npmcn.com/package/%40bitgo/eth-contracts/examples/StandardERC20)
-   制作者DAO - [实例](https://npmcn.com/package/%40bitgo/eth-contracts/examples/MakerDAO)

## 添加新的 ABI 类型

这个图书馆非常适用于新的协议 -- 如果有其他的合同类型,你想使用, 随你便 提交公关协议 加入它们。 为此,作出下列修改:

-   将 JSON ABI 添加到 `abis` 目录, 名称 `[ProtocolName].json`
-   在 `config/instances.json`
    -   例如,化合物协议有cDAI,cUSDC等.
-   将协议添加到上面的 README
-   在其中添加一些示例用法 `examples` 目录

## 常见问题

### @bitgo/eth-contracts 是什么？

一个建立Ethereum智能合同功能的图书馆\.

### 如何安装 @bitgo/eth-contracts？

在项目目录运行 npm install @bitgo/eth-contracts，或使用 pnpm add / yarn add / bun add。

### @bitgo/eth-contracts 支持 TypeScript 吗？

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

### @bitgo/eth-contracts 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @bitgo/eth-contracts 可以商用吗？

@bitgo/eth-contracts 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @bitgo/eth-contracts 的下载量有多少？

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

### @bitgo/eth-contracts 还在维护吗？

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

