UNPKG

@bpanel/bpanel-utils

Version:
228 lines (187 loc) 4.62 kB
'use strict'; exports.__esModule = true; exports.primitives = undefined; exports.toMTX = toMTX; exports.toTX = toTX; exports.toAddress = toAddress; exports.toKeyRing = toKeyRing; exports.toHDPublicKey = toHDPublicKey; var _bsert = require('bsert'); var _bsert2 = _interopRequireDefault(_bsert); var _bcoin = require('bcoin'); var _bcash = require('bcash'); var _hsd = require('hsd'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* * an object is created for each primitive * that is keyed by the name of the blockchain */ var MTX = { bitcoin: _bcoin.MTX, bitcoincash: _bcash.MTX, handshake: _hsd.MTX }; /* * manages mappings between primitives * such that applications can live switch between * different blockchains * */ var TX = { bitcoin: _bcoin.TX, bitcoincash: _bcash.TX, handshake: _hsd.TX }; var Address = { bitcoin: _bcoin.Address, bitcoincash: _bcash.Address, handshake: _hsd.Address }; var KeyRing = { bitcoin: _bcoin.KeyRing, bitcoincash: _bcash.KeyRing, handshake: _hsd.KeyRing }; var HDPublicKey = { bitcoin: _bcoin.HDPublicKey, bitcoincash: _bcash.HDPublicKey, handshake: _hsd.HDPublicKey }; // export an object of all // of the primities var primitives = exports.primitives = { HDPublicKey: HDPublicKey, MTX: MTX, TX: TX, KeyRing: KeyRing, Address: Address }; /* * create MTX object * @param {Object} tx * @param {Object} options * @param {String} options.type * select how to instantiate primitive * ie, fromRaw, fromJSON etc * @param {String} options.chain * blockchain name */ function toMTX(tx, options) { var type = options.type, chain = options.chain; (0, _bsert2.default)(type); (0, _bsert2.default)(chain); switch (type) { case 'raw': return MTX[chain].fromRaw(tx.hex, 'hex'); case 'json': return MTX[chain].fromJSON(tx); default: return null; } } /* * create TX object * @param {Object} tx * @param {Object} options * @param {String} options.type * select how to instantiate primitive * ie, fromRaw, fromJSON etc * @param {String} options.chain * blockchain name */ function toTX(tx, options) { var type = options.type, chain = options.chain; (0, _bsert2.default)(type); (0, _bsert2.default)(chain); switch (type) { case 'raw': return TX[chain].fromRaw(tx.hex, 'hex'); case 'json': return TX[chain].fromJSON(tx); case 'options': return TX[chain].fromOptions(tx); default: return null; } } /* * create Address object * @param {string} address * @param {Object} options * @param {String} options.type * select how to instantiate primitive * ie fromRaw, fromJSON etc * @param {String} options.chain * blockchain name * @param {String} options.network * blockchain network * ie main, testnet, regtest */ function toAddress(address, options) { var type = options.type, chain = options.chain, network = options.network; switch (type) { case 'string': return Address[chain].fromString(address, network); case 'options': return Address[chain].fromOptions(options); default: return null; } } /* * create Keyring object * @param {string} key * @param {Object} options * @param {String} options.type * select how to instantiate primitive * ie fromRaw, fromJSON etc * @param {String} options.chain * blockchain name * @param {String} options.network * blockchain network * ie main, testnet, regtest */ function toKeyRing(key, options) { var type = options.type, chain = options.chain, network = options.network, compress = options.compress; switch (type) { case 'public': return KeyRing[chain].fromPublic(key, network); case 'private': return KeyRing[chain].fromPrivate(key, compress); case 'options': return KeyRing[chain].fromOptions(options); default: return null; } } /* * create HDPublicKey object * @param {Object} options * @param {String} options.type * select how to instantiate primitive * ie fromRaw, fromJSON etc * @param {String} options.chain * blockchain name * @param {String} options.network * blockchain network * ie main, testnet, regtest */ function toHDPublicKey(options) { var type = options.type, chain = options.chain, xpubkey = options.xpubkey, network = options.network; switch (type) { case 'base58': return HDPublicKey[chain].fromBase58(xpubkey, network); default: return null; } }