@ckb-js-std/ipc
v1.0.0
Published
on-chain script IPC implementation in TypeScript
Readme
@ckb-js-std/ipc
This is an on-chain script IPC (Inter-Process Communication) implementation in TypeScript, ported from the Rust version.
Overview
The package provides IPC functionality for CKB on-chain scripts, allowing communication between different scripts on the blockchain.
Installation
pnpm install @ckb-js-std/ipcServer Example
import {
runServer,
RequestHandler,
RequestPacket,
ResponsePacket,
} from "@ckb-js-std/ipc";
class Serve implements RequestHandler {
serve(req: RequestPacket): ResponsePacket {
return new ResponsePacket(0, new Uint8Array([42]));
}
}
function main() {
runServer(new Serve());
}
main();Client Example
import { SCRIPT_HASH_TYPE_TYPE } from "@ckb-js-std/bindings";
import { Channel, RequestPacket, spawnCellServer } from "@ckb-js-std/ipc";
function main() {
let jsVmCodeHash = ... // Your ckb-js-vm code hash
let serverCellLocation = ... // server `code hash` + `hash type` in hex
// spawn server
let [readPipe, writePipe] = spawnCellServer(
jsVmCodeHash.buffer,
SCRIPT_HASH_TYPE_TYPE,
["-t", serverCellLocation],
);
let channel = new Channel(readPipe, writePipe);
let req = new RequestPacket(new Uint8Array([1, 2, 3]));
let res = channel.call(req);
}
main();
API Reference
Server
runServer(handler: RequestHandler): Starts an IPC server with the given request handlerRequestHandler: Interface for handling IPC requestsResponsePacket: Class representing the response data structure
Client
spawnCellServer: Spawns a new server cell and returns communication pipesChannel: Handles communication between client and serverRequestPacket: Class representing the request data structure
