UNPKG

escrow-bitcoin

Version:

A service to make possible escrow transactions using BTC (Bitcoin)

75 lines (68 loc) 2.38 kB
const bitcore = require("bitcore-lib"); /** * Gererate bitcoin address * * @param {Object|PrivateKey} [data] - Can be a JSON or PrivateKey * @returns Address */ function Address(data, network) { return new Promise(function (resolve, reject) { if (data instanceof bitcore.PrivateKey) { return resolve(this.generateFromPrivateKey(data, network)) } return resolve(this.generateFromJson(data, network)) }.bind(this)) } Address.prototype.generateFromPrivateKey = function generateFromPrivateKey(privateKey, network = bitcore.Networks.testnet) { var publicKey = new bitcore.PublicKey(privateKey); var address = new bitcore.Address(publicKey, network); return address; } Address.prototype.generateFromJson = function generateFromJson(json, network = bitcore.Networks.testnet) { var bn; if (json) { var jsonStr = JSON.stringify(json) var value = Buffer.from(jsonStr); var hash = bitcore.crypto.Hash.sha256(value); bn = bitcore.crypto.BN.fromBuffer(hash); } var privateKey = new bitcore.PrivateKey(bn, network) var publicKey = new bitcore.PublicKey(privateKey); var address = new bitcore.Address(publicKey, network); return address; } /** * * Create a new PrivateKey * * @param {Object} [data] - JSON data to create a private key (optional) * @returns PrivateKey */ Address.createPrivateKey = function createPrivateKey(data, network = bitcore.Networks.testnet) { var bn; if (data) { var jsonStr = JSON.stringify(data) var value = Buffer.from(jsonStr); var hash = bitcore.crypto.Hash.sha256(value); bn = bitcore.crypto.BN.fromBuffer(hash); } var privateKey = new bitcore.PrivateKey(bn, network) return privateKey; } /** * Create a URI from Address and amount in Bitcoins to deposit * * @param {Address} address - A valid Address * @param {number} amount - Number of amount to request (in satoshis) */ Address.requestPayment = function requestPayment(address, amount) { var paymentInfo = { address: address.toString(), amount: amount }; var uri = new bitcore.URI(paymentInfo).toString(); return uri; } //Exports PrivateKey Address.PrivateKey = bitcore.PrivateKey; module.exports = Address;