Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
it('should return valid tx hex for RBF-able segwit transactions', function (done) {
let signer = require('../../models/signer')
let utxos = [{ txid: '1e1a8cced5580eecd0ac15845fc3adfafbb0f5944a54950e4a16b8f6d1e9b715', vout: 1, address: '3Bsssbs4ANCGNETvGLJ3Fvri6SiVnH1fbi', account: '3Bsssbs4ANCGNETvGLJ3Fvri6SiVnH1fbi', scriptPubKey: 'a9146fbf1cee74734503297e46a0db3e3fbb06f2e9d387', amount: 0.1, confirmations: 108, spendable: false, solvable: false, safe: true }]
let txhex = signer.createSegwitTransaction(utxos, '1Pb81K1xJnMjUfFgKUbva6gr1HCHXxHVnr', 0.001, 0.0001, 'KyWpryAKPiXXbipxWhtprZjSLVjp22sxbVnJssq2TCNQxs1SuMeD', '3Bsssbs4ANCGNETvGLJ3Fvri6SiVnH1fbi', 0)
assert.equal(txhex, '0100000000010115b7e9d1f6b8164a0e95544a94f5b0fbfaadc35f8415acd0ec0e58d5ce8c1a1e0100000017160014f90e5bca5635b84bd828064586bd7eb117fee9a90000000002905f0100000000001976a914f7c6c1f9f6142107ed293c8fbf85fbc49eb5f1b988ace00f97000000000017a9146fbf1cee74734503297e46a0db3e3fbb06f2e9d38702483045022100bd687693e57161282a80affb82f18386cbf319bca72ca2c16320b0f3b087bee802205e22a9a16b86628ea08eab83aebec1348c476e9d0c90cd41aa73c47f50d86aab0121039425479ea581ebc7f55959da8c2e1a1063491768860386335dd4630b5eeacfc500000000')
// now, testing change addess, destination address, amounts & fees...
let tx = bitcoinjs.Transaction.fromHex(txhex)
assert.equal(bitcoinjs.address.fromOutputScript(tx.outs[0].script), '1Pb81K1xJnMjUfFgKUbva6gr1HCHXxHVnr')
assert.equal(bitcoinjs.address.fromOutputScript(tx.outs[1].script), '3Bsssbs4ANCGNETvGLJ3Fvri6SiVnH1fbi')
assert.equal(tx.outs[0].value, 90000) // 0.0009 because we deducted fee 0.0001
assert.equal(tx.outs[1].value, 9900000) // 0.099 because 0.1 - 0.001
done()
})
.then(([estimatedCost, hexTX]) => {
const tx = btc.Transaction.fromHex(hexTX)
const txLen = hexTX.length / 2
const outputVals = sumOutputValues(tx)
const inputVals = getInputVals(tx)
const fee = inputVals - outputVals
// change address is the 3rd output usually...
const change = tx.outs[2].value
t.equal(btc.address.fromOutputScript(tx.outs[2].script), testAddresses[1].address,
'Payer change should be third output')
t.equal(inputVals - change, estimatedCost, 'Estimated cost should match actual.')
t.equal(tx.ins.length, 2, 'Should use both payer utxos')
t.equal(Math.floor(fee / txLen), 1000,
`Paid fee of ${fee} for tx of length ${txLen} should equal 1k satoshi/byte`)
})
.catch((err) => { console.log(err.stack); throw err })
var Gx = new BigInteger('1');
var Gy = new BigInteger('1');
var n = new BigInteger('1');
var h = new BigInteger('1');
var p: Point = new Curve(pi, a, b, Gx, Gy, n, h).G;
(new ECPair(b): ECPair);
(new ECPair(null, p): ECPair);
// $ExpectError
(new ECPair(new Buffer(1)): ECPair);
// $ExpectError
(new ECPair(null, new Buffer(1)): ECPair);
// $ExpectError
(ECPair(new Buffer(1)): ECPair);
(ECPair.fromPublicKeyBuffer(new Buffer(1)): ECPair);
var pair = ECPair.makeRandom();
(pair.verify(new Buffer(1), new ECSignature(new BigInteger('1'), new BigInteger('1'))): boolean);
// $ExpectError
(pair.verify(new Buffer(1)): boolean);
// $ExpectError
(pair.verify(new Buffer(1), new Buffer(1)): boolean);
(new HDNode(pair, new Buffer(1)): HDNode);
// $ExpectError
(new HDNode(pair): HDNode);
(new HDNode(pair): HDNode);
var bitcoinNetwork = {
messagePrefix: '\x18Bitcoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4
},
pubKeyHash: 0x00,
scriptHash: 0x05,
wif: 0x80,
dustThreshold: 546
};
(HDNode.fromBase58('xpub123'): HDNode);
(HDNode.fromBase58('xpub123', bitcoinNetwork): HDNode);
// $ExpectError
(HDNode.fromBase58(new Buffer(1)): HDNode);
(HDNode.fromBase58('xpub123', bitcoinNetwork).getAddress(): string);
var t: Transaction = Transaction.fromHex('1234');
var input = {
script: new Buffer(1),
hash: new Buffer(1),
index: 1,
sequence: 1
};
t.ins.push(input);
messagePrefix: '\x18Bitcoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4
},
pubKeyHash: 0x00,
scriptHash: 0x05,
wif: 0x80,
dustThreshold: 546
};
(HDNode.fromBase58('xpub123'): HDNode);
(HDNode.fromBase58('xpub123', bitcoinNetwork): HDNode);
// $ExpectError
(HDNode.fromBase58(new Buffer(1)): HDNode);
(HDNode.fromBase58('xpub123', bitcoinNetwork).getAddress(): string);
var t: Transaction = Transaction.fromHex('1234');
var input = {
script: new Buffer(1),
hash: new Buffer(1),
index: 1,
sequence: 1
};
t.ins.push(input);
// $ExpectError
t.addInput(input);
public: 0x0488b21e,
private: 0x0488ade4
},
pubKeyHash: 0x00,
scriptHash: 0x05,
wif: 0x80,
dustThreshold: 546
};
(HDNode.fromBase58('xpub123'): HDNode);
(HDNode.fromBase58('xpub123', bitcoinNetwork): HDNode);
// $ExpectError
(HDNode.fromBase58(new Buffer(1)): HDNode);
(HDNode.fromBase58('xpub123', bitcoinNetwork).getAddress(): string);
var t: Transaction = Transaction.fromHex('1234');
var input = {
script: new Buffer(1),
hash: new Buffer(1),
index: 1,
sequence: 1
};
t.ins.push(input);
// $ExpectError
t.addInput(input);
t.addInput(new Buffer(1), 1);
// $ExpectError
(new HDNode(pair): HDNode);
var bitcoinNetwork = {
messagePrefix: '\x18Bitcoin Signed Message:\n',
bip32: {
public: 0x0488b21e,
private: 0x0488ade4
},
pubKeyHash: 0x00,
scriptHash: 0x05,
wif: 0x80,
dustThreshold: 546
};
(HDNode.fromBase58('xpub123'): HDNode);
(HDNode.fromBase58('xpub123', bitcoinNetwork): HDNode);
// $ExpectError
(HDNode.fromBase58(new Buffer(1)): HDNode);
(HDNode.fromBase58('xpub123', bitcoinNetwork).getAddress(): string);
var t: Transaction = Transaction.fromHex('1234');
var input = {
script: new Buffer(1),
hash: new Buffer(1),
index: 1,
sequence: 1
};
t.ins.push(input);
var crypto = require('crypto');
var bitcoin = require("bitcoinjs-lib")
var helloblock = require('helloblock-js')({
network: 'testnet'
})
// placeholder! this is just some op_return sample code from helloblock-js
function done(err)
{
if(err) console.log("ERR",err);
process.exit(0);
}
var key = bitcoin.ECKey.fromWIF("L1uyy5qTuGrVXrmrsvHWHgVzW9kKdrp27wBC7Vs6nZDTF2BRUVwy")
var address = key.pub.getAddress(bitcoin.networks.testnet).toString()
helloblock.faucet.withdraw(address, 2e4, function(err) {
if (err) return done(err)
helloblock.addresses.getUnspents(address, function(err, _, unspents) {
if (err) return done(err)
// filter small unspents
unspents = unspents.filter(function(unspent) { return unspent.value > 1e4 })
// use the oldest unspent
var unspent = unspents.pop();
// helloblock.transactions.get(unspent.txHash, function(err, res, transaction) {
// if (err) return done(err)
// console.log("unspent",unspent,transaction);
// });
/* jshint -W101 */
var blocktrail = require('../'); // require('blocktrail-sdk') when trying example from in your own project
var bitcoin = require('bitcoinjs-lib');
var client = blocktrail.BlocktrailSDK({
apiKey : "YOUR_APIKEY_HERE",
apiSecret : "YOUR_APISECRET_HERE",
testnet : true
});
/*
* this example is for when you're storing the primary private and backup public key yourself
*/
var primaryPrivateKey = bitcoin.HDNode.fromBase58("tprv8ZgxMBicQKsPdMD2AYgpezVQZNi5kxsRJDpQWc5E9mxp747KgzekJbCkvhqv6sBTDErTjkWqZdY14rLP1YL3cJawEtEp2dufHxPhr1YUoeS", bitcoin.networks.testnet);
var backupPublicKey = bitcoin.HDNode.fromBase58("tpubD6NzVbkrYhZ4Y6Ny2VF2o5wkBGuZLQAsGPn88Y4JzKZH9siB85txQyYq3sDjRBFwnE1YhdthmHWWAurJu7EetmdeJH9M5jz3Chk7Ymw2oyf", bitcoin.networks.testnet);
var sendTransaction = function(wallet) {
wallet.getNewAddress(function(err, address, path) {
if (err) {
return console.log("getNewAddress ERR", err);
}
console.log('new address', address, path);
var pay = {};
pay[address] = blocktrail.toSatoshi(0.001);
wallet.pay(pay, function(err, result) {
if (err) {
return console.log("pay ERR", err);
// Prepare transaction
const tx = txb.buildIncomplete()
// Prepare signature hash
const sigHash = bitcoin.Transaction.SIGHASH_ALL
signatureHash = tx.hashForWitnessV0(0, Buffer.from(WITNESS_SCRIPT, 'hex'), 12e2, sigHash)
console.log('Signature hash:')
console.log(signatureHash.toString('hex'))
console.log()
// Happy case: Swap Provider is able to spend the P2WSH
const witnessStackClaimBranch = bitcoin.payments.p2wsh({
redeem: {
input: bitcoin.script.compile([
bitcoin.script.signature.encode(keyPairSwapProvider.sign(signatureHash), sigHash),
Buffer.from(PREIMAGE, 'hex')
]),
output: Buffer.from(WITNESS_SCRIPT, 'hex')
}
}).witness
console.log('Happy case witness stack:')
console.log(witnessStackClaimBranch.map(x => x.toString('hex')))
console.log()
// Failure case: User ask a refund after the timelock has expired
const witnessStackRefundBranch = bitcoin.payments.p2wsh({
redeem: {
input: bitcoin.script.compile([
bitcoin.script.signature.encode(keyPairUser.sign(signatureHash), sigHash),
Buffer.from(PREIMAGE, 'hex')
]),