Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
utils.sharedEncryptionKey = function (aPriv, bPub, cb) {
// TODO: unhardcode network
if (typeof aPriv !== 'string') aPriv = aPriv.toWIF(bitcoin.networks.testnet)
if (typeof bPub !== 'string') bPub = bPub.toHex()
var key = aPriv + bPub
var cached = ecdhCache.get(key)
if (!cb) {
if (!cached) {
cached = sharedEncryptionKey.apply(this, arguments)
ecdhCache.set(key, cached)
}
return cached
}
if (cached) return cb(null, cached)
sharedEncryptionKey.call(utils, aPriv, bPub, function (err, result) {
const unspents = []
opts.unspents.forEach(({ address, amounts }) => {
const tx = fund(address, amounts)
tx.outs.forEach(function (o, i) {
unspents.push({
txId: tx.getId(),
confirmations: 6,
address,
value: o.value,
vout: i
})
})
})
const fakechain = createFakeChain({
network: bitcoin.networks[network.name],
unspents,
blocktime
})
const wrapper = utils.extend(new EventEmitter(), network.wrapCommonBlockchain(fakechain))
fakechain.on('block', block => wrapper.emit('block', block))
return wrapper
}
function fund (address, amounts) {
const prevTx = new bitcoin.Transaction()
prevTx.addInput(new bitcoin.Transaction(), 0)
amounts.forEach(function (amount) {
prevTx.addOutput(address.toString(), amount)
})
return prevTx
}
function fund (address, amounts) {
const prevTx = new bitcoin.Transaction()
prevTx.addInput(new bitcoin.Transaction(), 0)
amounts.forEach(function (amount) {
prevTx.addOutput(address.toString(), amount)
})
return prevTx
}
function addFakeBlock (blocks) {
const b = new bitcoin.Block()
if (blocks.length) {
b.prevHash = blocks[blocks.length - 1].getHash()
} else {
b.prevHash = crypto.randomBytes(32)
}
b.merkleRoot = crypto.randomBytes(32)
b.timestamp = Date.now() / 1000
b.bits = Math.random() * 100000000 | 0
b.nonce = Math.random() * 100000000 | 0
b.height = b.blockHeight = blocks.length
b.transactions = []
blocks.push(b)
return b
}
function getAddressFromInput (input, network) {
const pubKeyBuf = input.script.chunks[1]
const pub = bitcoin.ECPubKey.fromBuffer(pubKeyBuf)
return pub.getAddress(network).toString()
}
function getAddressFromOutput (output, network) {
if (bitcoin.scripts.classifyOutput(output.script) === 'pubkeyhash') {
return bitcoin.Address
.fromOutputScript(output.script, network)
.toString()
}
}
function getAddressFromOutput (output, network) {
if (bitcoin.scripts.classifyOutput(output.script) === 'pubkeyhash') {
return bitcoin.Address
.fromOutputScript(output.script, network)
.toString()
}
}
var Q = require('q')
var bitcoin = require('@tradle/bitcoinjs-lib')
var ECPubKey = bitcoin.ECPubKey
var Keys = require('@tradle/kiki').Keys
var ECKey = bitcoin.ECKey
var Cache = require('lru-cache')
var EllipticKeyPair = require('elliptic/lib/elliptic/ec/key')
var utils = require('@tradle/utils')
var extend = require('xtend')
var Driver = require('../')
var enabled = false
var ID = 0
var UINT16 = 0xffff;
var getNextId = function () {
return (ID++) & UINT16
}
function enable () {
if (enabled) return
var Q = require('q')
var bitcoin = require('@tradle/bitcoinjs-lib')
var ECPubKey = bitcoin.ECPubKey
var Keys = require('@tradle/kiki').Keys
var ECKey = bitcoin.ECKey
var Cache = require('lru-cache')
var EllipticKeyPair = require('elliptic/lib/elliptic/ec/key')
var utils = require('@tradle/utils')
var extend = require('xtend')
var Driver = require('../')
var enabled = false
var ID = 0
var UINT16 = 0xffff;
var getNextId = function () {
return (ID++) & UINT16
}
function enable () {
if (enabled) return
enabled = true