npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

navcoin-js

v1.1.182

Published

Navcoin Javascript Library

Downloads

416

Readme

navcoin-js

Navcoin Javascript wallet library. Tested with Node v15.14.0 and NPM v7.7.6.

Minimal working examples in example.js and web/

Specification

const njs = require('navcoin-js');

Static methods.

wallet.bitcore

Exposes low level methods from @aguycalled/bitcore-lib.

wallet.Init()

Required before making any operation with the wallet. Initialises the cryptographic modules.

Parameters: none

Returns: Promise

Example:

njs.wallet.Init().then(async () => {
    console.log(`library initialised`);
})

wallet.WalletFile(parameters)

Creates a new Wallet object. Loads a wallet from storage or creates a new one if the name of the database does not exist.

Parameters: parameters object:

| Key | Description | Default value | |------------------|------------------------------------------------------------------------------------------------------------------------------------------|---------------| | file | Name of the wallet database. Will store in memory if undefined | undefined | | mnemonic | When creating a new wallet, it will try to import the specified mnemonic. | undefined | | type | Mnemonic type. Options: navcoin-js-v1 (this library), navcash, next, navcoin-core or navpay | navcoin-js-v1 | | password | Password used to encrypt the wallet data base. User will need to specify it every time the wallet is loaded. | undefined | | spendingPassword | When a new wallet is created, sets the password used to encrypt the wallet private keys. User will need to specify it every time it spends coins or wants to see a private key. | undefined | | zapwallettxes | Wipe all wallet entries and resync if set to true | false | | network | Which network should it connect to. Options: mainnet or testnet | mainnet | | log | Prints log to the console. | false |

Returns: Wallet object

Example:

const wallet = new njs.wallet.WalletFile({file: 'wallet.db', password: 'myw4ll3tp455w0rd'})

wallet.WalletFile.ListWallets()

Lists the names of the already created wallets.

Parameters: none

Returns: Promise<Array>

Example:

const listWallets = await njs.wallet.WalletFile.ListWallets();

console.log("List of wallets:\n");
for (var wallet in listWallets) {
    console.log(listWallets[wallet]);
}

wallet.WalletFile.RemoveWallet(name)

Remove the wallet with the specified name.

Parameters: wallet database file name

Returns: Promise

Example:

await njs.wallet.WalletFile.RemoveWallet("wallet.db");

Wallet methods

Load(parameters)

Loads the wallet.

Parameters: parameters object:

| Key | Description | Default value | |------------------|------------------------------------------------------------------------------------------------------------------------------------------|---------------| | bootstrap | Object with a cached history of xNAV transaction keys, meant to speed sync speed. | undefined |

Returns: Promise

Example:

await wallet.Load({
  bootstrap: njs.wallet.xNavBootstrap
});

AddNode(host, port, proto)

Adds an Electrum server to the nodes list. This is currently not persisted.

Parameters:

| Parameter | Description | |------------------|-------------------------------------------------------------------| | host | Electrum server host. | | port | Electrum server port. | | proto | Electrum server protocol. |

Returns: void

Example:

wallet.AddNode('electrum8.nav.community', 40004, 'wss')

ClearNodeList()

Clears the Electrum server list. Not persisted.

Parameters: none

Returns: void

Example:

wallet.ClearNodeList()

Connect()

Connects to the Navcoin network.

Parameters: none

Returns: promise

Example:

await wallet.Connect()

Disconnect()

Disconnects from the electrum server.

Parameters: none

Returns: void

Example:

wallet.Disconnect()

NavReceivingAddresses()

Returns the list of addresses to receive NAV.

Returns: Promise<Array>

Example:

console.log('NAV receiving address: '+ (await wallet.NavReceivingAddresses(false))[0].address);

xNavReceivingAddresses()

Returns the list of addresses to receive xNAV.

Returns: Promise<Array>

Example:

console.log('xNAV receiving address: '+ (await wallet.xNavReceivingAddresses(false))[0].address);

NavGetPrivateKeys(spendingPassword, address)

Returns the list of private keys for the NAV addresses

Parameters:

spendingPassword The spending password of the wallet.

address Return the private key only for one specific address.

Returns: Promise<Array>

Example:

console.log('NAV private keys: '+ (await wallet.NavGetPrivateKeys()));

GetHistory()

Returns an ordered list of wallet balance changes and transactions.

Returns: Promise<Array>

Example:

console.log('Wallet history: '+ (await wallet.GetHistory()));

GetBalance()

Returns the current balances. Only needed to update when events new_tx, remove_tx or sync_finished.

Returns: Promise<Object>

Example:

console.log('Wallet balance: '+ (await wallet.GetBalance()));

NavCreateTransaction(destination, amount, memo, spendingPassword, subtractFee, fee, from)

Creates a transaction which sends NAV.

Parameters:

  • destination The address destination. Can be NAV or xNAV.
  • amount The amount to send.
  • memo Only applies when destination is an xNAV address.
  • spendingPassword The wallet spending password.
  • subtractFee Should the fee be subtracted from the specified amount. Default: true.
  • fee Use a custom fee
  • type Select which coin types are selected, use 0x1 for non staking funds, 0x2 for staked funds, 0x3 for both. Default: 0x1
  • `address' Spend coins only from this address.

Returns: Promise<Object> with the transaction encoded in hex and the fee. Use try to catch error.

Example, normal NAV to NAV transaction:

try {
    let tx = await wallet.NavCreateTransaction("NhSoiAPHvjiTLePzW1qKy9RZr2Bkny2ZF3", 10 * 1e8, undefined, "myw4ll3tp455w0rd")
    console.log(`transaction created with fee ${tx.fee}`)
    
} catch(e)
{
    console.log(`error creating transaction: ${e}`);
}

Example 2, moving coins out of staking:

try {
    let tx = await wallet.NavCreateTransaction(
      (await wallet.NavReceivingAddresses(true))[0].address,
      (await wallet.GetBalance()).staked.confirmed,
      undefined,
      "myw4ll3tp455w0rd",
      true,
      100000,
      0x2
    )
    console.log(`transaction created with fee ${tx.fee}`)
    
} catch(e)
{
    console.log(`error creating transaction: ${e}`);
}

xNavCreateTransaction(destination, amount, memo, spendingPassword, subtractFee)

Creates a transaction which sends xNAV.

Parameters:

  • destination The address destination. Can be NAV or xNAV.
  • amount The amount to send.
  • memo Only applies when destination is xNAV.
  • spendingPassword The wallet spending password.
  • subtractFee Should the fee be subtracted from the specified amount. Default: true.

Returns: Promise<Object> with the transaction encoded in hex and the fee. Use try to catch error.

Example:

try {
    let hash = await wallet.xNavCreateTransaction("NhSoiAPHvjiTLePzW1qKy9RZr2Bkny2ZF3", 10 * 1e8, undefined, "myw4ll3tp455w0rd")
    console.log(`transaction with fee ${tx.fee}`)
    
} catch(e)
{
    console.log(`error creating transaction: ${e}`);
}

xNavCreateTransactionMultiple(destination, spendingPassword, subtractFee)

Creates a transaction which sends xNAV to mulple destinations.

Parameters:

  • destinations An array of objects with the destinations.
  • spendingPassword The wallet spending password.
  • subtractFee Should the fee be subtracted from the specified amount. Default: true.

Returns: Promise<Object> with the transaction encoded in hex and the fee. Use try to catch error.

Example:

try {
    let hash = await wallet.xNavCreateTransactionMultiple([{dest:"NhSoiAPHvjiTLePzW1qKy9RZr2Bkny2ZF3", amount: 10 * 1e8, memo: undefined}], "myw4ll3tp455w0rd")
    console.log(`transaction with fee ${tx.fee}`)
}
catch(e)
{
    console.log(`error creating transaction: ${e}`);
}

tokenCreateTransaction(destination, amount, memo, spendingPassword, tokenId, nftId)

Creates a transaction which sends a private token or nft..

Parameters:

  • destination The address destination. Must be xNAV.
  • amount The amount to send. Should be 1 if tokenId is a NFT.
  • memo Only applies when destination is xNAV.
  • spendingPassword The wallet spending password.
  • tokenId The token id.
  • tokenNftId The NFT id, if tokenId is a NFT.

Returns: Promise<Object> with the transaction encoded in hex and the fee. Use try to catch error.

Example:

try {
    let hash = await wallet.tokenCreateTransaction("NhSoiAPHvjiTLePzW1qKy9RZr2Bkny2ZF3", 10 * 1e8, undefined, "myw4ll3tp455w0rd", "8b130a7e21b7da3a8897205d7735dc5434c0019a35f3a5dec475fbc2cbd4f56a")
    console.log(`transaction with fee ${tx.fee}`)
    
} catch(e)
{
    console.log(`error creating transaction: ${e}`);
}

SendTransaction(tx)

Broadcasts a transaction.

Parameters:

  • tx The hex encoded transaction(s).

Returns: Promise<Object>

Example:

try {
    let tx = await wallet.SendTransaction(tx)
    console.log(`transaction sent with hashes ${tx.hashes} and error ${tx.error}`)
}
catch(e)
{
    console.log(`error sending: ${e}`)
}

ImportPrivateKey(key, spendingKey)

Imports the specified private key key to the wallet.

Returns: Promise

Example:

await wallet.ImportPrivateKey('P123123123123123123121', 'myw4ll3tp4ssw0rd')

Sign(privateKey, message)

Signs a message with the specified private key.

VerifySignature(address, message, signature)

Verifies a signed message.

ResolveName(name)

Resolves a dotNav name.

Returns: Promise<Object> with the associated data to the name. Use try to catch error.

Example:

try {
    let data = await wallet.ResolveName("myname.nav")
    console.log(`myname.nav is: ${JSON.stringify(data, undefined, 4)}`)
}
catch(e)
{
    console.log(`error resolving name: ${e}`);
}

RegisterName(name, spendingPassword)

Registers a dotNav name.

Returns: Promise<Object> with the transaction encoded in hex and the fee. Use try to catch error.

Example:

try {
    let hash = await wallet.RegisterName("myname.nav", "myw4ll3tp455w0rd")
    console.log(`transaction with fee ${tx.fee}`)
}
catch(e)
{
    console.log(`error creating transaction: ${e}`);
}

UpdateName(name, subdomain, key, value, spendingPassword)

Updates a dotNav name.

Returns: Promise<Object> with the transaction encoded in hex and the fee. Use try to catch error.

Example:

try {
    let hash = await wallet.UpdateName("myname.nav", "www", "ip", "127.0.0.1", "myw4ll3tp455w0rd")
    console.log(`transaction with fee ${tx.fee}`)
}
catch(e)
{
    console.log(`error creating transaction: ${e}`);
}

GetMyNames()

Returns the list of dotNav names owned by the wallet.

Example:

try {
    let names = await wallet.GetMyNames()
    console.log(`my names are: ${JSON.stringify(names, undefined, 4)}`)
}
catch(e)
{
    console.log(`error getting my names: ${e}`);
}

IsValidDotNavName(name)

Returns whether a string is a valid dotNav name.

IsValidDotNavKey(name)

Returns whether a string is a valid dotNav key.

CreateToken(name, code, max_supply, spending_password)

Creates a private token with name name, currency code code and max supply max_supply.

Returns: Promise<Object> with the transaction encoded in hex and the fee. Use try to catch error.

Example:

try {
    let hash = await wallet.CreateToken("Baby NAV", "BNAV", 1000*1e8, "myw4ll3tp455w0rd")
    console.log(`cost is fee ${tx.fee}`)
}
catch(e)
{
    console.log(`error creating transaction: ${e}`);
}

CreateNft(name, scheme, max_supply, spending_password)

Creates a NFT with name name, scheme scheme and max supply max_supply.

Returns: Promise<Object> with the transaction encoded in hex and the fee. Use try to catch error.

Example:

try {
    let hash = await wallet.CreateNft("Art Collection", "{'url':'resource'}", 1000, "myw4ll3tp455w0rd")
    console.log(`cost is fee ${tx.fee}`)
}
catch(e)
{
    console.log(`error creating transaction: ${e}`);
}

MintToken(id, dest, amount, spending_password)

Mints amount tokens of token id to address dest.

Returns: Promise<Object> with the transaction encoded in hex and the fee. Use try to catch error.

Example:

try {
    let hash = await wallet.MintToken("50c89fd9661dfeca262dbc9d796e8b4c74987b9c5a37a87254ba1a940fbfb382", "xNTvzWPMSAJYUMRTaqGEepADBPRs3CQ3JJVUWJU8JEUm5xBCdhrBGiYbozkDNbWuzHpCuSFT8fHv9NLthb7ga3vxMfCrSjH7HTQRnbtPmaGHJ9uekiiir1foLfMNQ9CAXJ9CRTgedbE", 1*1e8, "myw4ll3tp455w0rd")
    console.log(`cost is fee ${tx.fee}`)
}
catch(e)
{
    console.log(`error creating transaction: ${e}`);
}

MintNft(id, nftId, dest, scheme, spending_password)

Mints 1 NFT of id with index nftId and scheme scheme to address dest.

Returns: Promise<Object> with the transaction encoded in hex and the fee. Use try to catch error.

Example:

try {
    let hash = await wallet.MintNft("50c89fd9661dfeca262dbc9d796e8b4c74987b9c5a37a87254ba1a940fbfb382", 0, "xNTvzWPMSAJYUMRTaqGEepADBPRs3CQ3JJVUWJU8JEUm5xBCdhrBGiYbozkDNbWuzHpCuSFT8fHv9NLthb7ga3vxMfCrSjH7HTQRnbtPmaGHJ9uekiiir1foLfMNQ9CAXJ9CRTgedbE", "{'resource':'https://art.net/image.jpeg'}", "myw4ll3tp455w0rd")
    console.log(`cost is fee ${tx.fee}`)
}
catch(e)
{
    console.log(`error creating transaction: ${e}`);
}

GetMyTokens(spendingPassword)

Returns the list of tokens owned by the wallet.

Example:

try {
    let tokens = await wallet.GetMyTokens("my password")
    console.log(`my tokens are: ${JSON.stringify(tokens, undefined, 4)}`)
}
catch(e)
{
    console.log(`error getting my tokens: ${e}`);
}

CreateTokenOrder(tokenInId, tokenInAmount, payTo, tokenOutId, tokenOutAmount, spendingPassword)

Creates an order to receive tokenInAmount amount of token tokenInId in the address payTo in exchange of tokenOutAmount amount of token tokenOutId.

Returns an object with the partial transaction, the assets needed to complete the transaction and the assets received.

Example:

try {
    // Create order to sell 1000 of the token "a022.." in exchange of 10 xNAV
    let order = await wallet.CreateTokenOrder(undefined, 10*1e8, "xNUBDkjEKRRxXfN3nAbeBZLWbePjswoKi9PHboXfJzbqmg6heMbxJhhovMmebqN96AaXyFYsZFfGXaGVptFnPzyQjGE8bbo83kEZG5jUXbKoaJPC4ztTg1zw3dUyavXNVVUoeuDB3Yu", "a022b264c5d9a0f15f548b75c83f69944211a9abba7f27fc91fada1eda079762", 1000*1e8)
} catch(e) {
    console.log(`error creating order: ${e}`);
}

try {
    // Create order to buy 1000 of the token "a022.." in exchange of 10 xNAV
    let order = await wallet.CreateTokenOrder("a022b264c5d9a0f15f548b75c83f69944211a9abba7f27fc91fada1eda079762", 1000*1e8, "xNUBDkjEKRRxXfN3nAbeBZLWbePjswoKi9PHboXfJzbqmg6heMbxJhhovMmebqN96AaXyFYsZFfGXaGVptFnPzyQjGE8bbo83kEZG5jUXbKoaJPC4ztTg1zw3dUyavXNVVUoeuDB3Yu", undefined, 10*1e8)
} catch(e) {
    console.log(`error creating order: ${e}`);
}

CreateMintNftOrder(tokenId, tokenNftId, payTo, price, metadata, spendingPassword)

Creates an order to mint NFT tokenId:tokenNftId with metadata metadata in exchange of a payment of price xNAV sent to payTo.

Returns an object with the partial transaction, the assets needed to complete the transaction and the assets received.

Example:

try {
    // Create buy order to buy an NFT mint in exchange of 10 xNAV payment
    let order = await wallet.CreateMintNftOrder("adb78af655528f5323e1c4c241a3c4576634449a98162697fc74bd2041e3d878", 4, "xNUBDkjEKRRxXfN3nAbeBZLWbePjswoKi9PHboXfJzbqmg6heMbxJhhovMmebqN96AaXyFYsZFfGXaGVptFnPzyQjGE8bbo83kEZG5jUXbKoaJPC4ztTg1zw3dUyavXNVVUoeuDB3Yu", 10*1e8, "{file:\"http://navcoin.org/logo.png\"}")
} catch(e) {
    console.log(`error creating order: ${e}`);
}

CreateBuyNftOrder(tokenId, tokenNftId, payTo, price, spendingPassword)

Creates a buy order for NFT tokenId:tokenNftId in exchange of a payment of price xNAV sent to payTo.

Returns an object with the partial transaction, the assets needed to complete the transaction and the assets received.

Example:

try {
    // Create buy order to buy an NFT in exchange of 10 xNAV payment
    let order = await wallet.CreateBuyNftOrder("adb78af655528f5323e1c4c241a3c4576634449a98162697fc74bd2041e3d878", 4, "xNUBDkjEKRRxXfN3nAbeBZLWbePjswoKi9PHboXfJzbqmg6heMbxJhhovMmebqN96AaXyFYsZFfGXaGVptFnPzyQjGE8bbo83kEZG5jUXbKoaJPC4ztTg1zw3dUyavXNVVUoeuDB3Yu", 10*1e8)
} catch(e) {
    console.log(`error creating order: ${e}`);
}

CreateSellNftOrder(tokenId, tokenNftId, payTo, price, spendingPassword)

Creates a sell order for NFT tokenId:tokenNftId in exchange of a payment of price xNAV sent to payTo.

Returns an object with the partial transaction, the assets needed to complete the transaction and the assets received.

Example:

try {
    // Create buy order to buy an NFT mint in exchange of 10 xNAV payment
    let order = await wallet.CreateSellNftOrder("adb78af655528f5323e1c4c241a3c4576634449a98162697fc74bd2041e3d878", 4, "xNUBDkjEKRRxXfN3nAbeBZLWbePjswoKi9PHboXfJzbqmg6heMbxJhhovMmebqN96AaXyFYsZFfGXaGVptFnPzyQjGE8bbo83kEZG5jUXbKoaJPC4ztTg1zw3dUyavXNVVUoeuDB3Yu", 10*1e8)
} catch(e) {
    console.log(`error creating order: ${e}`);
}

VerifyOrder(order)

Verifies the correctness of an order.

Example:

try {
    // Create buy order to buy an NFT mint in exchange of 10 xNAV payment and verify its correctness
    let fValid = await wallet.VerifyOrder(await wallet.CreateSellNftOrder("adb78af655528f5323e1c4c241a3c4576634449a98162697fc74bd2041e3d878", 4, "xNUBDkjEKRRxXfN3nAbeBZLWbePjswoKi9PHboXfJzbqmg6heMbxJhhovMmebqN96AaXyFYsZFfGXaGVptFnPzyQjGE8bbo83kEZG5jUXbKoaJPC4ztTg1zw3dUyavXNVVUoeuDB3Yu", 10*1e8))
} catch(e) {
    console.log(`error validating order: ${e}`);
}

AcceptOrder(order, spendingPassword)

Creates a transaction which accepts the order order.

Example:

try {
    let tx = await wallet.AcceptOrder(order, "my password");
    let hash = await wallet.SendTransaction(tx.tx);
    
    console.log(`Transaction accepted with hash ${hash}`);
} catch(e) {
    console.log(`error accepting order: ${e}`);
}

CreateNftProof(tokenId, nftId, spendingPassword)

Creates an ownership proof for an specific NFT.

Example:

try {
    let proof = await wallet.CreateNftProof("adb78af655528f5323e1c4c241a3c4576634449a98162697fc74bd2041e3d878", 1, "my password");
} catch(e) {
    console.log(`error creating proof: ${e}`);
}

VerifyNftProof(tokenId, nftId, proof)

Verifies an ownership proof for an specific NFT.

Returns an object with the UTXO (txid:nout) used to verify the proof and the verification result (result)

Example:

try {
    let proof = await wallet.CreateNftProof("adb78af655528f5323e1c4c241a3c4576634449a98162697fc74bd2041e3d878", 1, "my password");
    let verification = await wallet.VerifyNftProof("adb78af655528f5323e1c4c241a3c4576634449a98162697fc74bd2041e3d878", 1, proof);

    console.log(`proof validity: ${verification.result}`);
    console.log(`nft utxo: ${verification.txid}:${verification.nout}`);
} catch(e) {
    console.log(`error verifying proof: ${e}`);
}

GetConsensusParameters()

Returns an array with the different consensus parameters and their values.

GetProposals()

Returns an array with the history of DAO Funding proposals.

GetConsultations()

Returns an array with the history of DAO Consultations.

Events

new_mnemonic

Emitted when a new wallet is created.

Example:

wallet.on('new_mnemonic', (mnemonic) => console.log(`wallet created with mnemonic ${mnemonic} - please back it up!`));

loaded

Emitted when the wallet has been loaded.

Example:

wallet.on('loaded', async () => {     
    console.log('wallet loaded')
    
    console.log('NAV receiving address: '+ (await wallet.NavReceivingAddresses(false))[0].address);
        
    await wallet.Connect();
});

connected

Emitted when a connection has been established to an electrum server.

Example:

wallet.on('connected', (server) => console.log(`connected to ${server}. waiting for sync`));

disconnected

Emitted when a connection drops.

Example:

wallet.on('disconnected', () => console.log(`connection ended`));

no_servers_available

Emitted when none of the servers is available

Example:

wallet.on('no_servers_available', () => console.log(`none of the servers is available`));

bootstrap_started

Emitted when the wallet starts the bootstrap process

wallet.on('bootstrap_started', () => console.log('bootstrap started'));

bootstrap_finished

Emitted when the wallet finished bootstrapping

wallet.on('bootstrap_finished', () => console.log('bootstrap complete'));

bootstrap_progress

Emitted to update about the bootstrap progress, passes the number of transactions on queue.

wallet.on('bootstrap_progress', (total) => console.log(`bootstrap status: ${count} txs`));

sync_started

Emitted when the wallet starts synchronizing the transaction history.

wallet.on('sync_started', () => console.log('sync started'));

sync_finished

Emitted when the wallet finished synchronizing the transaction history.

wallet.on('sync_finished', (scripthash) => console.log('sync complete'));

sync_status

Emitted to update the sync progress.

wallet.on('sync_status', (progress, pending, total) => console.log(`sync status: ${progress}%`));

new_tx

Emitted when a new transaction affecting the wallet has been received.

wallet.on('new_tx', async (list) => {
    console.log(`Received transaction ${JSON.stringify(list)}`)
    console.log(`Balance ${JSON.stringify(await wallet.GetBalance())}`)
});

new_name

Emitted when a new dotNav name owned by the wallet has been seen.

wallet.on('new_name', async (name) => {
    console.log(`Seen dotNav name ${name}`)
});

db_load_error

Emitted when the wallet database could not be loaded.

wallet.on('db_load_error', (error) => console.log(`error loading database: ${progress}%`));

db_open

Emitted when the wallet database has been opened.

wallet.on('db_open', () => console.log(`database is now open`));

db_closed

Emitted when the wallet database has been closed.

wallet.on('db_closed', () => console.log(`database is now closed`));