UNPKG

biot-core

Version:

```sh $ npm install $ cd examples $ node balance.js ```

48 lines (40 loc) 2.25 kB
const Bitcore = require('bitcore-lib'); const toEs6 = require('./toEs6'); const db = require('ocore/db'); function createWallet(xPrivKey, account) { return new Promise(resolve => { let devicePrivKey = xPrivKey.derive("m/1'").privateKey.bn.toBuffer({size: 32}); let device = require('ocore/device.js'); device.setDevicePrivateKey(devicePrivKey); // we need device address before creating a wallet let strXPubKey = Bitcore.HDPublicKey(xPrivKey.derive("m/44'/0'/" + account + "'")).toString(); let walletDefinedByKeys = require('ocore/wallet_defined_by_keys.js'); // we pass isSingleAddress=false because this flag is meant to be forwarded to cosigners and headless wallet doesn't support multidevice walletDefinedByKeys.createWalletByDevices(strXPubKey, account, 1, [], 'any walletName', false, (wallet_id) => { walletDefinedByKeys.issueNextAddress(wallet_id, 0, () => { return resolve(wallet_id); }); }); }); } async function getWalletFromDB(walletId) { let walletRows = await toEs6.dbQuery("SELECT wallet, account, definition_template FROM wallets WHERE wallet = ?", [walletId]); let signingPathRows = await toEs6.dbQuery("SELECT wallet, signing_path, device_address FROM wallet_signing_paths WHERE wallet = ?", [walletId]); if (walletRows.length && signingPathRows.length) { return {wallet: walletRows[0], signingPath: signingPathRows[0]}; } else { return {}; } } async function addIfNotExistRemoteWallet(objWalletRows) { let wallet = objWalletRows.wallet; let signingPath = objWalletRows.signingPath; await toEs6.dbQuery("INSERT " + db.getIgnore() + " INTO wallets (wallet, account, definition_template, full_approval_date, ready_date) VALUES \n\ (?,?,?, " + db.getNow() + ", " + db.getNow() + ")", [wallet.wallet, wallet.account, wallet.definition_template]); await toEs6.dbQuery("INSERT " + db.getIgnore() + " INTO wallet_signing_paths (wallet, signing_path, device_address) VALUES (?,?,?)", [signingPath.wallet, signingPath.signing_path, signingPath.device_address]); return Promise.resolve(); } exports.createWallet = createWallet; exports.getWalletFromDB = getWalletFromDB; exports.addIfNotExistRemoteWallet = addIfNotExistRemoteWallet;