Skip to content

Latest commit

 

History

History
66 lines (54 loc) · 2.21 KB

README.md

File metadata and controls

66 lines (54 loc) · 2.21 KB

Note: You most likely want to use @notemine/wrapper

@notemine/core

npm

WASM js bindings for Notemine.

related

  • @notemine/wrapper git npm - A user-friendly wrapper for @notemine/core that simplifies usage in modern stacks and deployments with modern bundlers. Provides observables, manages workers, tracks internal state and bundles wasm as inline base64 within inline web-workers for hassle-free use in modern apps targeted for the browser.
  • @notemine/vanilla-js-demo git is a demo written with HTML, Vanilla JS and CSS, with no bundlers, that implements @notemine/core
  • @notemine/svelte-demo git is a demo built with svelte and vite that implements @notemine/wrapper

install

pnpm install @notemine/core

usage

import init, { mine_event } from './pkg/notemine.js';

//You shouldn't need to pass id or sig, and created_at is optional.
const event = {
  "pubkey": "e771af0b05c8e95fcdf6feb3500544d2fb1ccd384788e9f490bb3ee28e8ed66f",
  "kind": 1,
  "tags": [],
  "content": "hello world",
}

const difficulty = 21
let cancel = false 

function reportProgress(hashRate = undefined, bestPow = undefined) {
  if(hashRate){
    console.log(`hash rate: ${hashRate}`);
  }
  if(bestPow){
    console.log('best pow: ', bestPow);
  }
}

function shouldCancel() {
  //Add some logic here
  //if it returns true, wasm should stop mining.
  return cancel 
}

const run = async () => {
  //this is synchronous.
  const minedResult = mine_event(
    event,
    difficulty,
    startNonce.toString(),
    nonceStep.toString(),
    reportProgress,
    shouldCancel
  );
}
await init({});

build

Refer to the Readme on Github for WASM build instructions

license

GNU General Public License v3.0