@ainblockchain/ain-util

中文文档
1.3.0发布于 2024/07/23MPL-2.0TypeScriptCommonJS近 30 天下载 2953

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

中文使用文档
文档目录36 节
  1. 安装
  2. 实例
  3. API 密码
  4. 添加HexPrefix( 字符串) - > 字符串
  5. 缓冲TOHex( buf: 缓冲) - > 字符串
  6. ecSignMessage( 消息: 任意, 私钥: 缓冲, 链路? : 数) - > 字符串
  7. ecRecoverPub(msgHash:缓冲,r:缓冲,s:缓冲,v:数,链路?)-> 缓冲
  8. ecSplitSig(签名:缓冲) - > ECDSASignature (英语)
  9. ecVifySig( 数据: 任何, 签名: 字符串, 地址: 字符串, 链路? 数字) - > 布尔
  10. ecSignTransaction(txData: AffairsBody,私钥:缓冲,链路?) - > 字符串
  11. hash 交易( 交易: 交易Body QQ字符串) - > 缓冲
  12. hashMessage(消息:任何) - > 缓冲
  13. 是Hex 前缀( 字符串) - > 布尔
  14. 是Valid Private( 私人钥匙: 缓冲) - > 布尔
  15. 是Valid Public(公用钥匙:Buffer,isSEC1:布尔=假) - >布尔
  16. 是ValidAddress(地址:字符串) - > 布尔
  17. 相同地址( 地址1: 字符串, 地址2: 字符串) - > 布尔
  18. keccak(输入:任意,位数:数字=256) - > 缓冲
  19. 私通公用( 私钥: 缓冲) - > 缓冲
  20. pubToAddress(公用钥匙:Buffer,isSEC1:布尔=假) - > 缓冲
  21. 私钥账户( 私钥: 缓冲) - > 账户
  22. 序列化( 数据: 有, fields?: 阵列) - > 缓冲( 将贬值)
  23. setLength(消息:任意,长度:数字,右边:布尔=假) - > 缓冲
  24. 条形Hex 前缀( 字符串) - > 字符串
  25. 至缓冲(v: 任何) - > 缓冲
  26. 来检查和地址( 地址: 字符串) - > 字符串
  27. 使用 PublicKey( publicKey: 字符串, 消息: 字符串) 加密 - > 答应
  28. 解密With PrivateKey(私人Key:字符串,加密:加密了QQ字符串) - > 答应
  29. 创建账户( entropy?: string) - > 账户
  30. 私人 ToV3Keystore( 私人 Key: 缓冲, 密码: 字符串, 选项: V3Keystore option…
  31. v3KeystoreTo Private(v3Keystore:V3Keystore QQ字符串,密码:字符串) ->…
  32. 编码( 关键: 字符串) - > 字符串
  33. 解码( 键: 字符串) - > 字符串
  34. 环境
  35. 节点
  36. 自由主义

ain- util 语句

AI Network(AIN)的公用功能集. 方法与测试已经从 乙型六氯环己烷 财务报告和审定财务报表 用户。 。 。 .

安装

npm install @ainblockchain/ain-util

实例

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 共发布 23 个版本,首次发布于 2019/02/18;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.3.0latest2024/07/232 年前
1.2.12024/07/052 年前
1.2.02024/07/052 年前
1.1.92021/12/304 年前
1.1.82021/11/094 年前
1.1.72021/08/235 年前

关于 @ainblockchain/ain-util 的常见问题

@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 和提交记录判断。