# 0chain 中文文档

规范地址：https://npmcn.com/package/0chain/

版本：1\.3\.14
npm 元数据更新时间：2022-04-04T10:08:36.870Z
中文译文更新时间：2026-10-31T12:19:45.619Z
软件包许可：GPL

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

原始 npm 页面：https://www.npmjs.com/package/0chain
原文对照：https://npmcn.com/package/0chain/?lang=original

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

- 包体积（解压后）：162 kB，11 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- 运行依赖：9 个
- 首次发布：2020-03-16T15:37:21.951Z
- 最新版本发布：2020-06-26T12:12:34.826Z
- 已发布版本数：27（近 12 个月 0 个）

## 中文简介

. js客户端库与0链区块链交互

## 安装

```sh
npm install 0chain
```

也可以使用：`pnpm add 0chain`、`yarn add 0chain`、`bun add 0chain`

## README

# 面向Node的客户端SDK

这是0chain js-client-sdk的Node.js实现。使用此SDK与0Chain区块链进行交互。SDK支持钱包创建、交易提交和验证。除此之外，sdk还提供api来查询区块链运行状况本身。看到 _example.js_ 以文件获取更多详细信息。

## 安装

通过Github: [https://github.com/0chain/js-client-sdk](https://github.com/0chain/js-client-sdk)

## api

所有功能 `init()` 回报的承诺。

第一个 `import / require` 来自github的库 [https://github.com/0chain/js-client-sdk](https://github.com/0chain/js-client-sdk)

```
import jsClientSdk from 'js-client';
```

## 初始化

在调用SDK中的任何函数之前， _初始化_ 应该调用具有集群配置和bls-wasm实例的函数。

## bls-wasm依赖

在初始化js-client-sdk时，要传递一个bls实例。BLS可以通过NPM安装，使用下面的命令：

```
npm install bls-wasm
```

Github库: `https://github.com/herumi/bls-wasm`

**输入参数**

Config——包含集群配置的json字符串

**输出**

无

下面的代码显示了一个初始化SDK的示例 _0 chain-local-cluster_.

```
var config = {
    "miners": [
    "http://one.devnet-0chain.net:31071/",
    "http://one.devnet-0chain.net:31072/",
    "http://one.devnet-0chain.net:31073/",
    "http://one.devnet-0chain.net:31074/",
    "http://one.devnet-0chain.net:31075/",
    "http://one.devnet-0chain.net:31076/",
    "http://one.devnet-0chain.net:31077/",
    "http://one.devnet-0chain.net:31078/",
    "http://one.devnet-0chain.net:31079/"
  ],
  "sharders": [
    "http://one.devnet-0chain.net:31171/",
    "http://one.devnet-0chain.net:31172/",
    "http://one.devnet-0chain.net:31173/",
    "http://one.devnet-0chain.net:31174/",
    "http://one.devnet-0chain.net:31175/",
    "http://one.devnet-0chain.net:31176/",
    "http://one.devnet-0chain.net:31177/",
    "http://one.devnet-0chain.net:31178/",
    "http://one.devnet-0chain.net:31179/"
  ],
  "chain_id" :   "0afc093ffb509f059c55478bc1a60351cef7b4e9c008a53a6cc8241ca8617dfe",
  "clusterName" : "0chain-local-cluster",
  "proxyServerUrl" : "http://localhost:9082",
  "transaction_timeout" : 20,
  "state " : true
}
jsClientSdk.init(config, bls)
```

要使用本地集群，请使用bls-wasm实例配置调用init

```
jsClientSdk.init(bls)
```

## registerClient

用0Chain区块链注册客户端。

**输入参数** 无

**输出**

**钱包** 成功承诺解决的情况下的对象。

```
jsClientSdk.registerClient()
```

## restoreWallet

使用0Chain区块链恢复现有客户端。需要传递秘密助记符

**输入参数**

助记符——字符串

**输出**

钱包——如果成功的话。错误,否则

```
jsClientSdk.restoreWallet(mnemonic)
```

## sendTransaction

使用这个函数将令牌从一个钱包发送到另一个钱包。

**输入参数**

fromAccount -从钱包

toWalletId -到钱包的客户端id

值-发送的数量

注意-事务的描述

**输出**

交易——如果成功。错误,否则

```
jsClientSdk.sendTransaction(fromAccount, toWalletId, value, note)
```

## storeData

使用这个函数在钱包中存储数据

**输入参数**

fromAccount -从钱包

数据-要保存在区块链中的数据（字符串类型）

注意-事务的描述

**输出**

交易——如果成功。错误,否则

```
jsClientSdk.storeData(fromAccount, data, note)
```

## checkTransactionStatus

使用此函数检查先前放置的事务的状态。

_注意_ 只有在事务处理完成后，事务状态才可用。请提供至少3秒的时间处理交易。您可以多次检查状态。

**输入参数**

hash -先前放置的事务的哈希值

**输出**

TransactionDetails——具有status字段的事务的详细信息。

```
jsClientSdk.checkTransactionStatus(hash)
```

## getBalance

使用这个功能来获取特定钱包的余额。

**输入参数**

client\_id—您感兴趣的余额的客户id

**输出**

TransactionDetails——包含balance字段的事务的详细信息。

```
jsClientSdk.getBalance(client_id)
```

## executeSmartContract

发送指定金额的交易，如value参数fromAccount toWalletId中提到的。

**输入参数**

fromAccount -来自钱包

smartContractAddress -智能合约的地址

payload——取决于正在执行的smartContract函数

transactionValue -事务值——默认为零

**输出** 如果成功，事务——对象。

```
jsClientSdk.executeSmartContract(fromAccount, smartContractAddress, payload, transactionValue)
```

## getBlockInfoByHash

使用此函数可以通过块散列获取块摘要或块详细信息。

**输入参数**

哈希——区块的哈希值

options——使用BlockInfoOptions。HEADER只获取摘要或BlockInfoOptions。满取整个街区。默认为HEADER

回调——成功时调用的函数

errCallback——失败时调用的函数

**输出**

块摘要或块对象，具体取决于指定的选项

```
jsClientSdk.getBlockInfoByHash(hash, options, callback, errCallback)
```

## getBlockInfoByRound

使用此函数按整数获取块摘要或块详细信息。

**输入参数**

整数——整数 options——使用BlockInfoOptions。HEADER只获取摘要或BlockInfoOptions。满取整个街区。默认为HEADER

回调——成功时调用的函数

errCallback——失败时调用的函数

**输出**

块摘要或块对象，具体取决于指定的选项

```
jsClientSdk.getBlockInfoByRound(round, options, callback, errCallback)
```

## getChainStats

使用这个函数来获取关于区块链的当前信息，比如当前的整数、平均块生成/结束时间等

**输入参数**

无

**输出**

ChainStats——一个包含区块链详细信息的对象。

```
jsClientSdk.getChainStats()
```

## getLatestFinalized

使用此函数获取最后完成的块摘要。

**输入参数**

无

**输出**

BlockSummary——如果成功，对象包含最新完成块的信息

```
jsClientSdk.getLatestFinalized()
```

## getRecentFinalized

使用此函数获取最近完成的10个块的摘要。

**输入参数**

无

**输出**

BlockSummary的数组。——如果成功。

```
jsClientSdk.getRecentFinalized()
```

## 示例文件

SDK还附带了一个 **example.js** 该文件演示了如何使用api。

## 常见问题

### 0chain 是什么？

\. js客户端库与0链区块链交互

### 如何安装 0chain？

在项目目录运行 npm install 0chain，或使用 pnpm add / yarn add / bun add。

### 0chain 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/0chain 是否存在。

### 0chain 支持 ESM 还是 CommonJS？

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

### 0chain 可以商用吗？

0chain 使用 GPL 许可。声明的许可为 GPL，请阅读许可原文确认使用条件。以上为概括，不构成法律意见，请以许可原文为准。

### 0chain 还在维护吗？

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

