@knuth/bch
TypeScript icon, indicating that this package has built-in type declarations

2.3.0 • Public • Published

Javascript/Typescript API

Bitcoin Cash full node as a Javascript/Typescript library

NPM Version License js-standard-style Telegram

Knuth Javascript/Typescript API is a high performance implementation of the Bitcoin Cash protocol focused on users requiring extra performance and flexibility. It is a Bitcoin Cash node you can use as a library.

Getting started with Javascript

  1. Create a new Javascript console project:
$ mkdir HelloKnuth
$ cd HelloKnuth
$ npm init
  1. Add a reference to our Javascript API package:
$ npm install @knuth/bch
  1. Create a new file called index.js and write some code:
const kth = require("@knuth/bch")

let running_ = false;

async function main() {
    process.on('SIGINT', shutdown);
    const config = kth.settings.getDefault(kth.network.mainnet);
    const node = new kth.node.Node(config, false);
    await node.launch(kth.startModules.all);
    console.log("Knuth node has been launched.");
    running_ = true;

    const [_, height] = await node.chain.getLastHeight();
    console.log(`Current height in local copy: ${height}`);

    if (await comeBackAfterTheBCHHardFork(node)) {
        console.log("Bitcoin Cash has been created!");
    }

    node.close();
    console.log("Good bye!");
}

async function comeBackAfterTheBCHHardFork(node) {
    const hfHeight = 478559;
    while (running_) {
        const [_, height] = await node.chain.getLastHeight();
        if (height >= hfHeight) return true;
        await sleep(10000);
    }
    return false;
}

function shutdown() {
    console.log('Graceful shutdown ...');
    running_ = false;
}

function sleep(ms) {
    return new Promise((r) => setTimeout(r, ms));
}

(async () => {
    try {
        await main();
    } catch (e) {
        console.log(e);
    }
})();
  1. Enjoy Knuth node as a Javascript library:
$ node index.js

Getting started with Typescript

  1. Create a new Typescript console project:
$ mkdir HelloKnuth
$ cd HelloKnuth
$ npm init
  1. Add a reference to our Typescript API package and TypeScript definitions for Node.js:
$ npm install @knuth/bch
$ npm install @types/node

  1. Create a new file called index.ts and write some code:
import * as kth from "@knuth/bch";

let running_ = false;

async function main() {
    process.on('SIGINT', shutdown);
    const config = kth.settings.getDefault(kth.network.mainnet);
    const node = new kth.node.Node(config, false);
    await node.launch(kth.startModules.all);
    console.log("Knuth node has been launched.");
    running_ = true;

    const [_, height] = await node.chain.getLastHeight();
    console.log(`Current height in local copy: ${height}`);

    if (await comeBackAfterTheBCHHardFork(node)) {
        console.log("Bitcoin Cash has been created!");
    }

    node.close();
    console.log("Good bye!");
}

async function comeBackAfterTheBCHHardFork(node : kth.node.Node) {
    const hfHeight = 478559;
    while (running_) {
        const [_, height] = await node.chain.getLastHeight();
        if (height >= hfHeight) return true;
        await sleep(10000);
    }
    return false;
}

function shutdown() {
    console.log('Graceful shutdown ...');
    running_ = false;
}

function sleep(ms : number) {
    return new Promise((r) => setTimeout(r, ms));
}

(async () => {
    try {
        await main();
    } catch (e) {
        console.log(e);
    }
})();
  1. Enjoy Knuth node as a Typescript library:
$ ts-node index.ts

Issues

Each of our modules has its own Github repository, but in case you want to create an issue, please do so in our main repository.

Package Sidebar

Install

npm i @knuth/bch

Weekly Downloads

3

Version

2.3.0

License

MIT

Unpacked Size

1.72 MB

Total Files

86

Last publish

Collaborators

  • fpelliccioni
  • nicocappabianca