blockchain-link
Version:
Link - The Blockchain File Sharing Protocol
85 lines (76 loc) • 2.85 kB
JavaScript
// Generated by CoffeeScript 1.6.3
(function() {
var LinkSequenceBuilder, LinkSequenceDecoder, bitcoin, client, readline, rl;
readline = require("readline");
LinkSequenceBuilder = require("./link").LinkSequenceBuilder;
LinkSequenceDecoder = require("./link").LinkSequenceDecoder;
bitcoin = require("bitcoin");
client = new bitcoin.Client({
host: 'localhost',
port: 8332,
user: 'Kevlar',
pass: 'zabbas'
});
rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("Payload: ", function(magnet) {
return rl.question("Name: ", function(name) {
return rl.question("Keywords: ", function(keywords) {
var addresses, decoder, error, errors, fee, sequence, total, x, _i, _j, _len, _len1;
sequence = new LinkSequenceBuilder();
sequence.addPayloadInline(magnet);
sequence.addName(name);
sequence.addKeywords(keywords);
addresses = sequence.getAddresses(14);
decoder = new LinkSequenceDecoder(addresses);
errors = decoder.verify();
if (errors.length > 0) {
for (_i = 0, _len = errors.length; _i < _len; _i++) {
error = errors[_i];
console.log(error);
}
}
console.log(decoder.payloadInline);
console.log(decoder.name);
console.log(decoder.keywords);
this.outs = {};
for (_j = 0, _len1 = addresses.length; _j < _len1; _j++) {
x = addresses[_j];
this.outs[x] = 0.00000001;
}
fee = 0.1;
total = addresses.length * 0.00000001;
client.listUnspent(0, function(err, unspent) {
var tx, _k, _len2;
this.useable = void 0;
for (_k = 0, _len2 = unspent.length; _k < _len2; _k++) {
tx = unspent[_k];
if (tx.amount > 0) {
this.useable = tx;
}
if (typeof useable === "undefined" || useable === null) {
return console.log("No unspent");
}
}
console.log(this.useable.amount);
outs[this.useable.address] = this.useable.amount - total;
return client.createRawTransaction([this.useable], this.outs, function(err, rawtx) {
console.log("rawtx: " + rawtx);
return client.decodeRawTransaction(rawtx, function(error, decoded) {
console.log(JSON.stringify(decoded));
return client.signRawTransaction(rawtx, [this.useable], function(error, decoded) {
console.log(decoded);
return client.sendRawTransaction(decoded.hex, function(error, result) {
return console.log(result);
});
});
});
});
});
return rl.close();
});
});
});
}).call(this);