delvingbitcoin
Expanding on BOLT12
Posted on: September 29, 2024 04:18 UTC
The recent merger of BOLT12 into the main repository, as documented in this pull request, marks a significant advancement in its development, with implementations beginning to emerge in practical scenarios.
This development prompts a discussion on potential enhancements and modifications to improve its functionality further. One area of interest is the mechanism by which invoice_request
and invoice
writers are required to replicate all fields from their predecessors, including those that are unknown, hinting at a structural flexibility that could allow for the incorporation of additional fields in a backward-compatible manner. A notable proposition in this context is the addition of a user
field within the invoice_request
, as detailed in a proposal found here.
Among the enhancements being considered is the introduction of an optional boolean refund_invoice_required
field for offer
writers. If set to true, it mandates invoice_request
writers to include a refund_invoice
field containing an encoded refund invoice, proposing the use of lni
as a prefix for these invoices. This innovation aims to streamline the refund process, enabling merchants to automate refunds without necessitating direct interaction with customers for each transaction. This could be particularly useful in situations where merchants operate with static offers displayed on physical media, such as stickers, without the capability to generate dynamic invoice_request
s for refunds.
Additionally, the suggestion to establish a offer_max_amount
within the offer
structure addresses the need to limit transactions to a maximum permissible amount. This feature caters to various operational constraints and preferences, such as inventory limitations, liquidity concerns, the use of HOLD invoices, and the desire to manage customer relationships and expectations regarding the scale of transactions. While the enforcement of maximum amounts through HTLCs may not be directly feasible, communicating such limits upfront could prevent misunderstandings and discourage attempts to exceed agreed transaction volumes.
The absence of an expiration mechanism for invoice_request
s raises questions about the management of offer lifecycles, especially in contexts where timing is crucial, and the risk of delayed responses could invalidate the relevance of a transaction. Implementing an expiry for invoice_request
s similar to that of offers
and invoices
could enhance the efficiency and reliability of the BOLT12 protocol by ensuring that all components of a transaction remain valid only within a mutually understood timeframe.
In conclusion, these discussions and proposals signify a collective effort to refine and evolve the BOLT12 standard, inviting feedback from the community to steer its development towards meeting the diverse needs and challenges of real-world implementation.