ecashaddrjs
v2.0.0
Published
eCash cashaddr address format support for Node.js and web browsers.
Downloads
7,523
Maintainers
Readme
eCashAddr.js: The eCash address format for Node.js and web browsers.
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 inpackage.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
andP2PKH
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 bothundefined
or explicitfalse
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
withUint8Array
and stop usingwebpack
to build D17170 - 1.6.2 - Lint to monorepo standards D17183
2.0.0 D17269
- Remove all dependencies
- Remove
toLegacy
. This is now available inecash-lib
- Remove
chronikReady
param and always returnhash
as a hex string - Remove support for uppercase address type inputs 'P2PKH' and 'P2SH'
- New function
getOutputScriptFromTypeAndHash
- Remove validation against accepted prefix types