2.3.0 • Published 9 months ago

@knuth/bch v2.3.0

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

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.

2.3.0

9 months ago

2.1.2

9 months ago

2.2.0

9 months ago

2.1.1

9 months ago

1.22.0

11 months ago

2.1.0

9 months ago

2.0.0

9 months ago

1.23.0

11 months ago

1.24.0

10 months ago

1.19.0

12 months ago

1.17.0

1 year ago

1.21.0

12 months ago

1.20.0

12 months ago

1.15.0

1 year ago

1.14.0

1 year ago

1.13.0

1 year ago

1.12.0

2 years ago

1.11.0

2 years ago

1.10.0

2 years ago

1.9.0

3 years ago

1.8.0

3 years ago

1.7.0

3 years ago

1.2.0

3 years ago

1.1.0

3 years ago

1.6.0

3 years ago

1.5.0

3 years ago

1.4.1

3 years ago

1.4.0

3 years ago

1.3.0

3 years ago

1.0.0

3 years ago

0.11.0

3 years ago

0.10.0

3 years ago