monerojs2

ES6 JavaScript Monero library

Usage no npm install needed!

<script type="module">
  import monerojs2 from 'https://cdn.skypack.dev/monerojs2';
</script>

README

monerojs

The original repo (https://github.com/monerojs/monerojs) appears to be no longer be actively maintained.

A Monero library written in ES6 JavaScript

This library has two main parts: a Monero daemon (monerod) JSON-RPC API wrapper, daemonRPC.js, and a Monero wallet (monero-wallet-rpc) JSON-RPC API wrapper, walletRPC.js.

Requirements

  • Node.js
  • A Monero node, preferably at latest version release (remote nodes support most, but not all, methods.)

Installation

npm install monerojs2

--save optional

Testing

Install dependencies (npm install) and then run mocha tests with npm test

Usage

JSON-RPC interfaces and their methods are wrapped in promises. Much more exhaustive examples can be found in the tests

Autoconnect to Monero daemon (monerod)

const Monero = require('monerojs');

var daemonRPC = new Monero.daemonRPC({ autoconnect: true })
.then((daemon) => {
  daemonRPC = daemon; // Store daemon interface in global variable
  
  daemonRPC.getblockcount()
  .then(blocks => {
    console.log(blocks);
  })
  .catch(err => {
    console.error(err);
  });
})
.catch(err => {
  throw new Error(err);
});

Connect to specific Monero daemons

// const daemonRPC = new Monero.daemonRPC().then(...).catch(...); // Connect with defaults
// const daemonRPC = new Monero.daemonRPC('127.0.0.1', 28081, 'user', 'pass', 'http').then(...).catch(...); // Example of passing in parameters
// const daemonRPC = new Monero.daemonRPC({ port: 28081, protocol: 'https' }).then(...).catch(...); // Parameters can be passed in as an object/dictionary
const daemonRPC = new Monero.daemonRPC() // Connect with defaults
.then(daemon => {
  daemonRPC = daemon; // Store daemon interface in global variable

  daemonRPC.getblockcount()
  .then(height => {
    console.log(height);
  })
  .catch(err => {
    console.error(err);
  });
})
.catch(err => {
  throw new Error(err);
});

Connect to Monero wallet (monero-wallet-rpc)

// const walletRPC = new Monero.walletRPC('127.0.0.1', 28083, 'user', 'pass', 'http').then(...).catch(...); // Example of passing in parameters
// const walletRPC = new Monero.walletRPC({ port: 28083, protocol: 'https' }).then(...).catch(...); // Parameters can be passed in as an object/dictionary
// const walletRPC = new Monero.walletRPC({ autoconnect: true }).then(...).catch(...); // Autoconnect
const walletRPC = new Monero.walletRPC() // Connect with defaults
.then(wallet => {
  walletRPC = wallet; // Store wallet interface in global variable

  walletRPC.create_wallet('monero_wallet', '')
  .then(new_wallet => {
    walletRPC.open_wallet('monero_wallet', '')
    .then(wallet => {
      walletRPC.getaddress()
      .then(balance => {
        console.log(balance);
      })
      .catch(err = {
        console.error(err);
      });
    })
    .catch(err = {
      console.error(err);
    });
  })
  .catch(err = {
    console.error(err);
  });
})
.catch(err = {
  throw new Error(err);
});