-
Notifications
You must be signed in to change notification settings - Fork 509
Extensible Liquidity Ads #1153
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
base: master
Are you sure you want to change the base?
Extensible Liquidity Ads #1153
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -453,6 +453,9 @@ completed. | |
2. data: | ||
* [`s64`:`satoshis`] | ||
1. type: 2 (`require_confirmed_inputs`) | ||
1. type: 5 (`request_funding`) | ||
2. data: | ||
* [`request_funds`:`request_funds`] | ||
|
||
#### Requirements | ||
|
||
|
@@ -463,6 +466,12 @@ The sender: | |
- MUST set `funding_output_contribution` | ||
- If it requires the receiving node to only use confirmed inputs: | ||
- MUST set `require_confirmed_inputs` | ||
- If it wants the receiving node to contribute to the funding transaction | ||
using `option_will_fund`: | ||
- MUST send `request_funding` containing one of the funding rates and | ||
`payment_type`s supported by the receiving node. | ||
- If the previous transaction included `request_funding`: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If PR 1236 is merged, and either side can send Only the initiator of the previous transaction should set Same for the "The recipient" section below; Note: this should also apply when the previous transaction is a splice. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
- SHOULD include `request_funding`. | ||
|
||
The recipient: | ||
- MUST respond either with `tx_abort` or with `tx_ack_rbf` | ||
|
@@ -472,6 +481,8 @@ The recipient: | |
- MAY send `tx_abort` for any reason | ||
- MUST fail the negotiation if: | ||
- `require_confirmed_inputs` is set but it cannot provide confirmed inputs | ||
- `request_funding` was included in the previous transaction but is not | ||
included in `tx_init_rbf`. | ||
|
||
#### Rationale | ||
|
||
|
@@ -505,6 +516,9 @@ not contributing to the funding output. | |
2. data: | ||
* [`s64`:`satoshis`] | ||
1. type: 2 (`require_confirmed_inputs`) | ||
1. type: 5 (`provide_funding`) | ||
2. data: | ||
* [`will_fund`:`will_fund`] | ||
|
||
#### Requirements | ||
|
||
|
@@ -513,12 +527,16 @@ The sender: | |
- MUST set `funding_output_contribution` | ||
- If it requires the receiving node to only use confirmed inputs: | ||
- MUST set `require_confirmed_inputs` | ||
- If the `request_funding` TLV was sent in `tx_init_rbf`: | ||
- MUST apply the same requirements as `accept_channel2` | ||
|
||
The recipient: | ||
- MUST respond with `tx_abort` or with a `tx_add_input` message, | ||
restarting the interactive tx collaboration protocol. | ||
- MUST fail the negotiation if: | ||
- `require_confirmed_inputs` is set but it cannot provide confirmed inputs | ||
- MAY fail the negotiation if `provide_funding` does not match what it | ||
expects, similar to the requirements for `accept_channel2`. | ||
|
||
#### Rationale | ||
|
||
|
@@ -1163,6 +1181,9 @@ This message initiates the v2 channel establishment workflow. | |
2. data: | ||
* [`...*byte`:`type`] | ||
1. type: 2 (`require_confirmed_inputs`) | ||
1. type: 5 (`request_funding`) | ||
2. data: | ||
* [`request_funds`:`request_funds`] | ||
|
||
Rationale and Requirements are the same as for [`open_channel`](#the-open_channel-message), | ||
with the following additions. | ||
|
@@ -1177,11 +1198,18 @@ The sending node: | |
- MUST set `funding_feerate_perkw` to the feerate for this transaction | ||
- If it requires the receiving node to only use confirmed inputs: | ||
- MUST set `require_confirmed_inputs` | ||
- If it wants the receiving node to contribute to the funding transaction | ||
using `option_will_fund`: | ||
- MUST send `request_funding` containing one of the funding rates and | ||
`payment_type`s supported by the receiving node. | ||
- MUST set `requested_sats` to the amount of sats it wants to pay for at | ||
the advertised funding rate. | ||
|
||
The receiving node: | ||
- MAY fail the negotiation if: | ||
- the `locktime` is unacceptable | ||
- the `funding_feerate_perkw` is unacceptable | ||
- `request_funds.funding_rate` does not match a rate it advertised. | ||
- MUST fail the negotiation if: | ||
- `require_confirmed_inputs` is set but it cannot provide confirmed inputs | ||
|
||
|
@@ -1250,6 +1278,9 @@ acceptance of the new channel. | |
2. data: | ||
* [`...*byte`:`type`] | ||
1. type: 2 (`require_confirmed_inputs`) | ||
1. type: 5 (`provide_funding`) | ||
2. data: | ||
* [`will_fund`:`will_fund`] | ||
|
||
Rationale and Requirements are the same as listed above, | ||
for [`accept_channel`](#the-accept_channel-message) with the following | ||
|
@@ -1262,10 +1293,29 @@ The accepting node: | |
- MAY respond with a `funding_satoshis` value of zero. | ||
- If it requires the opening node to only use confirmed inputs: | ||
- MUST set `require_confirmed_inputs` | ||
- If the `request_funding` TLV was sent in `open_channel2`: | ||
- If it does not want to contribute funds or to be paid for its | ||
funding contributions: | ||
- SHOULD omit the `provide_funding` TLV. | ||
- Otherwise, if it decides to be paid for its contributions: | ||
- MUST include the `provide_funding` TLV. | ||
- MUST set `funding_satoshis` to a value greater than `0`. | ||
- MAY set `funding_satoshis` less or more than `requested_sats`. | ||
|
||
The receiving node: | ||
- MAY fail the negotiation if: | ||
- It sent `request_funding` and `provide_funding` is not set. | ||
- It sent `request_funding` and `provide_funding` is set and: | ||
t-bast marked this conversation as resolved.
Show resolved
Hide resolved
|
||
- `funding_satoshis` is smaller than requested. | ||
- MUST fail the negotiation if: | ||
- `require_confirmed_inputs` is set but it cannot provide confirmed inputs | ||
- `provide_funding` is set but `request_funding` was not sent in `open_channel2`. | ||
- `provide_funding` is set and: | ||
- `will_fund.funding_rate` does not match `request_funds.funding_rate`. | ||
- `will_fund.funding_script` does not match the channel funding script. | ||
- `will_fund.signature` is invalid. | ||
- MUST pay fees for the `option_will_fund` amount using the `payment_type` selected, | ||
as detailed in the [liquidity ads section](07-routing-gossip.md#liquidity-ads). | ||
|
||
#### Rationale | ||
|
||
|
@@ -1278,6 +1328,14 @@ Instead, the channel reserve is fixed at 1% of the total channel balance | |
rounded down to the nearest whole satoshi or the `dust_limit_satoshis`, | ||
whichever is greater. | ||
|
||
If the opener sent `request_funding` in their `open_channel2` message, the | ||
accepter node may choose to contribute funds, but they don't have to. | ||
|
||
If the accepter node has run out of available funds, they should either fail | ||
the negotiation or reply with a `funding_satoshis` set to `0` and omit the | ||
`provide_funding` TLV, allowing the opener to decide whether they want to | ||
proceed anyway or fail the negotiation. | ||
|
||
### Funding Composition | ||
|
||
Funding composition for channel establishment v2 makes use of the | ||
|
Uh oh!
There was an error while loading. Please reload this page.