Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Investigate how to fund channel to user efficiently #25

Closed
bonomat opened this issue Jan 19, 2023 · 1 comment
Closed

Investigate how to fund channel to user efficiently #25

bonomat opened this issue Jan 19, 2023 · 1 comment

Comments

@bonomat
Copy link
Contributor

bonomat commented Jan 19, 2023

We want the coordinator to open a channel with the user while having funds on either side of the channel. This can either be done using dual funded channels or using submarine swaps after channel opening.

Note:

  • rust-lightning does not currently have the former one.
  • The feature of submarine swaps is needed for receiving on-chain payments in-side the channel as well.

This task is about investigating how we can achieve the following scenarios in the most straight forward way without having to extend rust-lightning :)

Scenarios:

  • user wants to open a channel with coordinator with funding only on their side. (should be straight forward)
  • user wants to open a channel with coordinator with funding on both sides
  • user wants to receive payments which are bigger than their in-bound liquidity

This ticket is about investigating and documenting in form of an ADR how we can achieve these scenarios.

@bonomat
Copy link
Contributor Author

bonomat commented Jun 24, 2023

Outdated

@bonomat bonomat closed this as not planned Won't fix, can't repro, duplicate, stale Jun 24, 2023
holzeis added a commit that referenced this issue Oct 8, 2023
Fixes an exception thrown at navigating after receiving a payment during funding the app.

```
══╡ EXCEPTION CAUGHT BY FOUNDATION LIBRARY ╞════════════════════════════════════════════════════════
The following assertion was thrown while dispatching notifications for GoRouterDelegate:
setState() or markNeedsBuild() called during build.
This Router<Object> widget cannot be marked as needing to build because the framework is already in
the process of building widgets. A widget can be marked as needing to be built during the build
phase only if one of its ancestors is currently building. This exception is allowed because the
framework builds parent widgets before children, which means a dirty descendant will always be
built. Otherwise, the framework might not visit this widget during this build phase.
The widget on which setState() or markNeedsBuild() was called was:
  Router<Object>
The widget which was currently being built when the offending call was made was:
  FundWalletModal

When the exception was thrown, this was the stack:
#0      Element.markNeedsBuild.<anonymous closure> (package:flutter/src/widgets/framework.dart:4862:9)
#1      Element.markNeedsBuild (package:flutter/src/widgets/framework.dart:4874:6)
#2      State.setState (package:flutter/src/widgets/framework.dart:1158:15)
#3      _RouterState._handleRouterDelegateNotification (package:flutter/src/widgets/router.dart:791:5)
#4      ChangeNotifier.notifyListeners (package:flutter/src/foundation/change_notifier.dart:403:24)
#5      GoRouterDelegate.setNewRoutePath (package:go_router/src/delegate.dart:145:7)
#6      _RouterState._processParsedRouteInformation.<anonymous closure> (package:flutter/src/widgets/router.dart:753:34)
#7      SynchronousFuture.then (package:flutter/src/foundation/synchronous_future.dart:41:39)
#8      _RouterState._processRouteInformation (package:flutter/src/widgets/router.dart:745:8)
#9      _RouterState._handleRouteInformationProviderNotification (package:flutter/src/widgets/router.dart:762:5)
#10     ChangeNotifier.notifyListeners (package:flutter/src/foundation/change_notifier.dart:403:24)
#11     GoRouteInformationProvider.notifyListeners (package:go_router/src/information_provider.dart:141:11)
#12     GoRouteInformationProvider._setValue (package:go_router/src/information_provider.dart:149:7)
#13     GoRouteInformationProvider.go (package:go_router/src/information_provider.dart:171:5)
#14     GoRouter.go (package:go_router/src/router.dart:318:30)
#15     _FundWalletModalState.build (package:get_10101/features/wallet/onboarding/fund_wallet_modal.dart:68:28)
#16     StatefulElement.build (package:flutter/src/widgets/framework.dart:5409:27)
#17     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5297:15)
#18     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5462:11)
#19     Element.rebuild (package:flutter/src/widgets/framework.dart:5016:7)
#20     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2779:19)
#21     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:916:21)
#22     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:360:5)
#23     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1297:15)
#24     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1227:9)
#25     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1085:5)
#26     _invoke (dart:ui/hooks.dart:170:13)
#27     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:401:5)
#28     _drawFrame (dart:ui/hooks.dart:140:31)

The GoRouterDelegate sending notification was:
  Instance of 'GoRouterDelegate'
════════════════════════════════════════════════════════════════════════════════════════════════════
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant