diff options
Diffstat (limited to 'includes/external/matrix/node_modules/base-x/README.md')
-rw-r--r-- | includes/external/matrix/node_modules/base-x/README.md | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/includes/external/matrix/node_modules/base-x/README.md b/includes/external/matrix/node_modules/base-x/README.md new file mode 100644 index 0000000..10faf66 --- /dev/null +++ b/includes/external/matrix/node_modules/base-x/README.md @@ -0,0 +1,73 @@ +# base-x + +[![NPM Package](https://img.shields.io/npm/v/base-x.svg?style=flat-square)](https://www.npmjs.org/package/base-x) +[![Build Status](https://img.shields.io/travis/cryptocoinjs/base-x.svg?branch=master&style=flat-square)](https://travis-ci.org/cryptocoinjs/base-x) + +[![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard) + +Fast base encoding / decoding of any given alphabet using bitcoin style leading +zero compression. + +**WARNING:** This module is **NOT RFC3548** compliant, it cannot be used for base16 (hex), base32, or base64 encoding in a standards compliant manner. + +## Example + +Base58 + +``` javascript +var BASE58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' +var bs58 = require('base-x')(BASE58) + +var decoded = bs58.decode('5Kd3NBUAdUnhyzenEwVLy9pBKxSwXvE9FMPyR4UKZvpe6E3AgLr') + +console.log(decoded) +// => Uint8Array(33) [ +// 128, 237, 219, 220, 17, 104, 241, 218, +// 234, 219, 211, 228, 76, 30, 63, 143, +// 90, 40, 76, 32, 41, 247, 138, 210, +// 106, 249, 133, 131, 164, 153, 222, 91, +// 25 +// ] + +console.log(bs58.encode(decoded)) +// => 5Kd3NBUAdUnhyzenEwVLy9pBKxSwXvE9FMPyR4UKZvpe6E3AgLr +``` + +### Alphabets + +See below for a list of commonly recognized alphabets, and their respective base. + +Base | Alphabet +------------- | ------------- +2 | `01` +8 | `01234567` +11 | `0123456789a` +16 | `0123456789abcdef` +32 | `0123456789ABCDEFGHJKMNPQRSTVWXYZ` +32 | `ybndrfg8ejkmcpqxot1uwisza345h769` (z-base-32) +36 | `0123456789abcdefghijklmnopqrstuvwxyz` +58 | `123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz` +62 | `0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ` +64 | `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/` +67 | `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.!~` + + +## How it works + +It encodes octet arrays by doing long divisions on all significant digits in the +array, creating a representation of that number in the new base. Then for every +leading zero in the input (not significant as a number) it will encode as a +single leader character. This is the first in the alphabet and will decode as 8 +bits. The other characters depend upon the base. For example, a base58 alphabet +packs roughly 5.858 bits per character. + +This means the encoded string 000f (using a base16, 0-f alphabet) will actually decode +to 4 bytes unlike a canonical hex encoding which uniformly packs 4 bits into each +character. + +While unusual, this does mean that no padding is required and it works for bases +like 43. + + +## LICENSE [MIT](LICENSE) +A direct derivation of the base58 implementation from [`bitcoin/bitcoin`](https://github.com/bitcoin/bitcoin/blob/f1e2f2a85962c1664e4e55471061af0eaa798d40/src/base58.cpp), generalized for variable length alphabets. |