diff options
| author | Adam Soltys <[email protected]> | 2020-02-29 17:59:06 -0500 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2020-02-29 17:59:06 -0500 |
| commit | 49ea9a18972f4847fc13c0f7af9b40c62cfc3d5a (patch) | |
| tree | 13a7fd6f9174adb2d8b64ce2179844d7a62b9615 /sendPayment.js | |
| parent | 77158ce5f155b90a67c28489202330cef5efd1f4 (diff) | |
| download | coinos-server-49ea9a18972f4847fc13c0f7af9b40c62cfc3d5a.tar.gz coinos-server-49ea9a18972f4847fc13c0f7af9b40c62cfc3d5a.zip | |
lnrpc woes
Diffstat (limited to 'sendPayment.js')
| -rw-r--r-- | sendPayment.js | 86 |
1 files changed, 51 insertions, 35 deletions
diff --git a/sendPayment.js b/sendPayment.js index 1bc8b99a..ef90f8bb 100644 --- a/sendPayment.js +++ b/sendPayment.js @@ -3,6 +3,21 @@ const config = require("./config"); const l = console.log; +var fs = require('fs'); +var grpc = require('grpc'); +var lnrpc = grpc.load('/root/grpc/rpc.proto').lnrpc; +process.env.GRPC_SSL_CIPHER_SUITES = 'HIGH+ECDSA' +var lndCert = fs.readFileSync('/root/.lnda/tls.cert'); +var sslCreds = grpc.credentials.createSsl(lndCert); +var macaroonCreds = grpc.credentials.createFromMetadataGenerator(function(args, callback) { + var macaroon = fs.readFileSync("/root/.lnda/data/chain/bitcoin/mainnet/admin.macaroon").toString('hex'); + var metadata = new grpc.Metadata() + metadata.add('macaroon', macaroon); + callback(null, metadata); + }); +var creds = grpc.credentials.combineChannelCredentials(sslCreds, macaroonCreds); +var lightning = new lnrpc.Lightning('localhost:10001', creds); + module.exports = (app, db, emit, seen, lna, lnb) => async (req, res) => { let hash = req.body.payreq; let payreq = bolt11.decode(hash); @@ -40,51 +55,52 @@ module.exports = (app, db, emit, seen, lna, lnb) => async (req, res) => { let m; try { let paymentHash = payreq.tags.find(t => t.tagName === 'payment_hash').data; - m = await lna.sendToRouteSync({ + m = lightning.sendToRouteSync({ "payment_hash": Buffer.from(paymentHash, 'hex'), route - }); - - if (seen.includes(m.payment_preimage)) return; - seen.push(m.payment_preimage); + }, async function(err, m) { + if (m.payment_error) return res.status(500).send(m.payment_error); + if (seen.includes(m.payment_preimage)) return; + seen.push(m.payment_preimage); - let total = parseInt(m.payment_route.total_amt); - let fee = m.payment_route.total_fees; + let total = parseInt(m.payment_route.total_amt); + let fee = m.payment_route.total_fees; - user.balance -= total - payreq.satoshis; + user.balance -= total - payreq.satoshis; - await db.transaction(async transaction => { - await user.save({ transaction }); + await db.transaction(async transaction => { + await user.save({ transaction }); - const payment = await db.Payment.create( - { - amount: -total, - fee, - user_id: user.id, - hash, - rate: app.get("rates")[user.currency], - currency: user.currency, - confirmed: true, - asset: 'LNBTC', - }, - { transaction } - ); + const payment = await db.Payment.create( + { + amount: -total, + fee, + user_id: user.id, + hash, + rate: app.get("rates")[user.currency], + currency: user.currency, + confirmed: true, + asset: 'LNBTC', + }, + { transaction } + ); - emit(user.username, "payment", payment); - emit(user.username, "user", user); + emit(user.username, "payment", payment); + emit(user.username, "user", user); - if (payreq.payeeNodeKey === config.lnb.id) { - let invoice = await lna.addInvoice({ value: payreq.satoshis }); - let payback = lnb.sendPayment(lnb.meta, {}); + if (payreq.payeeNodeKey === config.lnb.id) { + let invoice = await lna.addInvoice({ value: payreq.satoshis }); + let payback = lnb.sendPayment(lnb.meta, {}); - /* eslint-disable-next-line */ - let { payment_request } = invoice; - /* eslint-disable-next-line */ - payback.write({ payment_request }); - } + /* eslint-disable-next-line */ + let { payment_request } = invoice; + /* eslint-disable-next-line */ + payback.write({ payment_request }); + } - seen.push(hash); - res.send(payment); + seen.push(hash); + res.send(payment); + }); }); } catch (e) { l(e); |
