6个版本
0.13.4 | 2024年1月24日 |
---|---|
0.0.4 | 2023年10月31日 |
0.0.3 | 2023年4月17日 |
0.0.0 | 2023年3月23日 |
#2949 in 魔法豆
每月下载量 35次
14KB
kaspa-wasm
Kaspa的WASM32绑定
Rusty-Kaspa WASM32绑定提供在Node.js和Web浏览器等JavaScript环境中直接集成Rust代码和Rusty-Kaspa代码库的功能。
文档
请注意,虽然WASM直接绑定JavaScript和Rust资源,但它们在JavaScript侧的名称与在Rust中的名称不同,因为它们遵循JavaScript的'camelCase'约定和Rust的'snake_case'约定。
接口
API目前分为以下几组
- 交易API — 与交易相关的原语绑定。
- RPC API — 使用WebSocket(wRPC)连接的Kaspa节点RPC接口绑定。
- 钱包API — 异步核心钱包处理任务的API。
使用RPC
有多种方式可以使用RPC
- 控制WebSocket-framed JSON-RPC协议(您需要手动处理序列化)
- 使用
RpcClient
类来自动处理连接并提供以异步函数调用的形式提供的RPC接口。
NODEJS: 在Node.js环境中使用WASM RPC客户端,您需要在加载WASM32库之前引入一个W3C WebSocket对象。您可以使用任何暴露W3C兼容WebSocket实现的Node.js模块。其中两个这样的模块是WebSocket(提供自定义实现)和isomorphic-ws(基于ws WebSocket模块构建)。
在Web应用中加载
<html>
<head>
<script type="module">
import * as kaspa_wasm from './kaspa/kaspa-wasm.js';
(async () => {
const kaspa = await kaspa_wasm.default('./kaspa/kaspa-wasm_bg.wasm');
// ...
})();
</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
// globalThis.WebSocket = require('websocket').w3cwebsocket;
let {RpcClient,Encoding,initConsolePanicHook} = require('./kaspa-rpc');
// 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("127.0.0.1", Encoding.Borsh, "testnet-10");
(async () => {
try {
await rpc.connect();
let info = await rpc.getInfo();
console.log(info);
} finally {
await rpc.disconnect();
}
})();
有关更多详情,请参阅与Kaspa集成指南。
依赖项
~42–60MB
~1M SLoC