simple-nano-wallet-js
v1.0.0
Published
**Simple Nano Wallet JS**
Maintainers
Readme
Simple Nano Wallet JS
Simple nano wallet with in memory key managment and client side signatures.
Compatible with any nano node RPC & Websocket. Made by Nanswap Nodes.
Features
- Send & Receive nano
- Auto receive wallet's incoming blocks (requires websocket)
- Compatible with Banano, DogeNano and any nano-node network with custom prefix & decimal
- Receive all receivable blocks for an account
- Create wallet from seed or from random entropy
- Create derived accounts
Installation
Using npm
npm install simple-nano-wallet-jsUsing yarn
yarn add simple-nano-wallet-jsSecurity Warning: If your seed was generated using
multi-nano-webornanocurrency-web-jsvia.generate()or.generateLegacy()prior to v2.0.0 of those libraries, it should be considered compromised. Those versions did not use sufficient entropy during seed generation, making the resulting seeds potentially predictable. Move any funds immediately to a new seed generated with a patched version (v2.0.0+).
Usage:
Create new wallet
const { Wallet } = require('simple-nano-wallet-js');
const { wallet: walletLib} = require('multi-nano-web')
let seed = walletLib.generateLegacy().seed // save & backup it somewhere!
// initialize wallet
const wallet = new Wallet({
RPC_URL: 'http://127.0.0.1:7076',
WORK_URL: 'http://127.0.0.1:7076',
WS_URL: `ws://127.0.0.1:7078`,
seed: seed,
defaultRep: "nano_1banexkcfuieufzxksfrxqf6xy8e57ry1zdtq9yn7jntzhpwu4pg4hajojmq",
})
// Generate 10 derived accounts
let accounts = wallet.createAccounts(10)
// ["nano_3g5hpb4kwqgakt4cx11ftq6xztx1matfhgkmhunj3sx4f4s3nwb6hfi3nts1", ... ]Auto Receive
By default, when a websocket is provided, receivable blocks for all wallet accounts will be processed automatically.
To disable this feature, set autoReceive to false when initializing the wallet.
Manually Receive
// receive all receivable blocks for an account
let hashesReceive = await wallet.receiveAll("nano_3g5hpb4kwqgakt4cx11ftq6xztx1matfhgkmhunj3sx4f4s3nwb6hfi3nts1")Send
// send 0.001 nano from nano_3g5hp... to nano_3g5hp...
let hash = await wallet.send({
source: "nano_3g5hpb4kwqgakt4cx11ftq6xztx1matfhgkmhunj3sx4f4s3nwb6hfi3nts1", // must be in wallet.
destination: "nano_3g5hpb4kwqgakt4cx11ftq6xztx1matfhgkmhunj3sx4f4s3nwb6hfi3nts1",
amount: wallet.megaToRaw(0.001),
})
Custom networks
let headerAuth = { // custom header for authentification
"nodes-api-key": process.env.NODES_API_KEY
}
// DogeNano Wallet
const walletXDG = new Wallet({
RPC_URL: 'https://nodes.nanswap.com/XDG',
WORK_URL: 'https://nodes.nanswap.com/XDG',
WS_URL: `wss://nodes.nanswap.com/ws/?ticker=XDG&api=${process.env.NODES_API_KEY}`,
seed: seedXDG,
defaultRep: "xdg_1e4ecrhmcws6kwiegw8dsbq5jstq7gqj7fspjmgiu11q55s6xnsnp3t9jqxf",
prefix: 'xdg_',
decimal: 26,
customHeaders: headerAuth,
wsSubAll: false,
})
// Banano Wallet
const walletBAN = new Wallet({
RPC_URL: 'https://nodes.nanswap.com/BAN',
WORK_URL: 'https://nodes.nanswap.com/BAN',
WS_URL: `wss://nodes.nanswap.com/ws/?ticker=BAN&api=${process.env.NODES_API_KEY}`,
seed: seedBAN,
defaultRep: "ban_1banexkcfuieufzxksfrxqf6xy8e57ry1zdtq9yn7jntzhpwu4pg4hajojmq",
prefix: 'ban_',
decimal: 29,
customHeaders: headerAuth,
wsSubAll: false
})This lib is intended for small project (<5000 accounts), for a more scablable system, it is recommended to use a database to store the accounts keys.
Credits to nanocurrency-web for nano toolkit.
