You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This PR introduces an Assessor for Bolt12Messages and adds the ability to support fiat currencies for offer amounts.
Bolt12Assessor
The Bolt12Assessor trait provides the ability to process received offer messages and analyze them to determine whether they should be responded to.
This trait allows users to implement their custom logic to decide whether to accept and respond appropriately to received offer messages (e.g., InvoiceRequest or Bolt12Invoice).
Currency Support
Bolt12CurrencyAssessor enables users to implement support for their chosen currency by defining the correct conversion rate from fiat to millisatoshis.
Once implemented, this functionality allows users to:
Scan and pay offers denominated in fiat.
Handle received InvoiceRequests for their own offers denominated in fiat.
To decouple offers and onion message-related code from `ChannelManager`,
this commit introduces the `message_received` function in `Offer/OnionMessageHandler`.
Currently, the function focuses on handling the retry logic for `InvoiceRequest`
messages. Moving this responsibility ensures a cleaner separation of concerns
and sets the foundation for managing offers/onion messages directly within the
appropriate handler.
Since `ChannelMessageHandler`'s `message_received` function was solely
used for handling invoice request retries. This function has been
removed from `ChannelMessageHandler`, and the relevant code has been
migrated to `OffersMessageHandler`'s `message_received`.
This ensures invoice request retries are now handled in the appropriate context.
This commit temporarily removes support for async BOLT12
message handling to enable a smoother transition in the
upcoming refactor.
The current implementation of async handling is abrupt,
as it requires delving into the synchronous case and
generating an event mid-flow based on the `manual_handling`
flag. This approach adds unnecessary complexity and coupling.
A later commit will introduce a new struct, `OffersMessageFlow`,
designed to handle and create offer messages. This new struct
will support async handling in a more structured way by allowing
users to implement a parameterized trait for asynchronous message
handling.
Removing the existing async support now ensures a cleaner and more
seamless migration of offer-related code from `ChannelManager` to
`OffersMessageFlow`.
This commit introduces a new struct, `OffersMessageFlow`,
to extract all offers message-related code out of `ChannelManager`.
By moving this logic into a dedicated struct, it creates
a foundation for separating responsibilities and sets up
a base for further code restructuring in subsequent commits.
A new trait, `OffersMessageCommons`, is introduced to encapsulate
functions that are commonly used by both BOLT12-related functionality
and other parts of `ChannelManager`.
This enables a clean transition of BOLT12 code to `OffersMessageFlow`
by moving shared functions into the new trait, ensuring they remain
accessible to both `ChannelManager` and the refactored BOLT12 code.
This commit introduces the `OffersMessageHandler` implementation
for `OffersMessageFlow`, enabling direct access to offer-specific
functionality through `OffersMessageFlow`.
With `OffersMessageFlow` now serving as the source of `OffersMessageHandler`
implementation, the implementation in `ChannelManager` is no longer needed
and has been safely removed.
- This commit introduces a new struct, `AnOffersMessageFlow`,
which generically implements `OffersMessageFlow`.
- In subsequent commits, this struct will be utilized for
documentation purposes.
The new trait allow taking the invoice_request, and access it.
For now this allows accessing, that it contains the correct amount or if
not then getting the right amount from the offer.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Builds on #3412
This PR introduces an Assessor for
Bolt12Messagesand adds the ability to support fiat currencies for offer amounts.Bolt12AssessorBolt12Assessortrait provides the ability to process received offer messages and analyze them to determine whether they should be responded to.InvoiceRequestorBolt12Invoice).Currency Support
Bolt12CurrencyAssessorenables users to implement support for their chosen currency by defining the correct conversion rate from fiat to millisatoshis.InvoiceRequests for their ownoffersdenominated in fiat.