const fs = require('fs')
const bsv = require('bsv')
// Random key produced each time...
const newKey = bsv.PrivateKey()
console.log(`Private key: ${newKey.toString()}`)
console.log(`Mainnet address: ${newKey.toAddress('mainnet').toString()}`)
console.log(`
1. Create a funding transaction by sending 1000 satoshis (0.00001 BSV) to ${newKey.toAddress('mainnet').toString()}.
2. Add your Taal apiKey, and funding transaction txid and vout to 'generated.js'.
3. Execute the generated code:
node generated.js
`)
fs.writeFileSync('generated.js', `
const bsv = require('bsv')
var request = require('request')
const privKey = bsv.PrivateKey('${newKey}')
const apiKey = "" // Add Taal mainnet API Key
const fundingTxid = "" // Add the funding transaction txid
const fundingVout = -1 // Replace with funding transaction vout
const returnAddress = "" // The address to return the 1000 satoshis (less fees)
if (apiKey === "" || fundingTxid === "" || fundingVout === -1 || returnAddress === "") {
console.log('This generated file needs an apiKey, a fundingTxid, a fundingVout and a returnAddress')
process.exit(1)
}
const utxo1 = {
txId: fundingTxid,
outputIndex: fundingVout,
address: privKey.toAddress('mainnet').toString(),
script: bsv.Script.buildPublicKeyHashOut(privKey.publicKey).toHex(),
satoshis: 1000
}
const tx1 = bsv.Transaction()
.from(utxo1)
.to(privKey.toAddress('mainnet').toString(), 800)
.change(returnAddress)
.sign(privKey)
const utxo2 = {
txId: tx1.hash,
outputIndex: 0,
address: privKey.toAddress('mainnet').toString(),
script: bsv.Script.buildPublicKeyHashOut(privKey.publicKey).toHex(),
satoshis: 800
}
const tx2 = bsv.Transaction()
.from(utxo2)
.change(returnAddress)
.sign(privKey)
const txBuffer = Buffer.concat([
tx1.toBuffer(),
tx2.toBuffer()
])
// Send the transaction to Taal API...
request.post({
url: 'https://api.taal.com/api/v1/batchBroadcast',
headers: {
'Authorization': apiKey,
'Content-Type': 'application/octet-stream'
},
body: txBuffer
}, function(error, response, body) {
console.log(error, response.statusCode, body)
})
`)