Nihilistic Party Mantra

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

    1.10.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.

    Install

    npm i @knuth/bch

    DownloadsWeekly Downloads

    13

    Version

    1.10.0

    License

    MIT

    Unpacked Size

    1.23 MB

    Total Files

    67

    Last publish

    Collaborators

    • fpelliccioni
    • nicocappabianca