Permalink
Browse files

fix(channels): neutrino clients manual channels flagged private

Make sure that if a user of ours is using neutrino that we flag their
channels as private when they manually open them. Reason for this is
because light consumer clients are not expected to have high uptime.

However we cannot hardcode channels as private every time because we
do support more power users driving their remote nodes or BTCPay
Server with Zap. So we only flag channels as private if the
activeConnection is local.
  • Loading branch information...
JimmyMow committed Aug 21, 2018
1 parent bf3ef54 commit 9b837ba316133172389e8a338bfc6cb1055a9db1
Showing with 16 additions and 3 deletions.
  1. +3 −2 app/lib/lnd/methods/channelController.js
  2. +11 −1 app/reducers/channels.js
  3. +2 −0 test/unit/reducers/channels.spec.js
@@ -19,13 +19,14 @@ function ensurePeerConnected(lnd, pubkey, host) {
* @return {[type]} [description]
*/
export function connectAndOpen(lnd, event, payload) {
const { pubkey, host, localamt } = payload
const { pubkey, host, localamt, private: privateChannel } = payload
return ensurePeerConnected(lnd, pubkey, host)
.then(() => {
const call = lnd.openChannel({
node_pubkey: Buffer.from(pubkey, 'hex'),
local_funding_amount: Number(localamt)
local_funding_amount: Number(localamt),
private: privateChannel
})
call.on('data', data => event.sender.send('pushchannelupdated', { pubkey, data }))
View
@@ -1,5 +1,6 @@
import { createSelector } from 'reselect'
import { ipcRenderer } from 'electron'
import Store from 'electron-store'
import { btc } from 'lib/utils'
import { showNotification } from 'lib/utils/notifications'
import { requestSuggestedNodes } from 'lib/utils/api'
@@ -191,7 +192,16 @@ export const openChannel = ({ pubkey, host, local_amt }) => (dispatch, getState)
dispatch(openingChannel())
dispatch(addLoadingPubkey(pubkey))
ipcRenderer.send('lnd', { msg: 'connectAndOpen', data: { pubkey, host, localamt } })
// Grab the activeConnection type from our local store. If the active connection type is local (light clients using
// neutrino) we will flag manually created channels as private. Other connections like remote node and BTCPay Server
// we will announce to the network as these users are using Zap to drive nodes that are online 24/7
const store = new Store({ name: 'settings' })
const { type } = store.get('activeConnection', {})
ipcRenderer.send('lnd', {
msg: 'connectAndOpen',
data: { pubkey, host, localamt, private: type === 'local' }
})
}
// TODO: Decide how to handle streamed updates for channels
@@ -1,3 +1,5 @@
// @flow
import channelsReducer, {
SET_CHANNEL_FORM,
SET_CHANNEL,

0 comments on commit 9b837ba

Please sign in to comment.