Browse Source

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.
renovate/lint-staged-8.x
Jack Mallers 7 years ago
parent
commit
9b837ba316
  1. 5
      app/lib/lnd/methods/channelController.js
  2. 12
      app/reducers/channels.js
  3. 2
      test/unit/reducers/channels.spec.js

5
app/lib/lnd/methods/channelController.js

@ -19,13 +19,14 @@ function ensurePeerConnected(lnd, pubkey, host) {
* @return {[type]} [description] * @return {[type]} [description]
*/ */
export function connectAndOpen(lnd, event, payload) { export function connectAndOpen(lnd, event, payload) {
const { pubkey, host, localamt } = payload const { pubkey, host, localamt, private: privateChannel } = payload
return ensurePeerConnected(lnd, pubkey, host) return ensurePeerConnected(lnd, pubkey, host)
.then(() => { .then(() => {
const call = lnd.openChannel({ const call = lnd.openChannel({
node_pubkey: Buffer.from(pubkey, 'hex'), 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 })) call.on('data', data => event.sender.send('pushchannelupdated', { pubkey, data }))

12
app/reducers/channels.js

@ -1,5 +1,6 @@
import { createSelector } from 'reselect' import { createSelector } from 'reselect'
import { ipcRenderer } from 'electron' import { ipcRenderer } from 'electron'
import Store from 'electron-store'
import { btc } from 'lib/utils' import { btc } from 'lib/utils'
import { showNotification } from 'lib/utils/notifications' import { showNotification } from 'lib/utils/notifications'
import { requestSuggestedNodes } from 'lib/utils/api' import { requestSuggestedNodes } from 'lib/utils/api'
@ -191,7 +192,16 @@ export const openChannel = ({ pubkey, host, local_amt }) => (dispatch, getState)
dispatch(openingChannel()) dispatch(openingChannel())
dispatch(addLoadingPubkey(pubkey)) 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 // TODO: Decide how to handle streamed updates for channels

2
test/unit/reducers/channels.spec.js

@ -1,3 +1,5 @@
// @flow
import channelsReducer, { import channelsReducer, {
SET_CHANNEL_FORM, SET_CHANNEL_FORM,
SET_CHANNEL, SET_CHANNEL,

Loading…
Cancel
Save