I used the request
library to manually retrieve information from the insight API. I also used the litecore-lib
library to create the transaction.
var Litecoin = require("litecore-lib");
var request = require("request");
//manually hit an insight api to retrieve utxos of address
function getUTXOs(address) {
return new Promise((resolve, reject) => {
request({
uri: 'https://insight.litecore.io/api/addr/' + address + '/utxo',
json: true
},
(error, response, body) => {
if(error) reject(error);
resolve(body)
}
)
})
}
//manually hit an insight api to broadcast your tx
function broadcastTX(rawtx) {
return new Promise((resolve, reject) => {
request({
uri: 'https://insight.litecore.io/tx/send',
method: 'POST',
json: {
rawtx
}
},
(error, response, body) => {
if(error) reject(error);
resolve(body.txid)
}
)
})
}
//your private key and address here
var privateKey = PrivateKey.fromWIF('YOUR_PRIVATE_KEY_HERE');
var address = privateKey.toPublicKey().toAddress();
getUTXOs(address)
.then((utxos) => {
let balance = 0;
for (var i = 0; i < utxos.length; i++) {
balance +=utxos[i]['satoshis'];
} //add up the balance in satoshi format from all utxos
var fee = 1500; //fee for the tx
var tx = new Litecoin.Transaction() //use litecore-lib to create a transaction
.from(utxos)
.to('TO_ADDRESS', balance - fee) //note: you are sending all your balance AKA sweeping
.fee(fee)
.sign(privateKey)
.serialize();
return broadcastTX(tx) //broadcast the serialized tx
})
.then((result) => {
console.log(result) // txid
})
.catch((error) => {
throw error;
})
Cheers!