Skip to content
/ js-api Public

Bitcoin full node as a Javascript library

Notifications You must be signed in to change notification settings

k-nuth/js-api

Repository files navigation

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.

About

Bitcoin full node as a Javascript library

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •