New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

noderowallet

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

noderowallet

A node.js library for interacting with the Monero Wallet RPC interface

latest
npmnpm
Version
1.1.3
Version published
Maintainers
1
Created
Source

noderowallet

A Javascript library for interacting with the Monero Wallet RPC interface, written in TypeScript, documented with JSDoc, with BigInt support. Zero (0) dependencies. Since version 1.1.0, this library uses the fetch API instead of the node.js http module, and is supposed to work in the browser and other JS runtimes.

Currently, authentication is not supported. You have to start monero-wallet-rpc with --disable-rpc-login, use a reverse proxy that does authentication for you, or use a fetch client that implements digest authentication (see below)

Be careful when using monero-wallet-rpc without authenticaton. Block the RPC port with a firewall, or even better, run the wallet in Docker. If the port is open to the Internet anyone can use your wallet, including stealing all your funds.

Usage

import {NoderoWallet} from 'noderowallet'

// WARNING: make sure your port is not in the bad ports list
// https://fetch.spec.whatwg.org/#port-blocking
const monero = new NoderoWallet({ host: '127.0.0.1', port: 1234 })
monero.getBalance().then((x) => console.log(x))

// Outputs:
{
  balance: 1125125151521n,
// atomic units, in this case the balance is 1.125125151521
// from https://www.getmonero.org/resources/moneropedia/atomic-units.html:
// Atomic Units refer to the smallest fraction of 1 XMR. One atomic unit is currently 1e-12 XMR (0.000000000001 XMR, or one piconero). It may be changed in the future.
  blocks_to_unlock: 0n,
  multisig_import_needed: false,
  per_subaddress: [
    {
      account_index: 0n,
      address: '52R4RNjVjPn6Aj3SVA1yzZQStC8a4StYTUiuAtLjBPk92A76vrCD2pcPmV51Td8X56Gb1smNTaiEadc4gurjQ5nJBUuVCFB',
      address_index: 0n,
      balance: 1125125151521n,
      blocks_to_unlock: 0n,
      label: 'Primary account',
      num_unspent_outputs: 1n,
      time_to_unlock: 0n,
      unlocked_balance: 1125125151521n
    }
  ],
  time_to_unlock: 0n,
  unlocked_balance: 1125125151521n
}

Using a custom fetch client

noderowallet supports passing your own fetch-compatible client, more specifically, any function that matches the following type:

type FetchClient = (
	url: string,
	options: {
		method: 'POST'
		body: string
	}
) => Promise<{
	ok: boolean
	status: number
	text: () => Promise<string>
}>

For example, to use the digest-fetch library:

import { NoderoWallet } from 'noderowallet'
import DigestClient from 'digest-fetch'

const digestClient = new DigestClient('monerouser', 'moneropassword')

const monero = new NoderoWallet({
	host: '127.0.0.1',
	port: 1234,
	fetchClient: (url, options) => digestClient.fetch(url, options)
})
(◣_◢)

Keywords

monero

FAQs

Package last updated on 11 May 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts