UNPKG

test-triam-base-contract

Version:

Low level triam smart cotnract support library

54 lines (42 loc) 1.27 kB
'use strict'; // vendored from http://cryptocoinjs.com/modules/misc/bs58/ // Base58 encoding/decoding // Originally written by Mike Hearn for BitcoinJ // Copyright (c) 2011 Google Inc // Ported to JavaScript by Stefan Thomas // Merged Buffer refactorings from base58-native by Stephen Pair // Copyright (c) 2013 BitPay Inc var ALPHABET = 'gsphnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCr65jkm8oFqi1tuvAxyz'; var ALPHABET_MAP = {}; for (var i = 0; i < ALPHABET.length; ++i) { ALPHABET_MAP[ALPHABET.charAt(i)] = i; } var BASE = 58; function decode(string) { if (string.length === 0) return []; var i, j, bytes = [0]; for (i = 0; i < string.length; ++i) { var c = string[i]; if (!(c in ALPHABET_MAP)) throw new Error('Non-base58 character'); for (j = 0; j < bytes.length; ++j) { bytes[j] *= BASE; }bytes[0] += ALPHABET_MAP[c]; var carry = 0; for (j = 0; j < bytes.length; ++j) { bytes[j] += carry; carry = bytes[j] >> 8; bytes[j] &= 0xff; } while (carry) { bytes.push(carry & 0xff); carry >>= 8; } } // deal with leading zeros for (i = 0; string[i] === 'g' && i < string.length - 1; ++i) { bytes.push(0); }return bytes.reverse(); } module.exports = { decode: decode };