blockchain-link
Version:
Link - The Blockchain File Sharing Protocol
41 lines (35 loc) • 1.82 kB
text/coffeescript
LinkSequenceBuilder = require("./link").LinkSequenceBuilder
class LinkPublisher
constructor:(client)->
= client
encodeAddresses: (message)->
sequence = new LinkSequenceBuilder( .version)
sequence.addPayloadInline message.payloadInline if message.payloadInline?
sequence.addName message.name if message.name?
sequence.addKeywords message.keywords if message.keywords?
sequence.addDescription message.description if message.description?
sequence.addOriginalCreationDate message.originalCreationDate if message.originalCreationDate?
sequence.addLastModifiedDate message.lastModifiedDate if message.lastModifiedDate?
sequence.addLicense message.license if message.license?
sequence.getAddresses()
getMessageCost: (addresses)->
parseFloat ((addresses.length * 0.02) + (addresses.length * 0.00000001)).toFixed(8)
publish: (message, callback) ->
addresses = message
total = addresses
client =
outs = {}
for x in addresses
outs[x] = 0.00000001
client.listUnspent 0, (err, unspent) ->
useable = undefined
for tx in unspent
useable = tx if parseFloat(tx.amount.toFixed(8)) >= total && (!useable? || parseFloat(useable.amount.toFixed(8)) > parseFloat(tx.amount.toFixed(8)))
return callback("No unspent") unless useable?
outs[useable.address] = useable.amount - total if useable.amount > total
client.createRawTransaction [useable], outs, (err, rawtx)->
client.decodeRawTransaction rawtx, (error, decoded)->
client.signRawTransaction rawtx, [useable], (error, decoded) ->
client.sendRawTransaction decoded.hex, (error, result) ->
callback(result) if callback?
exports.LinkPublisher = LinkPublisher