What is bs58?
The bs58 npm package is a utility for encoding and decoding data in Base58, which is a binary-to-text encoding scheme. It is commonly used in cryptocurrency applications, particularly Bitcoin, for encoding addresses and other data in a compact, human-readable format.
What are bs58's main functionalities?
Encoding a Buffer to Base58
This feature allows you to encode a buffer of binary data into a Base58 string. The code sample demonstrates encoding the UTF-8 string 'Hello World' into Base58.
"use strict"; const bs58 = require('bs58'); const bytes = Buffer.from('Hello World', 'utf8'); const encoded = bs58.encode(bytes); console.log(encoded);
Decoding a Base58 String to a Buffer
This feature allows you to decode a Base58 string back into its original binary form, represented as a Buffer. The code sample demonstrates decoding a Base58 string back into the original UTF-8 string.
"use strict"; const bs58 = require('bs58'); const encoded = 'JxF12TrwUP45BMd'; const bytes = bs58.decode(encoded); console.log(bytes.toString('utf8'));
Other packages similar to bs58
base-x
The base-x package is a general-purpose base encoding/decoding library that supports multiple bases, such as Base58, Base64, etc. It is more flexible than bs58 as it can handle a variety of encodings, but it might be slightly more complex to use for Base58 specifically.
base58check
The base58check package is similar to bs58 but includes additional functionality for adding and verifying checksums, which is a common requirement in Bitcoin address encoding. This makes it more suitable for applications that require checksum validation.
bs58
JavaScript component to compute base 58 encoding. This encoding is typically used for crypto currencies such as Bitcoin.
Note: If you're looking for base 58 check encoding, see: https://github.com/bitcoinjs/bs58check, which depends upon this library.
Install
npm i --save bs58
API
encode(input)
input
must be a Uint8Array
, Buffer
, or an Array
. It returns a string
.
example:
import bs58 from 'bs58'
const bytes = Uint8Array.from([
0, 60, 23, 110, 101, 155, 234,
15, 41, 163, 233, 191, 120, 128,
193, 18, 177, 179, 27, 77, 200,
38, 38, 129, 135
])
const address = bs58.encode(bytes)
console.log(address)
decode(input)
input
must be a base 58 encoded string. Returns a Uint8Array.
example:
import bs58 from 'bs58'
const address = '16UjcYNBG9GTK4uq2f7yYEbuifqCzoLMGS'
const bytes = bs58.decode(address)
console.log(Buffer.from(bytes).toString('hex'))
Browser
You can use this module in the browser. Install Browserify:
npm install -g browserify
then run:
browserify node_modules/bs58/cjs/index.cjs -o bs58.bundle.js --standalone bs58
Hack / Test
Uses JavaScript standard style. Read more:
Credits
License
MIT