bitcoinjs-lib/test/integration/_regtest.js

92 lines
2 KiB
JavaScript
Raw Normal View History

2018-06-25 08:25:12 +02:00
const assert = require('assert')
const bitcoin = require('../../')
const dhttp = require('dhttp/200')
2018-06-25 08:25:12 +02:00
const APIPASS = process.env.APIPASS || 'satoshi'
const APIURL = 'https://api.dcousens.cloud/1'
function broadcast (txHex, callback) {
dhttp({
method: 'PUT',
url: APIURL + '/t/push',
body: txHex
}, callback)
}
function mine (count, callback) {
dhttp({
method: 'POST',
url: APIURL + '/r/generate?count=' + count + '&key=' + APIPASS
}, callback)
}
2018-02-01 02:54:20 +01:00
function height (callback) {
dhttp({
method: 'GET',
url: APIURL + '/b/best/height'
}, callback)
}
function faucet (address, value, callback) {
dhttp({
method: 'POST',
url: APIURL + '/r/faucet?address=' + address + '&value=' + value + '&key=' + APIPASS
}, function (err, txId) {
if (err) return callback(err)
unspents(address, function (err, results) {
if (err) return callback(err)
callback(null, results.filter(x => x.txId === txId).pop())
})
})
}
function fetch (txId, callback) {
dhttp({
method: 'GET',
url: APIURL + '/t/' + txId + '/json'
}, callback)
}
function unspents (address, callback) {
dhttp({
method: 'GET',
url: APIURL + '/a/' + address + '/unspents'
}, callback)
}
function verify (txo, callback) {
fetch(txo.txId, function (err, tx) {
if (err) return callback(err)
const txoActual = tx.outs[txo.vout]
if (txo.address) assert.strictEqual(txoActual.address, txo.address)
if (txo.value) assert.strictEqual(txoActual.value, txo.value)
callback()
})
}
2018-05-22 09:43:25 +02:00
function getAddress (node, network) {
2018-06-27 05:54:47 +02:00
return bitcoin.payments.p2pkh({ pubkey: node.publicKey, network }).address
2018-05-22 09:43:25 +02:00
}
function randomAddress () {
2018-05-22 09:43:25 +02:00
return getAddress(bitcoin.ECPair.makeRandom({
network: bitcoin.networks.testnet
2018-05-22 09:43:25 +02:00
}), bitcoin.networks.testnet)
}
module.exports = {
broadcast: broadcast,
faucet: faucet,
fetch: fetch,
2018-02-01 02:54:20 +01:00
height: height,
mine: mine,
network: bitcoin.networks.testnet,
unspents: unspents,
verify: verify,
randomAddress: randomAddress,
RANDOM_ADDRESS: randomAddress()
}