escrow-bitcoin
Version:
A service to make possible escrow transactions using BTC (Bitcoin)
75 lines (68 loc) • 2.38 kB
JavaScript
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;