您现在的位置:kastop>> Kas信息 Kaspa网络>>正文内容

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/



感动 同情 无聊 愤怒 搞笑 难过 高兴 路过
【字体: 】【收藏】【打印文章】 【 打赏 】 【查看评论

相关文章

    没有相关内容