Skip to content

Latest commit

History

42 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

x-address-codec_ext NPMBuild Statuscodecov.io

This is a meta package, that exposes an api factory. It's really not as boring as it sounds. We only ask you bring your own hash (create-hash, crypto) to the party, as we already provide a free base-x codec for your heavy lifting pleasure.

What, what? This does what exactly ?

At the party, mostly people just stand around and encode/decode crypto coin address strings to bytes and back. Thrilling right?

Alphabet Soup

We currently serve these alphabets. Make a pull request if you'd like to add one to the menu.

  • ripple
  • tipple
  • bitcoin
  • stellar
  • chainsql

API

varapiFactory=require('../');varcreateHash=require('create-hash');varapi=apiFactory({// We probably have your favorite alphabet, if not, contact usdefaultAlphabet: 'stellar',// But we insist you bring your own hash to the party :)sha256: function(bytes){returncreateHash('sha256').update(newBuffer(bytes)).digest();},// We'll endow your api with encode|decode* for youcodecMethods : {// public keysAccountID : {version: 0x00},// secretsSeed: {version: 0x21}},// Why the hell don't we just export these versions too?// Err.. Shutup :) We're getting to it.});varbuf=newBuffer("00000000000000000000000000000000",'hex');// It can encode a Buffervarencoded=api.encodeSeed(buf);// It returns Array<Number>vardecoded=api.decodeSeed(encoded);// It can of course encode an Array<Number> toovarreencoded=api.encodeSeed(decoded)console.log(encoded);console.log(reencoded);// ps6JS7f14BuwFY8Mw6bTtLKWauoUp// ps6JS7f14BuwFY8Mw6bTtLKWauoUpconsole.log(decoded);// [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]

We could actually encode the seed as a ripple one if we chose :)

console.log(api.encode(decoded,{alphabet: 'ripple',version: 33}));// sp6JS7f14BuwFY8Mw6bTtLKWauoUs

Wait, what if we wanted to create a prefix for the new nifty spaceMan secrets?

varprefix=api.codecs.stellar.findPrefix(16/* bytes */,'spaceMan');varspacey=api.encode(decoded,{version: prefix});console.log(spacey);// spaceMan7qBfYEUBHSWDsZjJHctnNQi2pCTnconsole.log(api.decode(spacey,{version: prefix}));// [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]

You may as well make a little mini module, and export it :)

module.exports=api;

Hell, you could even npm publish it :)

$ npm publish

Anway, what is actually exported here?

console.log(api)/*{ Codec: [Function: AddressCodec], codecs: { bitcoin: { alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', codec: [Object], base: 58 }, ripple: { alphabet: 'rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz', codec: [Object], base: 58 }, tipple: { alphabet: 'RPShNAF39wBUDnEGHJKLM4pQrsT7VWXYZ2bcdeCg65jkm8ofqi1tuvaxyz', codec: [Object], base: 58 }, stellar: { alphabet: 'gsphnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCr65jkm8oFqi1tuvAxyz', codec: [Object], base: 58 }}, decode: [Function: decode], encode: [Function: encode], decodeAccountID: [Function], encodeAccountID: [Function], decodeSeed: [Function], encodeSeed: [Function] }*/

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages