# @ainblockchain/ain-util 中文文档

规范地址：https://npmcn.com/package/%40ainblockchain/ain-util/

版本：1\.3\.0
npm 元数据更新时间：2024-07-23T06:31:40.495Z
中文译文更新时间：2026-11-06T15:06:50.853Z
软件包许可：MPL-2\.0

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

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

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

- 包体积（解压后）：85.8 kB，6 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：15 个
- 首次发布：2019-02-18T01:34:19.266Z
- 最新版本发布：2024-07-23T06:31:40.233Z
- 近 30 天下载量：2953（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：23（近 12 个月 0 个）

## 中文简介

AI Network(AIN)的公用功能集.

## 安装

```sh
npm install @ainblockchain/ain-util
```

也可以使用：`pnpm add @ainblockchain/ain-util`、`yarn add @ainblockchain/ain-util`、`bun add @ainblockchain/ain-util`

## README

# ain- util 语句

AI Network(AIN)的公用功能集. 方法与测试已经从 [乙型六氯环己烷](https://github.com/ethereumjs/ethereumjs-util) 财务报告和审定财务报表 [用户](https://github.com/ethjs/ethjs-util)。 。 。 .

## 安装

```
npm install @ainblockchain/ain-util
```

## 实例

```js
const ainUtil = require('@ainblockchain/ain-util');

const message = { foo: 'bar' };
const privateKey = YOUR_OWN_PRIVATE_KEY;

// Alice generates signature using private key.
const signature = ainUtil.ecSignMessage(JSON.stringify(message), Buffer.from(privateKey, 'hex'));

// Bob verifies the message
const hash = ainUtil.hashMessage(JSON.stringify(message));
const sigBuffer = ainUtil.toBuffer(signature);
const len = sigBuffer.length;
const lenHash = len - 65;
const { r, s, v } = ainUtil.ecSplitSig(sigBuffer.slice(lenHash, len));
const publicKey = ainUtil.ecRecoverPub(Buffer.from(hash, 'hex'), r, s, v);
const address = ainUtil.toChecksumAddress(ainUtil.bufferToHex(ainUtil.pubToAddress(publicKey, publicKey.length === 65)));
const isVerified = ainUtil.ecVerifySig(JSON.stringify(message), signature, address);
// console.log(isVerified);
// will return
// ADDRESS
// true
```

## API 密码

### 添加HexPrefix( 字符串) - > 字符串

在给定中添加“ 0x ” `string` 如果它还没有从"0x"开始.

### 缓冲TOHex( buf: 缓冲) - > 字符串

转换 a `Buffer` 变成六进制 `string`。 。 。 .

### ecSignMessage( 消息: 任意, 私钥: 缓冲, 链路? : 数) - > 字符串

用私钥签名消息并返回 a `string` 签名.

### ecRecoverPub(msgHash:缓冲,r:缓冲,s:缓冲,v:数,链路?)-> 缓冲

ECDSA 公用钥匙从签名取回.

### ecSplitSig(签名:缓冲) - > ECDSASignature (英语)

转换 `eth_sign` RPC对签名参数的方法.

### ecVifySig( 数据: 任何, 签名: 字符串, 地址: 字符串, 链路? 数字) - > 布尔

检查签名是否有效 .

### ecSignTransaction(txData: AffairsBody,私钥:缓冲,链路?) - > 字符串

用私钥签名交易机构并返回 a `string` 签名.

### hash 交易( 交易: 交易Body QQ字符串) - > 缓冲

使用交易机体生成keccak散列.

### hashMessage(消息:任何) - > 缓冲

返回比特币的克恰克-256大麻的瓦林编码 `message`, (中文(简体) ), 前缀为标题“Ainetwork 已签名信件 :\\n”.

### 是Hex 前缀( 字符串) - > 布尔

检查是否 `str` 以"0x"为前缀.

### 是Valid Private( 私人钥匙: 缓冲) - > 布尔

检查是否 `privateKey` 是有效的私人密钥( 遵循曲线 secp256k1 的规则) .

### 是Valid Public(公用钥匙:Buffer,isSEC1:布尔=假) - >布尔

检查是否 `publicKey` 是有效的公钥(遵循 曲线 secp256k1 并符合AIN的要求).

### 是ValidAddress(地址:字符串) - > 布尔

检查地址是否有效 .

### 相同地址( 地址1: 字符串, 地址2: 字符串) - > 布尔

检查两个地址是否相同.

### keccak(输入:任意,位数:数字=256) - > 缓冲

创建输入的 Keccak 散列 .

### 私通公用( 私钥: 缓冲) - > 缓冲

返回给定的私钥的公钥.

### pubToAddress(公用钥匙:Buffer,isSEC1:布尔=假) - > 缓冲

返回给定公钥的AI 网络地址.

### 私钥账户( 私钥: 缓冲) - > 账户

以给定的私钥返回账户.

### 序列化( 数据: 有, fields?: 阵列) - > 缓冲( 将贬值)

使用rlp编码将对象(如tx数据)序列化.

### setLength(消息:任意,长度:数字,右边:布尔=假) - > 缓冲

废纸和 `message` 以0为主,直到完成 `length` 字节. 如果 `message` 长于 `length`。 。 。 .

### 条形Hex 前缀( 字符串) - > 字符串

从给定中删除“ 0x ” `String` 已存在.

### 至缓冲(v: 任何) - > 缓冲

试图将一个值变成 `Buffer`。作为其支持的投入 `Buffer`, (中文(简体) ), `String`, (中文(简体) ), `Number`,无效/未定义, `BN` 和带有 a 的其他对象 `toArray()` 方法.

### 来检查和地址( 地址: 字符串) - > 字符串

返回一个校验的地址.

### 使用 PublicKey( publicKey: 字符串, 消息: 字符串) 加密 - > 答应

用公钥加密消息 .

### 解密With PrivateKey(私人Key:字符串,加密:加密了QQ字符串) - > 答应

用私钥解密加密数据.

### 创建账户( entropy?: string) - > 账户

用给定的 en创建账户.

### 私人 ToV3Keystore( 私人 Key: 缓冲, 密码: 字符串, 选项: V3Keystore options = {}) - > V3 键盘

将账户转换为 V3 键盘并用密码加密.

### v3KeystoreTo Private(v3Keystore:V3Keystore QQ字符串,密码:字符串) -> 缓冲

从 V3 键盘返回一个私钥 .

### 编码( 关键: 字符串) - > 字符串

### 解码( 键: 字符串) - > 字符串

## 环境

测试了以下环境.

### 节点

-   页:1
-   页:1

-   v6.x.x (英语)
-   v7.x.x (中文(简体) )

## 自由主义

MPL - 2.0 导弹

## 常见问题

### @ainblockchain/ain-util 是什么？

AI Network\(AIN\)的公用功能集\.

### 如何安装 @ainblockchain/ain-util？

在项目目录运行 npm install @ainblockchain/ain-util，或使用 pnpm add / yarn add / bun add。

### @ainblockchain/ain-util 支持 TypeScript 吗？

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

### @ainblockchain/ain-util 支持 ESM 还是 CommonJS？

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

### @ainblockchain/ain-util 可以商用吗？

@ainblockchain/ain-util 使用 MPL-2\.0 许可。弱 Copyleft：可以商用，也可以和闭源代码一起使用；但如果分发时修改了 MPL 授权的文件，这些文件的修改需以 MPL 开源。以上为概括，不构成法律意见，请以许可原文为准。

### @ainblockchain/ain-util 的下载量有多少？

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

### @ainblockchain/ain-util 还在维护吗？

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

