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

ecashaddrjs

v2.0.0

Published

eCash cashaddr address format support for Node.js and web browsers.

Downloads

7,523

Readme

eCashAddr.js: The eCash address format for Node.js and web browsers.

NPM

TypeScript implementation for CashAddr address format for eCash (XEC). Also supports Bitcoin Cash (BCH).

Compliant with the original CashAddr specification which improves upon BIP 173.

Installation

Using NPM

$ npm install --save ecashaddrjs

Usage

See tests for detailed usage. Note that conversion to and from BTC address format is not supported in this library, but is available in ecash-lib.

Examples below.

In Node.js

const {
    encodeCashAddress,
    decodeCashAddress,
    isValidCashAddress,
    getOutputScriptFromAddress,
} = require('ecashaddrjs');
const bitcoincashAddress =
    'bitcoincash:qpadrekpz6gjd8w0zfedmtqyld0r2j4qmuj6vnmhp6';
const { prefix, type, hash } = decodeCashAddress(bitcoincashAddress);
console.log(prefix); // 'bitcoincash'
console.log(type); // 'p2pkh'
console.log(hash); // '7ad1e6c11691269dcf1272ddac04fb5e354aa0df'
console.log(encodeCashAddress('ecash', type, hash));
// 'ecash:qpadrekpz6gjd8w0zfedmtqyld0r2j4qmuthccqd8d'
console.log(isValidCashAddress(bitcoincashAddress)); // true
console.log(isValidCashAddress(bitcoincashAddress), 'bitcoincash'); // true
console.log(isValidCashAddress(bitcoincashAddress), 'ecash'); // false

// getOutputScriptFromAddress
console.log(
    getOutputScriptFromAddress(
        'ecash:qplkmuz3rx480u6vc4xgc0qxnza42p0e7vll6p90wr',
    ),
); // 76a9144e532257c01b310b3b5c1fd947c79a72addf852388ac

React

import { encodeCashAddress, decodeCashAddress } from 'ecashaddrjs';

// Note that this specific prefix conversion use case is simplified by the Address
// class availabe in ecash-lib
function convertBitcoincashToEcash(bitcoincashAddress) {
    const { prefix, type, hash } = decodeCashAddress(bitcoincashAddress);
    const ecashAddress = encodeCashAddress('ecash', type, hash);
    return ecashAddress;
}

Change Log

  • 1.1.0 - Support decoding prefixless addresses\
  • 1.1.1 - Updated README to point to Bitcoin ABC monorepo\
  • 1.1.2 - Updated repository field in package.json to Bitcoin ABC monorepo\
  • 1.1.3 - Support string input and output for hash\
  • 1.2.0 - Support lowercase input and output of address types, support encoding outputScript to address, support getting type and hash from an outputScript with new exported function getTypeAndHashFromOutputScript\
  • 1.3.0 - Add toLegacy function to convert cashaddress format to legacy address\
  • 1.4.0 - Add isValidCashAddress function to validate cash addresses by prefix\
  • 1.4.1-6 - Fix repo README link for npmjs page\
  • 1.5.0 - Add getOutputScriptFromAddress function to get outputScript from address
  • 1.5.1 - Patch getTypeAndHashFromOutputScript to return type in lowercase (how chronik accepts it)
  • 1.5.2 - Make input of address type case insensitive for encode, e.g. p2pkh and P2PKH both work
  • 1.5.3 - Upgraded dependencies
  • 1.5.4 - Added unit tests
  • 1.5.5 - Skipped due to error in D15400
  • 1.5.6 - Add types declaration for easy import by typescript apps
  • 1.5.7 - Fix isValidCashAddress to allow both undefined or explicit false for no prefixes, or a user passed string as prefix
  • 1.5.8 - Upgrading dependencies D16376
  • 1.6.0 - Implement typescript D16744
  • 1.6.1 - Replace Buffer with Uint8Array and stop using webpack to build D17170
  • 1.6.2 - Lint to monorepo standards D17183

2.0.0 D17269

  • Remove all dependencies
  • Remove toLegacy. This is now available in ecash-lib
  • Remove chronikReady param and always return hash as a hex string
  • Remove support for uppercase address type inputs 'P2PKH' and 'P2SH'
  • New function getOutputScriptFromTypeAndHash
  • Remove validation against accepted prefix types