Rusty Kaspa SDK 的 WASM32 绑定
Rusty-Kaspa WASM32 绑定提供 Rust 代码和 Rusty-Kaspa 的直接集成 JavaScript 和 TypeScript 环境(如 Node.js 和 Web 浏览器)中的代码库。
文档
请注意,虽然 WASM 直接绑定 JavaScript 和 Rust 资源,但它们的名称在 JavaScript 端 与它们在 Rust 中的名称不同,因为它们符合 JavaScript 中的“camelCase”约定和 到 Rust 中的“snake_case”约定。
WASM32 绑定可以在 TypeScript 和 JavaScript 环境中使用,其中在 JavaScript 中 类型将不受 TypeScript 类型定义的约束。
接口
SDK 目前分为以下顶级类别:
- RPC API — 使用 WebSockets 的 Kaspa 节点的 RPC API。 
- Wallet SDK — 与密钥管理和交易相关的基元绑定。 
- Wallet API — 用于 Rusty Kaspa 钱包框架的 API。 
WASM32 SDK 发布包
SDK 构建为 4 个用于 Web 浏览器的包,如下所示:
- KeyGen - 密钥和地址生成 
- RPC - 仅 RPC 
- 核心 - RPC + 密钥和地址生成 + 钱包 SDK 
- 完整 - 完整 SDK + 集成钱包 对于 NodeJS,SDK 构建为包含所有功能的单个包。 
SDK 文件夹结构
以下是 SDK 文件夹结构的简要概述(如版本中所述):
- web/kaspa- 满用于 Web 浏览器的 Rusty Kaspa WASM32 SDK 绑定。
- web/kaspa-rpc- 仅用于 Web 浏览器的 RPC 绑定(减小了 WASM 二进制文件大小)。
- nodejs/kaspa- 满用于 NodeJS 的 Rusty Kaspa WASM32 SDK 绑定。
- docs- Rusty Kaspa WASM32 SDK 文档。
- examples文件夹包含 NodeJS 和 Web 浏览器的示例。
- examples/data- 文件夹用户通过示例进行配置和钱包数据存储。
- examples/javascript
- examples/javascript/general- 通用SDK示例(密钥和派生,地址,加密等)。
- examples/javascript/transactions- 创建、发送和接收交易。
- examples/javascript/wallet- 与 Rusty Kaspa 钱包框架对接。
- examples/typescript
jsconfig.json
可以通过在 Web 浏览器中加载文件来访问版本中包含的文档。docs/kaspa/index.html
从源代码构建
要从源代码构建 WASM32 SDK,您需要安装 Rust 环境。为此, 按照 Rusty Kaspa README 中的说明进行操作。
安装 Rust 后,您可以按如下方式构建 WASM32 SDK:
- ./build-release- 构建 WASM32 SDK + Docs 的发布版本。发行版还包含库的构建版本。- debug
- ./build-web- 构建 Web 包(ES6 模块)
- ./build-node- 构建 NodeJS 包(CommonJS 模块)
- ./build-docs- 运行,然后从生成的构建生成 TypeDoc 文档。- build-web
请注意,要从源代码构建,您需要通过以下方式全局安装 TypeDoc(见下文)。npm install -g typedoc
运行 Web 示例
重要:要查看 Web 示例,您需要从本地 Web 服务器提供它们,并且 从 SDK 文件夹的根目录提供它们(如果使用可再发行组件或从源代码构建)。这是因为示例使用相对路径。 WASM32 目前无法使用该协议加载。kaspa-wasm32-sdkrusty-kaspa/wasmfile://
您可以使用您选择的任何 Web 服务器。如果没有,可以按如下方式运行:
cargo install http-server http-server
访问 http://localhost:7878/examples/web/index.html 中的示例。 (如果您使用的是其他服务器,请确保更改端口。默认情况下,许多服务器将在 http://localhost:8000/examples/web/index.html 上提供服务)
如果从源代码生成,则必须在运行示例之前运行 or 脚本。build-releasebuild-web
运行 NodeJs 示例
这适用于从源代码生成项目时运行示例,因为某些依赖项是作为生成过程的一部分实例化的。您只需要运行即可初始化本地配置。node init
笔记:
- npm install
- npm install -g typedoc是发布版本生成文档所必需的
- node init创建一个本地,其中包含跨 NodeJS 示例使用的私钥(助记符)。您可以通过将地址指定为命令行参数来覆盖某些示例中使用的地址。- examples/data/config.json
- 大多数示例将接受以下参数:. - node <script> [address] [mainnet|testnet-10|testnet-11] [--address <address>] [--network <mainnet|testnet-10|testnet-11>] [--encoding <borsh|json>]- 默认情况下,所有 wRPC 连接都使用 Borsh 二进制编码。 
例:
cd wasm ./build-release cd examples npm install node init node nodejs/javascript/general/rpc.js
使用 RPC
有多种方法可以使用 RPC:
- 控制 WebSocket 框架的 JSON-RPC 协议(必须手动处理序列化) 
- 使用自动处理连接并以异步函数调用形式提供 RPC 接口的类。 - RpcClient
节点:要在 Node.js 环境中使用 WASM RPC 客户端,您需要引入一个 W3C WebSocket 对象 在加载 WASM32 库之前。兼容的 WebSocket 库是 WebSocket,包含在 NPM 包中。 package 是一个包装器,用于在对象中导入并安装此 WebSocket 填充码,然后重新导出导出。kaspakaspakaspa-wasmglobalThiskaspa-wasm
在 Web 应用程序中加载
<html>
    <head>
        <script type="module">
            import * as kaspa from './kaspa/kaspa-wasm.js';
            (async () => {
                await kaspa.default('./kaspa/kaspa-wasm_bg.wasm');
                console.log(kaspa.version());
                // ...
            })();
        </script>
    </head>
    <body></body>
</html>在 Node.js 应用程序中加载
//
// W3C WebSocket module shim
// this is provided by NPM `kaspa` module and is only needed
// if you are building WASM libraries for NodeJS from source
//
// @ts-ignore
// globalThis.WebSocket = require('websocket').w3cwebsocket;
//
let {
    RpcClient,
    Encoding,
    initConsolePanicHook
} = require('./kaspa');
// enabling console panic hooks allows WASM to print panic details to console
// initConsolePanicHook();
// enabling browser panic hooks will create a full-page DIV with panic details
// this is useful for mobile devices where console is not available
// initBrowserPanicHook();// if port is not specified, it will use the default port for the specified network
const rpc = new RpcClient({
    url: "127.0.0.1", 
    encoding: Encoding.Borsh, 
    network : "testnet-10"
});
(async () => {
    try {
        await rpc.connect();
        let info = await rpc.getInfo();
        console.log(info);
    } finally {
        await rpc.disconnect();
    }
})();有关更多详细信息,请遵循与 Kaspa 集成指南。
创建文档
请注意,要从源代码构建文档,您需要安装 Rust 环境。 构建脚本将首先构建 WASM32 SDK,然后从中生成 typedoc 文档。
您可以按如下方式从源代码构建文档:
npm install -g typedoc ./build-docs
生成的文档将位于docs/typedoc/
|  |  |  |  |  |  |  |  | 
| 感动 | 同情 | 无聊 | 愤怒 | 搞笑 | 难过 | 高兴 | 路过 | 
- 上一篇:Kaspa升级Rust时旧的助记符操作指引
- 下一篇:Kaspa钱包框架(go版)
相关文章
- 
                        没有相关内容
                    

 
               
                     会员登录
会员登录