Skip to content

Instantly share code, notes, and snippets.

@orangeman
Last active August 28, 2018 08:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save orangeman/e6afb999390076db48215c0b87408d0a to your computer and use it in GitHub Desktop.
Save orangeman/e6afb999390076db48215c0b87408d0a to your computer and use it in GitHub Desktop.
lnd js client
const fs = require('fs')
const grpc = require('grpc')
const protoLoader = require('@grpc/proto-loader')
var packageDefinition = protoLoader.loadSync(
__dirname + '/rpc.proto',
{keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true
})
var lnrpcDescriptor = grpc.loadPackageDefinition(packageDefinition)
const lnrpc = lnrpcDescriptor.lnrpc
module.exports = (endpoint, certPath, macaroonPath) => {
process.env.GRPC_SSL_CIPHER_SUITES = 'HIGH+ECDSA'
const tls = grpc.credentials.createSsl(fs.readFileSync(certPath))
const macaroon = grpc.credentials.createFromMetadataGenerator(function (args, callback) {
const adminMacaroon = fs.readFileSync(macaroonPath)
const metadata = new grpc.Metadata()
metadata.add('macaroon', adminMacaroon.toString('hex'))
callback(null, metadata)
})
const credentials = grpc.credentials.combineChannelCredentials(tls, macaroon)
return new lnrpc.Lightning(endpoint, credentials)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment