option_static_remotekey - #642

Merged
rustyrussell merged 1 commit into
lightning:masterfrom
rustyrussell:option_static_remotekey
Sep 26, 2019
Merged

option_static_remotekey#642
rustyrussell merged 1 commit into
lightning:masterfrom
rustyrussell:option_static_remotekey

Conversation

@rustyrussell

Copy link
Copy Markdown
Collaborator

This is now just removing key rotation (no CSV symmetry). I've used the placeholder optnum 48/49, we can assign a proper one at the meeting if accepted.

I have implemented this in c-lightning as an EXPERIMENTAL_FEATURES option, but not yet merged. It seems to work, and I also have protocol tests for it.

@rustyrussellrustyrussell added the Meeting Discussion Raise at next meeting label Jul 17, 2019

@cfromknechtcfromknecht left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @rustyrussell, definitely like the size of diff :)

Do we also want to modify the derivations described in BOLT 3 to say that that the payment_basepoint is not tweaked?

Comment thread02-peer-protocol.md Outdated
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Thanks @rustyrussell, definitely like the size of diff :)

Do we also want to modify the derivations described in BOLT 3 to say that that the payment_basepoint is not tweaked?

Huh, somehow my rebase lost that part! I def did edit that, will push...

Comment thread03-transactions.md Outdated
Comment thread02-peer-protocol.md Outdated
removed, but the disclosure of previous secret still allows
fall-behind detection. An implementation can offer both, however, and
fall back to the `option_data_loss_protect` behavior if
`option_simplified_commitment` is not negotiated.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
`option_simplified_commitment` is not negotiated.
`option_static_remotekey` is not negotiated.

@niftyneiniftynei removed the Meeting Discussion Raise at next meeting label Jul 22, 2019
Comment thread02-peer-protocol.md Outdated
Comment thread02-peer-protocol.md
Comment thread09-features.md Outdated
Comment thread02-peer-protocol.md
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Rebased to fix minor conflicts, and added minor fixes in separate commit.

rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

OK, I am now running this on my two main test nodes:

mainnet: 024b9a1fa8e006f1e3937f65f66c408e6da8e1ca728ea43222a7381df1cc449605
testnet: 031a3478d481b92e3c28810228252898c5f0d82fc4d07f5210c4f34d4aba56b769

@rustyrussellrustyrussell mentioned this pull request Sep 2, 2019
10 tasks
@rustyrussellrustyrussell changed the title option_static_remotekey: first draft.option_static_remotekeySep 3, 2019
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 7, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 7, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 10, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
niftynei pushed a commit to ElementsProject/lightning that referenced this pull request Sep 10, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@sstone

Copy link
Copy Markdown
Collaborator

It just hit me that switching to static remote keys without adding a CSV delay, as for the to-local keys, is making incentives for using mutual vs force close worse than they are today.

With the current specs, not having a delay on the to-remote is already a problem: if you can get your peer to publish their commit tx, you get a UTXO that you can spend right away, while they have to wait to spend theirs. However, most implementations will use BIP32 wallets and will want spend this output (and pay onchain fees) and send it to a wallet key, as it makes backup/restore of onchain funds much easier (you just need your seed). So it's still better to negotiate a mutual close whenever possible, as it will return your funds directly to your BIP32 wallet.

With this proposal, without adding a CSV delay to the to-remote output, implementation will most likely set their static remote key to one of their BIP32 wallet key, which means that in practice getting your peers to publish their commit tx will always be the fastest solution, and could also be the cheapest if fees are going up and you don't want to negotiate.

This is why I would strongly prefer that we add a CSV delay to the to-remote output: users would then have an incentive to mutual close channels whenever possible, and not play the "get your peer to close first" game.

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@sstone

sstone commented Sep 15, 2019

Copy link
Copy Markdown
Collaborator

Adding a CSV value makes the recovery case less self contained.

What does that mean ?

Having you peer include in its commit tx an output that sends directly to your wallet feels just plain wrong. What is the point of even negotiating a mutual close then ?

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@SomberNight

Copy link
Copy Markdown
Contributor

With this proposal, without adding a CSV delay to the to-remote output, implementation will most likely set their static remote key to one of their BIP32 wallet key
Having you peer include in its commit tx an output that sends directly to your wallet

Note that the to-remote-output pays to a p2wpkh script; and longer term there will be wallets who would not by default derive p2wpkh addresses for their main on-chain addresses. E.g. when witness v1 gets soft forked in, some wallets might want to only have witness v1 addresses, and those will then need to sweep the to-remote outputs, at which point a cooperative close paying directly to one of their main witness v1 addresses (as soon as will be allowed for a cooperative close to do so, as it is not atm) would be cheaper.

My point is that it's not necessarily a true assumption that the commitment tx having a static p2wpkh output can always directly pay to a main wallet address.

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@SomberNight

SomberNight commented Sep 15, 2019

Copy link
Copy Markdown
Contributor

There are already wallets that only derive witness v0 outputs, e.g. Wasabi and Electrum.

edit; and there is no need for a transition period between v0 and v1, as in theory anyone who can pay to v0 can also do so to v1.

@sstone

Copy link
Copy Markdown
Collaborator

@Roasbeef I don't see why adding a delay here prevents you from recovering your funds ? My point is that not having such a delay was bad before and we're making it worse.

The fact that you currently need you peer's commit point is a different problem. the to-remote key could have been derived from the remote commit point (I don't think it makes security/privacy worse) and it would have made recovery much simpler.

@SomberNight well we'll have eltoo by then won't we :) but it may not be soon...

@Roasbeef

Copy link
Copy Markdown
Collaborator

I don't see why adding a delay here prevents you from recovering your funds ?

It doesn't prevent it, it makes it less self contained: recovery logic now needs additional data (to reconstruct the script).

My point is that not having such a delay was bad before and we're making it worse.

With my response being that the real incentive issue here is the initiator always paying the fees whenever a channel closes.

The fact that you currently need you peer's commit point is a different problem. the to-remote key could have been derived from the remote commit point (I don't think it makes security/privacy worse) and it would have made recovery much simpler.

This is the very problem that's being fixed with this change.

@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

@Roasbeef Meeting nodes say this is pending your ack to merge? Ping!

@Roasbeef

Copy link
Copy Markdown
Collaborator

@rustyrussell needs a rebase! I'll make another PR to add that note re compatibility with detecting proper data loss from state zero.

@Roasbeef

Copy link
Copy Markdown
Collaborator

Actually, the current text looks fine, scratch my last comment, doing one final pass over everything.

@RoasbeefRoasbeef left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🍕

@cfromknecht

Copy link
Copy Markdown
Contributor

needs rebase!!

This separates out the static remotekey changes from the more ambitious
option_simplified_commitment (which also included pushme outputs and
bring-your-own-fee for HTLC outputs).
As per http://www.erisian.com.au/meetbot/lightning-dev/2019/lightning-dev.2019-09-02-20.06.html
Thanks to everyone for feedback: @araspitzu@Roasbeef @bitconner
Suggested-by: @Roasbeef
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Trivial rebase, and collapsed into a single commit.

@murchandamus

murchandamus commented Oct 9, 2019

Copy link
Copy Markdown

This appears to allow to self-select an address from the Lightning Client's wallet only. Is anything planned that would require channels to close to an arbitrary user-selected addresses in the force-close scenario?

@Roasbeef

Roasbeef commented Oct 9, 2019 via email

Copy link
Copy Markdown
Collaborator

@blacktemplar

Copy link
Copy Markdown

I have a question for this change: With this change is it possible to use low fees on the commitment transaction and in the case of a force close use CPFP to get the transaction through? I really hope this is possible some day since if the fee market gets serious the high fees for commitment transactions serving as an upper bound will be a big problem in my opinion. Using CPFP would enable a much more dynamic fee system and every participant could decide for themselves how fast they need the assets / how much they want to pay for fees.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Meeting DiscussionRaise at next meeting

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@rustyrussell@sstone@Roasbeef@SomberNight@cfromknecht@murchandamus@blacktemplar@araspitzu@niftynei@t-bast
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

option_static_remotekey - #642

Merged
rustyrussell merged 1 commit into
lightning:masterfrom
rustyrussell:option_static_remotekey
Sep 26, 2019
Merged

option_static_remotekey#642
rustyrussell merged 1 commit into
lightning:masterfrom
rustyrussell:option_static_remotekey

Conversation

@rustyrussell

Copy link
Copy Markdown
Collaborator

This is now just removing key rotation (no CSV symmetry). I've used the placeholder optnum 48/49, we can assign a proper one at the meeting if accepted.

I have implemented this in c-lightning as an EXPERIMENTAL_FEATURES option, but not yet merged. It seems to work, and I also have protocol tests for it.

@rustyrussellrustyrussell added the Meeting Discussion Raise at next meeting label Jul 17, 2019

@cfromknechtcfromknecht left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @rustyrussell, definitely like the size of diff :)

Do we also want to modify the derivations described in BOLT 3 to say that that the payment_basepoint is not tweaked?

Comment thread02-peer-protocol.md Outdated
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Thanks @rustyrussell, definitely like the size of diff :)

Do we also want to modify the derivations described in BOLT 3 to say that that the payment_basepoint is not tweaked?

Huh, somehow my rebase lost that part! I def did edit that, will push...

Comment thread03-transactions.md Outdated
Comment thread02-peer-protocol.md Outdated
removed, but the disclosure of previous secret still allows
fall-behind detection. An implementation can offer both, however, and
fall back to the `option_data_loss_protect` behavior if
`option_simplified_commitment` is not negotiated.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
`option_simplified_commitment` is not negotiated.
`option_static_remotekey` is not negotiated.

@niftyneiniftynei removed the Meeting Discussion Raise at next meeting label Jul 22, 2019
Comment thread02-peer-protocol.md Outdated
Comment thread02-peer-protocol.md
Comment thread09-features.md Outdated
Comment thread02-peer-protocol.md
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Rebased to fix minor conflicts, and added minor fixes in separate commit.

rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

OK, I am now running this on my two main test nodes:

mainnet: 024b9a1fa8e006f1e3937f65f66c408e6da8e1ca728ea43222a7381df1cc449605
testnet: 031a3478d481b92e3c28810228252898c5f0d82fc4d07f5210c4f34d4aba56b769

@rustyrussellrustyrussell mentioned this pull request Sep 2, 2019
10 tasks
@rustyrussellrustyrussell changed the title option_static_remotekey: first draft.option_static_remotekeySep 3, 2019
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 7, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 7, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 10, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
niftynei pushed a commit to ElementsProject/lightning that referenced this pull request Sep 10, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@sstone

Copy link
Copy Markdown
Collaborator

It just hit me that switching to static remote keys without adding a CSV delay, as for the to-local keys, is making incentives for using mutual vs force close worse than they are today.

With the current specs, not having a delay on the to-remote is already a problem: if you can get your peer to publish their commit tx, you get a UTXO that you can spend right away, while they have to wait to spend theirs. However, most implementations will use BIP32 wallets and will want spend this output (and pay onchain fees) and send it to a wallet key, as it makes backup/restore of onchain funds much easier (you just need your seed). So it's still better to negotiate a mutual close whenever possible, as it will return your funds directly to your BIP32 wallet.

With this proposal, without adding a CSV delay to the to-remote output, implementation will most likely set their static remote key to one of their BIP32 wallet key, which means that in practice getting your peers to publish their commit tx will always be the fastest solution, and could also be the cheapest if fees are going up and you don't want to negotiate.

This is why I would strongly prefer that we add a CSV delay to the to-remote output: users would then have an incentive to mutual close channels whenever possible, and not play the "get your peer to close first" game.

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@sstone

sstone commented Sep 15, 2019

Copy link
Copy Markdown
Collaborator

Adding a CSV value makes the recovery case less self contained.

What does that mean ?

Having you peer include in its commit tx an output that sends directly to your wallet feels just plain wrong. What is the point of even negotiating a mutual close then ?

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@SomberNight

Copy link
Copy Markdown
Contributor

With this proposal, without adding a CSV delay to the to-remote output, implementation will most likely set their static remote key to one of their BIP32 wallet key
Having you peer include in its commit tx an output that sends directly to your wallet

Note that the to-remote-output pays to a p2wpkh script; and longer term there will be wallets who would not by default derive p2wpkh addresses for their main on-chain addresses. E.g. when witness v1 gets soft forked in, some wallets might want to only have witness v1 addresses, and those will then need to sweep the to-remote outputs, at which point a cooperative close paying directly to one of their main witness v1 addresses (as soon as will be allowed for a cooperative close to do so, as it is not atm) would be cheaper.

My point is that it's not necessarily a true assumption that the commitment tx having a static p2wpkh output can always directly pay to a main wallet address.

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@SomberNight

SomberNight commented Sep 15, 2019

Copy link
Copy Markdown
Contributor

There are already wallets that only derive witness v0 outputs, e.g. Wasabi and Electrum.

edit; and there is no need for a transition period between v0 and v1, as in theory anyone who can pay to v0 can also do so to v1.

@sstone

Copy link
Copy Markdown
Collaborator

@Roasbeef I don't see why adding a delay here prevents you from recovering your funds ? My point is that not having such a delay was bad before and we're making it worse.

The fact that you currently need you peer's commit point is a different problem. the to-remote key could have been derived from the remote commit point (I don't think it makes security/privacy worse) and it would have made recovery much simpler.

@SomberNight well we'll have eltoo by then won't we :) but it may not be soon...

@Roasbeef

Copy link
Copy Markdown
Collaborator

I don't see why adding a delay here prevents you from recovering your funds ?

It doesn't prevent it, it makes it less self contained: recovery logic now needs additional data (to reconstruct the script).

My point is that not having such a delay was bad before and we're making it worse.

With my response being that the real incentive issue here is the initiator always paying the fees whenever a channel closes.

The fact that you currently need you peer's commit point is a different problem. the to-remote key could have been derived from the remote commit point (I don't think it makes security/privacy worse) and it would have made recovery much simpler.

This is the very problem that's being fixed with this change.

@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

@Roasbeef Meeting nodes say this is pending your ack to merge? Ping!

@Roasbeef

Copy link
Copy Markdown
Collaborator

@rustyrussell needs a rebase! I'll make another PR to add that note re compatibility with detecting proper data loss from state zero.

@Roasbeef

Copy link
Copy Markdown
Collaborator

Actually, the current text looks fine, scratch my last comment, doing one final pass over everything.

@RoasbeefRoasbeef left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🍕

@cfromknecht

Copy link
Copy Markdown
Contributor

needs rebase!!

This separates out the static remotekey changes from the more ambitious
option_simplified_commitment (which also included pushme outputs and
bring-your-own-fee for HTLC outputs).
As per http://www.erisian.com.au/meetbot/lightning-dev/2019/lightning-dev.2019-09-02-20.06.html
Thanks to everyone for feedback: @araspitzu@Roasbeef @bitconner
Suggested-by: @Roasbeef
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Trivial rebase, and collapsed into a single commit.

@murchandamus

murchandamus commented Oct 9, 2019

Copy link
Copy Markdown

This appears to allow to self-select an address from the Lightning Client's wallet only. Is anything planned that would require channels to close to an arbitrary user-selected addresses in the force-close scenario?

@Roasbeef

Roasbeef commented Oct 9, 2019 via email

Copy link
Copy Markdown
Collaborator

@blacktemplar

Copy link
Copy Markdown

I have a question for this change: With this change is it possible to use low fees on the commitment transaction and in the case of a force close use CPFP to get the transaction through? I really hope this is possible some day since if the fee market gets serious the high fees for commitment transactions serving as an upper bound will be a big problem in my opinion. Using CPFP would enable a much more dynamic fee system and every participant could decide for themselves how fast they need the assets / how much they want to pay for fees.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Meeting DiscussionRaise at next meeting

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@rustyrussell@sstone@Roasbeef@SomberNight@cfromknecht@murchandamus@blacktemplar@araspitzu@niftynei@t-bast
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

option_static_remotekey - #642

Merged
rustyrussell merged 1 commit into
lightning:masterfrom
rustyrussell:option_static_remotekey
Sep 26, 2019
Merged

option_static_remotekey#642
rustyrussell merged 1 commit into
lightning:masterfrom
rustyrussell:option_static_remotekey

Conversation

@rustyrussell

Copy link
Copy Markdown
Collaborator

This is now just removing key rotation (no CSV symmetry). I've used the placeholder optnum 48/49, we can assign a proper one at the meeting if accepted.

I have implemented this in c-lightning as an EXPERIMENTAL_FEATURES option, but not yet merged. It seems to work, and I also have protocol tests for it.

@rustyrussellrustyrussell added the Meeting Discussion Raise at next meeting label Jul 17, 2019

@cfromknechtcfromknecht left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @rustyrussell, definitely like the size of diff :)

Do we also want to modify the derivations described in BOLT 3 to say that that the payment_basepoint is not tweaked?

Comment thread02-peer-protocol.md Outdated
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Thanks @rustyrussell, definitely like the size of diff :)

Do we also want to modify the derivations described in BOLT 3 to say that that the payment_basepoint is not tweaked?

Huh, somehow my rebase lost that part! I def did edit that, will push...

Comment thread03-transactions.md Outdated
Comment thread02-peer-protocol.md Outdated
removed, but the disclosure of previous secret still allows
fall-behind detection. An implementation can offer both, however, and
fall back to the `option_data_loss_protect` behavior if
`option_simplified_commitment` is not negotiated.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
`option_simplified_commitment` is not negotiated.
`option_static_remotekey` is not negotiated.

@niftyneiniftynei removed the Meeting Discussion Raise at next meeting label Jul 22, 2019
Comment thread02-peer-protocol.md Outdated
Comment thread02-peer-protocol.md
Comment thread09-features.md Outdated
Comment thread02-peer-protocol.md
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Rebased to fix minor conflicts, and added minor fixes in separate commit.

rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

OK, I am now running this on my two main test nodes:

mainnet: 024b9a1fa8e006f1e3937f65f66c408e6da8e1ca728ea43222a7381df1cc449605
testnet: 031a3478d481b92e3c28810228252898c5f0d82fc4d07f5210c4f34d4aba56b769

@rustyrussellrustyrussell mentioned this pull request Sep 2, 2019
10 tasks
@rustyrussellrustyrussell changed the title option_static_remotekey: first draft.option_static_remotekeySep 3, 2019
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 7, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 7, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 10, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
niftynei pushed a commit to ElementsProject/lightning that referenced this pull request Sep 10, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@sstone

Copy link
Copy Markdown
Collaborator

It just hit me that switching to static remote keys without adding a CSV delay, as for the to-local keys, is making incentives for using mutual vs force close worse than they are today.

With the current specs, not having a delay on the to-remote is already a problem: if you can get your peer to publish their commit tx, you get a UTXO that you can spend right away, while they have to wait to spend theirs. However, most implementations will use BIP32 wallets and will want spend this output (and pay onchain fees) and send it to a wallet key, as it makes backup/restore of onchain funds much easier (you just need your seed). So it's still better to negotiate a mutual close whenever possible, as it will return your funds directly to your BIP32 wallet.

With this proposal, without adding a CSV delay to the to-remote output, implementation will most likely set their static remote key to one of their BIP32 wallet key, which means that in practice getting your peers to publish their commit tx will always be the fastest solution, and could also be the cheapest if fees are going up and you don't want to negotiate.

This is why I would strongly prefer that we add a CSV delay to the to-remote output: users would then have an incentive to mutual close channels whenever possible, and not play the "get your peer to close first" game.

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@sstone

sstone commented Sep 15, 2019

Copy link
Copy Markdown
Collaborator

Adding a CSV value makes the recovery case less self contained.

What does that mean ?

Having you peer include in its commit tx an output that sends directly to your wallet feels just plain wrong. What is the point of even negotiating a mutual close then ?

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@SomberNight

Copy link
Copy Markdown
Contributor

With this proposal, without adding a CSV delay to the to-remote output, implementation will most likely set their static remote key to one of their BIP32 wallet key
Having you peer include in its commit tx an output that sends directly to your wallet

Note that the to-remote-output pays to a p2wpkh script; and longer term there will be wallets who would not by default derive p2wpkh addresses for their main on-chain addresses. E.g. when witness v1 gets soft forked in, some wallets might want to only have witness v1 addresses, and those will then need to sweep the to-remote outputs, at which point a cooperative close paying directly to one of their main witness v1 addresses (as soon as will be allowed for a cooperative close to do so, as it is not atm) would be cheaper.

My point is that it's not necessarily a true assumption that the commitment tx having a static p2wpkh output can always directly pay to a main wallet address.

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@SomberNight

SomberNight commented Sep 15, 2019

Copy link
Copy Markdown
Contributor

There are already wallets that only derive witness v0 outputs, e.g. Wasabi and Electrum.

edit; and there is no need for a transition period between v0 and v1, as in theory anyone who can pay to v0 can also do so to v1.

@sstone

Copy link
Copy Markdown
Collaborator

@Roasbeef I don't see why adding a delay here prevents you from recovering your funds ? My point is that not having such a delay was bad before and we're making it worse.

The fact that you currently need you peer's commit point is a different problem. the to-remote key could have been derived from the remote commit point (I don't think it makes security/privacy worse) and it would have made recovery much simpler.

@SomberNight well we'll have eltoo by then won't we :) but it may not be soon...

@Roasbeef

Copy link
Copy Markdown
Collaborator

I don't see why adding a delay here prevents you from recovering your funds ?

It doesn't prevent it, it makes it less self contained: recovery logic now needs additional data (to reconstruct the script).

My point is that not having such a delay was bad before and we're making it worse.

With my response being that the real incentive issue here is the initiator always paying the fees whenever a channel closes.

The fact that you currently need you peer's commit point is a different problem. the to-remote key could have been derived from the remote commit point (I don't think it makes security/privacy worse) and it would have made recovery much simpler.

This is the very problem that's being fixed with this change.

@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

@Roasbeef Meeting nodes say this is pending your ack to merge? Ping!

@Roasbeef

Copy link
Copy Markdown
Collaborator

@rustyrussell needs a rebase! I'll make another PR to add that note re compatibility with detecting proper data loss from state zero.

@Roasbeef

Copy link
Copy Markdown
Collaborator

Actually, the current text looks fine, scratch my last comment, doing one final pass over everything.

@RoasbeefRoasbeef left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🍕

@cfromknecht

Copy link
Copy Markdown
Contributor

needs rebase!!

This separates out the static remotekey changes from the more ambitious
option_simplified_commitment (which also included pushme outputs and
bring-your-own-fee for HTLC outputs).
As per http://www.erisian.com.au/meetbot/lightning-dev/2019/lightning-dev.2019-09-02-20.06.html
Thanks to everyone for feedback: @araspitzu@Roasbeef @bitconner
Suggested-by: @Roasbeef
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Trivial rebase, and collapsed into a single commit.

@murchandamus

murchandamus commented Oct 9, 2019

Copy link
Copy Markdown

This appears to allow to self-select an address from the Lightning Client's wallet only. Is anything planned that would require channels to close to an arbitrary user-selected addresses in the force-close scenario?

@Roasbeef

Roasbeef commented Oct 9, 2019 via email

Copy link
Copy Markdown
Collaborator

@blacktemplar

Copy link
Copy Markdown

I have a question for this change: With this change is it possible to use low fees on the commitment transaction and in the case of a force close use CPFP to get the transaction through? I really hope this is possible some day since if the fee market gets serious the high fees for commitment transactions serving as an upper bound will be a big problem in my opinion. Using CPFP would enable a much more dynamic fee system and every participant could decide for themselves how fast they need the assets / how much they want to pay for fees.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Meeting DiscussionRaise at next meeting

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@rustyrussell@sstone@Roasbeef@SomberNight@cfromknecht@murchandamus@blacktemplar@araspitzu@niftynei@t-bast
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

option_static_remotekey - #642

Merged
rustyrussell merged 1 commit into
lightning:masterfrom
rustyrussell:option_static_remotekey
Sep 26, 2019
Merged

option_static_remotekey#642
rustyrussell merged 1 commit into
lightning:masterfrom
rustyrussell:option_static_remotekey

Conversation

@rustyrussell

Copy link
Copy Markdown
Collaborator

This is now just removing key rotation (no CSV symmetry). I've used the placeholder optnum 48/49, we can assign a proper one at the meeting if accepted.

I have implemented this in c-lightning as an EXPERIMENTAL_FEATURES option, but not yet merged. It seems to work, and I also have protocol tests for it.

@rustyrussellrustyrussell added the Meeting Discussion Raise at next meeting label Jul 17, 2019

@cfromknechtcfromknecht left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @rustyrussell, definitely like the size of diff :)

Do we also want to modify the derivations described in BOLT 3 to say that that the payment_basepoint is not tweaked?

Comment thread02-peer-protocol.md Outdated
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Thanks @rustyrussell, definitely like the size of diff :)

Do we also want to modify the derivations described in BOLT 3 to say that that the payment_basepoint is not tweaked?

Huh, somehow my rebase lost that part! I def did edit that, will push...

Comment thread03-transactions.md Outdated
Comment thread02-peer-protocol.md Outdated
removed, but the disclosure of previous secret still allows
fall-behind detection. An implementation can offer both, however, and
fall back to the `option_data_loss_protect` behavior if
`option_simplified_commitment` is not negotiated.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
`option_simplified_commitment` is not negotiated.
`option_static_remotekey` is not negotiated.

@niftyneiniftynei removed the Meeting Discussion Raise at next meeting label Jul 22, 2019
Comment thread02-peer-protocol.md Outdated
Comment thread02-peer-protocol.md
Comment thread09-features.md Outdated
Comment thread02-peer-protocol.md
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Rebased to fix minor conflicts, and added minor fixes in separate commit.

rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

OK, I am now running this on my two main test nodes:

mainnet: 024b9a1fa8e006f1e3937f65f66c408e6da8e1ca728ea43222a7381df1cc449605
testnet: 031a3478d481b92e3c28810228252898c5f0d82fc4d07f5210c4f34d4aba56b769

@rustyrussellrustyrussell mentioned this pull request Sep 2, 2019
10 tasks
@rustyrussellrustyrussell changed the title option_static_remotekey: first draft.option_static_remotekeySep 3, 2019
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 7, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 7, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 10, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
niftynei pushed a commit to ElementsProject/lightning that referenced this pull request Sep 10, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@sstone

Copy link
Copy Markdown
Collaborator

It just hit me that switching to static remote keys without adding a CSV delay, as for the to-local keys, is making incentives for using mutual vs force close worse than they are today.

With the current specs, not having a delay on the to-remote is already a problem: if you can get your peer to publish their commit tx, you get a UTXO that you can spend right away, while they have to wait to spend theirs. However, most implementations will use BIP32 wallets and will want spend this output (and pay onchain fees) and send it to a wallet key, as it makes backup/restore of onchain funds much easier (you just need your seed). So it's still better to negotiate a mutual close whenever possible, as it will return your funds directly to your BIP32 wallet.

With this proposal, without adding a CSV delay to the to-remote output, implementation will most likely set their static remote key to one of their BIP32 wallet key, which means that in practice getting your peers to publish their commit tx will always be the fastest solution, and could also be the cheapest if fees are going up and you don't want to negotiate.

This is why I would strongly prefer that we add a CSV delay to the to-remote output: users would then have an incentive to mutual close channels whenever possible, and not play the "get your peer to close first" game.

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@sstone

sstone commented Sep 15, 2019

Copy link
Copy Markdown
Collaborator

Adding a CSV value makes the recovery case less self contained.

What does that mean ?

Having you peer include in its commit tx an output that sends directly to your wallet feels just plain wrong. What is the point of even negotiating a mutual close then ?

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@SomberNight

Copy link
Copy Markdown
Contributor

With this proposal, without adding a CSV delay to the to-remote output, implementation will most likely set their static remote key to one of their BIP32 wallet key
Having you peer include in its commit tx an output that sends directly to your wallet

Note that the to-remote-output pays to a p2wpkh script; and longer term there will be wallets who would not by default derive p2wpkh addresses for their main on-chain addresses. E.g. when witness v1 gets soft forked in, some wallets might want to only have witness v1 addresses, and those will then need to sweep the to-remote outputs, at which point a cooperative close paying directly to one of their main witness v1 addresses (as soon as will be allowed for a cooperative close to do so, as it is not atm) would be cheaper.

My point is that it's not necessarily a true assumption that the commitment tx having a static p2wpkh output can always directly pay to a main wallet address.

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@SomberNight

SomberNight commented Sep 15, 2019

Copy link
Copy Markdown
Contributor

There are already wallets that only derive witness v0 outputs, e.g. Wasabi and Electrum.

edit; and there is no need for a transition period between v0 and v1, as in theory anyone who can pay to v0 can also do so to v1.

@sstone

Copy link
Copy Markdown
Collaborator

@Roasbeef I don't see why adding a delay here prevents you from recovering your funds ? My point is that not having such a delay was bad before and we're making it worse.

The fact that you currently need you peer's commit point is a different problem. the to-remote key could have been derived from the remote commit point (I don't think it makes security/privacy worse) and it would have made recovery much simpler.

@SomberNight well we'll have eltoo by then won't we :) but it may not be soon...

@Roasbeef

Copy link
Copy Markdown
Collaborator

I don't see why adding a delay here prevents you from recovering your funds ?

It doesn't prevent it, it makes it less self contained: recovery logic now needs additional data (to reconstruct the script).

My point is that not having such a delay was bad before and we're making it worse.

With my response being that the real incentive issue here is the initiator always paying the fees whenever a channel closes.

The fact that you currently need you peer's commit point is a different problem. the to-remote key could have been derived from the remote commit point (I don't think it makes security/privacy worse) and it would have made recovery much simpler.

This is the very problem that's being fixed with this change.

@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

@Roasbeef Meeting nodes say this is pending your ack to merge? Ping!

@Roasbeef

Copy link
Copy Markdown
Collaborator

@rustyrussell needs a rebase! I'll make another PR to add that note re compatibility with detecting proper data loss from state zero.

@Roasbeef

Copy link
Copy Markdown
Collaborator

Actually, the current text looks fine, scratch my last comment, doing one final pass over everything.

@RoasbeefRoasbeef left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🍕

@cfromknecht

Copy link
Copy Markdown
Contributor

needs rebase!!

This separates out the static remotekey changes from the more ambitious
option_simplified_commitment (which also included pushme outputs and
bring-your-own-fee for HTLC outputs).
As per http://www.erisian.com.au/meetbot/lightning-dev/2019/lightning-dev.2019-09-02-20.06.html
Thanks to everyone for feedback: @araspitzu@Roasbeef @bitconner
Suggested-by: @Roasbeef
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Trivial rebase, and collapsed into a single commit.

@murchandamus

murchandamus commented Oct 9, 2019

Copy link
Copy Markdown

This appears to allow to self-select an address from the Lightning Client's wallet only. Is anything planned that would require channels to close to an arbitrary user-selected addresses in the force-close scenario?

@Roasbeef

Roasbeef commented Oct 9, 2019 via email

Copy link
Copy Markdown
Collaborator

@blacktemplar

Copy link
Copy Markdown

I have a question for this change: With this change is it possible to use low fees on the commitment transaction and in the case of a force close use CPFP to get the transaction through? I really hope this is possible some day since if the fee market gets serious the high fees for commitment transactions serving as an upper bound will be a big problem in my opinion. Using CPFP would enable a much more dynamic fee system and every participant could decide for themselves how fast they need the assets / how much they want to pay for fees.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Meeting DiscussionRaise at next meeting

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@rustyrussell@sstone@Roasbeef@SomberNight@cfromknecht@murchandamus@blacktemplar@araspitzu@niftynei@t-bast
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

option_static_remotekey - #642

Merged
rustyrussell merged 1 commit into
lightning:masterfrom
rustyrussell:option_static_remotekey
Sep 26, 2019
Merged

option_static_remotekey#642
rustyrussell merged 1 commit into
lightning:masterfrom
rustyrussell:option_static_remotekey

Conversation

@rustyrussell

Copy link
Copy Markdown
Collaborator

This is now just removing key rotation (no CSV symmetry). I've used the placeholder optnum 48/49, we can assign a proper one at the meeting if accepted.

I have implemented this in c-lightning as an EXPERIMENTAL_FEATURES option, but not yet merged. It seems to work, and I also have protocol tests for it.

@rustyrussellrustyrussell added the Meeting Discussion Raise at next meeting label Jul 17, 2019

@cfromknechtcfromknecht left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @rustyrussell, definitely like the size of diff :)

Do we also want to modify the derivations described in BOLT 3 to say that that the payment_basepoint is not tweaked?

Comment thread02-peer-protocol.md Outdated
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Thanks @rustyrussell, definitely like the size of diff :)

Do we also want to modify the derivations described in BOLT 3 to say that that the payment_basepoint is not tweaked?

Huh, somehow my rebase lost that part! I def did edit that, will push...

Comment thread03-transactions.md Outdated
Comment thread02-peer-protocol.md Outdated
removed, but the disclosure of previous secret still allows
fall-behind detection. An implementation can offer both, however, and
fall back to the `option_data_loss_protect` behavior if
`option_simplified_commitment` is not negotiated.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
`option_simplified_commitment` is not negotiated.
`option_static_remotekey` is not negotiated.

@niftyneiniftynei removed the Meeting Discussion Raise at next meeting label Jul 22, 2019
Comment thread02-peer-protocol.md Outdated
Comment thread02-peer-protocol.md
Comment thread09-features.md Outdated
Comment thread02-peer-protocol.md
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Rebased to fix minor conflicts, and added minor fixes in separate commit.

rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

OK, I am now running this on my two main test nodes:

mainnet: 024b9a1fa8e006f1e3937f65f66c408e6da8e1ca728ea43222a7381df1cc449605
testnet: 031a3478d481b92e3c28810228252898c5f0d82fc4d07f5210c4f34d4aba56b769

@rustyrussellrustyrussell mentioned this pull request Sep 2, 2019
10 tasks
@rustyrussellrustyrussell changed the title option_static_remotekey: first draft.option_static_remotekeySep 3, 2019
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 7, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 7, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 10, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
niftynei pushed a commit to ElementsProject/lightning that referenced this pull request Sep 10, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@sstone

Copy link
Copy Markdown
Collaborator

It just hit me that switching to static remote keys without adding a CSV delay, as for the to-local keys, is making incentives for using mutual vs force close worse than they are today.

With the current specs, not having a delay on the to-remote is already a problem: if you can get your peer to publish their commit tx, you get a UTXO that you can spend right away, while they have to wait to spend theirs. However, most implementations will use BIP32 wallets and will want spend this output (and pay onchain fees) and send it to a wallet key, as it makes backup/restore of onchain funds much easier (you just need your seed). So it's still better to negotiate a mutual close whenever possible, as it will return your funds directly to your BIP32 wallet.

With this proposal, without adding a CSV delay to the to-remote output, implementation will most likely set their static remote key to one of their BIP32 wallet key, which means that in practice getting your peers to publish their commit tx will always be the fastest solution, and could also be the cheapest if fees are going up and you don't want to negotiate.

This is why I would strongly prefer that we add a CSV delay to the to-remote output: users would then have an incentive to mutual close channels whenever possible, and not play the "get your peer to close first" game.

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@sstone

sstone commented Sep 15, 2019

Copy link
Copy Markdown
Collaborator

Adding a CSV value makes the recovery case less self contained.

What does that mean ?

Having you peer include in its commit tx an output that sends directly to your wallet feels just plain wrong. What is the point of even negotiating a mutual close then ?

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@SomberNight

Copy link
Copy Markdown
Contributor

With this proposal, without adding a CSV delay to the to-remote output, implementation will most likely set their static remote key to one of their BIP32 wallet key
Having you peer include in its commit tx an output that sends directly to your wallet

Note that the to-remote-output pays to a p2wpkh script; and longer term there will be wallets who would not by default derive p2wpkh addresses for their main on-chain addresses. E.g. when witness v1 gets soft forked in, some wallets might want to only have witness v1 addresses, and those will then need to sweep the to-remote outputs, at which point a cooperative close paying directly to one of their main witness v1 addresses (as soon as will be allowed for a cooperative close to do so, as it is not atm) would be cheaper.

My point is that it's not necessarily a true assumption that the commitment tx having a static p2wpkh output can always directly pay to a main wallet address.

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@SomberNight

SomberNight commented Sep 15, 2019

Copy link
Copy Markdown
Contributor

There are already wallets that only derive witness v0 outputs, e.g. Wasabi and Electrum.

edit; and there is no need for a transition period between v0 and v1, as in theory anyone who can pay to v0 can also do so to v1.

@sstone

Copy link
Copy Markdown
Collaborator

@Roasbeef I don't see why adding a delay here prevents you from recovering your funds ? My point is that not having such a delay was bad before and we're making it worse.

The fact that you currently need you peer's commit point is a different problem. the to-remote key could have been derived from the remote commit point (I don't think it makes security/privacy worse) and it would have made recovery much simpler.

@SomberNight well we'll have eltoo by then won't we :) but it may not be soon...

@Roasbeef

Copy link
Copy Markdown
Collaborator

I don't see why adding a delay here prevents you from recovering your funds ?

It doesn't prevent it, it makes it less self contained: recovery logic now needs additional data (to reconstruct the script).

My point is that not having such a delay was bad before and we're making it worse.

With my response being that the real incentive issue here is the initiator always paying the fees whenever a channel closes.

The fact that you currently need you peer's commit point is a different problem. the to-remote key could have been derived from the remote commit point (I don't think it makes security/privacy worse) and it would have made recovery much simpler.

This is the very problem that's being fixed with this change.

@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

@Roasbeef Meeting nodes say this is pending your ack to merge? Ping!

@Roasbeef

Copy link
Copy Markdown
Collaborator

@rustyrussell needs a rebase! I'll make another PR to add that note re compatibility with detecting proper data loss from state zero.

@Roasbeef

Copy link
Copy Markdown
Collaborator

Actually, the current text looks fine, scratch my last comment, doing one final pass over everything.

@RoasbeefRoasbeef left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🍕

@cfromknecht

Copy link
Copy Markdown
Contributor

needs rebase!!

This separates out the static remotekey changes from the more ambitious
option_simplified_commitment (which also included pushme outputs and
bring-your-own-fee for HTLC outputs).
As per http://www.erisian.com.au/meetbot/lightning-dev/2019/lightning-dev.2019-09-02-20.06.html
Thanks to everyone for feedback: @araspitzu@Roasbeef @bitconner
Suggested-by: @Roasbeef
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Trivial rebase, and collapsed into a single commit.

@murchandamus

murchandamus commented Oct 9, 2019

Copy link
Copy Markdown

This appears to allow to self-select an address from the Lightning Client's wallet only. Is anything planned that would require channels to close to an arbitrary user-selected addresses in the force-close scenario?

@Roasbeef

Roasbeef commented Oct 9, 2019 via email

Copy link
Copy Markdown
Collaborator

@blacktemplar

Copy link
Copy Markdown

I have a question for this change: With this change is it possible to use low fees on the commitment transaction and in the case of a force close use CPFP to get the transaction through? I really hope this is possible some day since if the fee market gets serious the high fees for commitment transactions serving as an upper bound will be a big problem in my opinion. Using CPFP would enable a much more dynamic fee system and every participant could decide for themselves how fast they need the assets / how much they want to pay for fees.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Meeting DiscussionRaise at next meeting

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@rustyrussell@sstone@Roasbeef@SomberNight@cfromknecht@murchandamus@blacktemplar@araspitzu@niftynei@t-bast
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

option_static_remotekey - #642

Merged
rustyrussell merged 1 commit into
lightning:masterfrom
rustyrussell:option_static_remotekey
Sep 26, 2019
Merged

option_static_remotekey#642
rustyrussell merged 1 commit into
lightning:masterfrom
rustyrussell:option_static_remotekey

Conversation

@rustyrussell

Copy link
Copy Markdown
Collaborator

This is now just removing key rotation (no CSV symmetry). I've used the placeholder optnum 48/49, we can assign a proper one at the meeting if accepted.

I have implemented this in c-lightning as an EXPERIMENTAL_FEATURES option, but not yet merged. It seems to work, and I also have protocol tests for it.

@rustyrussellrustyrussell added the Meeting Discussion Raise at next meeting label Jul 17, 2019

@cfromknechtcfromknecht left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @rustyrussell, definitely like the size of diff :)

Do we also want to modify the derivations described in BOLT 3 to say that that the payment_basepoint is not tweaked?

Comment thread02-peer-protocol.md Outdated
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Thanks @rustyrussell, definitely like the size of diff :)

Do we also want to modify the derivations described in BOLT 3 to say that that the payment_basepoint is not tweaked?

Huh, somehow my rebase lost that part! I def did edit that, will push...

Comment thread03-transactions.md Outdated
Comment thread02-peer-protocol.md Outdated
removed, but the disclosure of previous secret still allows
fall-behind detection. An implementation can offer both, however, and
fall back to the `option_data_loss_protect` behavior if
`option_simplified_commitment` is not negotiated.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
`option_simplified_commitment` is not negotiated.
`option_static_remotekey` is not negotiated.

@niftyneiniftynei removed the Meeting Discussion Raise at next meeting label Jul 22, 2019
Comment thread02-peer-protocol.md Outdated
Comment thread02-peer-protocol.md
Comment thread09-features.md Outdated
Comment thread02-peer-protocol.md
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Rebased to fix minor conflicts, and added minor fixes in separate commit.

rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

OK, I am now running this on my two main test nodes:

mainnet: 024b9a1fa8e006f1e3937f65f66c408e6da8e1ca728ea43222a7381df1cc449605
testnet: 031a3478d481b92e3c28810228252898c5f0d82fc4d07f5210c4f34d4aba56b769

@rustyrussellrustyrussell mentioned this pull request Sep 2, 2019
10 tasks
@rustyrussellrustyrussell changed the title option_static_remotekey: first draft.option_static_remotekeySep 3, 2019
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 7, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 7, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 10, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
niftynei pushed a commit to ElementsProject/lightning that referenced this pull request Sep 10, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@sstone

Copy link
Copy Markdown
Collaborator

It just hit me that switching to static remote keys without adding a CSV delay, as for the to-local keys, is making incentives for using mutual vs force close worse than they are today.

With the current specs, not having a delay on the to-remote is already a problem: if you can get your peer to publish their commit tx, you get a UTXO that you can spend right away, while they have to wait to spend theirs. However, most implementations will use BIP32 wallets and will want spend this output (and pay onchain fees) and send it to a wallet key, as it makes backup/restore of onchain funds much easier (you just need your seed). So it's still better to negotiate a mutual close whenever possible, as it will return your funds directly to your BIP32 wallet.

With this proposal, without adding a CSV delay to the to-remote output, implementation will most likely set their static remote key to one of their BIP32 wallet key, which means that in practice getting your peers to publish their commit tx will always be the fastest solution, and could also be the cheapest if fees are going up and you don't want to negotiate.

This is why I would strongly prefer that we add a CSV delay to the to-remote output: users would then have an incentive to mutual close channels whenever possible, and not play the "get your peer to close first" game.

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@sstone

sstone commented Sep 15, 2019

Copy link
Copy Markdown
Collaborator

Adding a CSV value makes the recovery case less self contained.

What does that mean ?

Having you peer include in its commit tx an output that sends directly to your wallet feels just plain wrong. What is the point of even negotiating a mutual close then ?

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@SomberNight

Copy link
Copy Markdown
Contributor

With this proposal, without adding a CSV delay to the to-remote output, implementation will most likely set their static remote key to one of their BIP32 wallet key
Having you peer include in its commit tx an output that sends directly to your wallet

Note that the to-remote-output pays to a p2wpkh script; and longer term there will be wallets who would not by default derive p2wpkh addresses for their main on-chain addresses. E.g. when witness v1 gets soft forked in, some wallets might want to only have witness v1 addresses, and those will then need to sweep the to-remote outputs, at which point a cooperative close paying directly to one of their main witness v1 addresses (as soon as will be allowed for a cooperative close to do so, as it is not atm) would be cheaper.

My point is that it's not necessarily a true assumption that the commitment tx having a static p2wpkh output can always directly pay to a main wallet address.

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@SomberNight

SomberNight commented Sep 15, 2019

Copy link
Copy Markdown
Contributor

There are already wallets that only derive witness v0 outputs, e.g. Wasabi and Electrum.

edit; and there is no need for a transition period between v0 and v1, as in theory anyone who can pay to v0 can also do so to v1.

@sstone

Copy link
Copy Markdown
Collaborator

@Roasbeef I don't see why adding a delay here prevents you from recovering your funds ? My point is that not having such a delay was bad before and we're making it worse.

The fact that you currently need you peer's commit point is a different problem. the to-remote key could have been derived from the remote commit point (I don't think it makes security/privacy worse) and it would have made recovery much simpler.

@SomberNight well we'll have eltoo by then won't we :) but it may not be soon...

@Roasbeef

Copy link
Copy Markdown
Collaborator

I don't see why adding a delay here prevents you from recovering your funds ?

It doesn't prevent it, it makes it less self contained: recovery logic now needs additional data (to reconstruct the script).

My point is that not having such a delay was bad before and we're making it worse.

With my response being that the real incentive issue here is the initiator always paying the fees whenever a channel closes.

The fact that you currently need you peer's commit point is a different problem. the to-remote key could have been derived from the remote commit point (I don't think it makes security/privacy worse) and it would have made recovery much simpler.

This is the very problem that's being fixed with this change.

@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

@Roasbeef Meeting nodes say this is pending your ack to merge? Ping!

@Roasbeef

Copy link
Copy Markdown
Collaborator

@rustyrussell needs a rebase! I'll make another PR to add that note re compatibility with detecting proper data loss from state zero.

@Roasbeef

Copy link
Copy Markdown
Collaborator

Actually, the current text looks fine, scratch my last comment, doing one final pass over everything.

@RoasbeefRoasbeef left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🍕

@cfromknecht

Copy link
Copy Markdown
Contributor

needs rebase!!

This separates out the static remotekey changes from the more ambitious
option_simplified_commitment (which also included pushme outputs and
bring-your-own-fee for HTLC outputs).
As per http://www.erisian.com.au/meetbot/lightning-dev/2019/lightning-dev.2019-09-02-20.06.html
Thanks to everyone for feedback: @araspitzu@Roasbeef @bitconner
Suggested-by: @Roasbeef
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Trivial rebase, and collapsed into a single commit.

@murchandamus

murchandamus commented Oct 9, 2019

Copy link
Copy Markdown

This appears to allow to self-select an address from the Lightning Client's wallet only. Is anything planned that would require channels to close to an arbitrary user-selected addresses in the force-close scenario?

@Roasbeef

Roasbeef commented Oct 9, 2019 via email

Copy link
Copy Markdown
Collaborator

@blacktemplar

Copy link
Copy Markdown

I have a question for this change: With this change is it possible to use low fees on the commitment transaction and in the case of a force close use CPFP to get the transaction through? I really hope this is possible some day since if the fee market gets serious the high fees for commitment transactions serving as an upper bound will be a big problem in my opinion. Using CPFP would enable a much more dynamic fee system and every participant could decide for themselves how fast they need the assets / how much they want to pay for fees.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Meeting DiscussionRaise at next meeting

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@rustyrussell@sstone@Roasbeef@SomberNight@cfromknecht@murchandamus@blacktemplar@araspitzu@niftynei@t-bast
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

option_static_remotekey - #642

Merged
rustyrussell merged 1 commit into
lightning:masterfrom
rustyrussell:option_static_remotekey
Sep 26, 2019
Merged

option_static_remotekey#642
rustyrussell merged 1 commit into
lightning:masterfrom
rustyrussell:option_static_remotekey

Conversation

@rustyrussell

Copy link
Copy Markdown
Collaborator

This is now just removing key rotation (no CSV symmetry). I've used the placeholder optnum 48/49, we can assign a proper one at the meeting if accepted.

I have implemented this in c-lightning as an EXPERIMENTAL_FEATURES option, but not yet merged. It seems to work, and I also have protocol tests for it.

@rustyrussellrustyrussell added the Meeting Discussion Raise at next meeting label Jul 17, 2019

@cfromknechtcfromknecht left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @rustyrussell, definitely like the size of diff :)

Do we also want to modify the derivations described in BOLT 3 to say that that the payment_basepoint is not tweaked?

Comment thread02-peer-protocol.md Outdated
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Thanks @rustyrussell, definitely like the size of diff :)

Do we also want to modify the derivations described in BOLT 3 to say that that the payment_basepoint is not tweaked?

Huh, somehow my rebase lost that part! I def did edit that, will push...

Comment thread03-transactions.md Outdated
Comment thread02-peer-protocol.md Outdated
removed, but the disclosure of previous secret still allows
fall-behind detection. An implementation can offer both, however, and
fall back to the `option_data_loss_protect` behavior if
`option_simplified_commitment` is not negotiated.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
`option_simplified_commitment` is not negotiated.
`option_static_remotekey` is not negotiated.

@niftyneiniftynei removed the Meeting Discussion Raise at next meeting label Jul 22, 2019
Comment thread02-peer-protocol.md Outdated
Comment thread02-peer-protocol.md
Comment thread09-features.md Outdated
Comment thread02-peer-protocol.md
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Rebased to fix minor conflicts, and added minor fixes in separate commit.

rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

OK, I am now running this on my two main test nodes:

mainnet: 024b9a1fa8e006f1e3937f65f66c408e6da8e1ca728ea43222a7381df1cc449605
testnet: 031a3478d481b92e3c28810228252898c5f0d82fc4d07f5210c4f34d4aba56b769

@rustyrussellrustyrussell mentioned this pull request Sep 2, 2019
10 tasks
@rustyrussellrustyrussell changed the title option_static_remotekey: first draft.option_static_remotekeySep 3, 2019
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 7, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 7, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 10, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
niftynei pushed a commit to ElementsProject/lightning that referenced this pull request Sep 10, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@sstone

Copy link
Copy Markdown
Collaborator

It just hit me that switching to static remote keys without adding a CSV delay, as for the to-local keys, is making incentives for using mutual vs force close worse than they are today.

With the current specs, not having a delay on the to-remote is already a problem: if you can get your peer to publish their commit tx, you get a UTXO that you can spend right away, while they have to wait to spend theirs. However, most implementations will use BIP32 wallets and will want spend this output (and pay onchain fees) and send it to a wallet key, as it makes backup/restore of onchain funds much easier (you just need your seed). So it's still better to negotiate a mutual close whenever possible, as it will return your funds directly to your BIP32 wallet.

With this proposal, without adding a CSV delay to the to-remote output, implementation will most likely set their static remote key to one of their BIP32 wallet key, which means that in practice getting your peers to publish their commit tx will always be the fastest solution, and could also be the cheapest if fees are going up and you don't want to negotiate.

This is why I would strongly prefer that we add a CSV delay to the to-remote output: users would then have an incentive to mutual close channels whenever possible, and not play the "get your peer to close first" game.

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@sstone

sstone commented Sep 15, 2019

Copy link
Copy Markdown
Collaborator

Adding a CSV value makes the recovery case less self contained.

What does that mean ?

Having you peer include in its commit tx an output that sends directly to your wallet feels just plain wrong. What is the point of even negotiating a mutual close then ?

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@SomberNight

Copy link
Copy Markdown
Contributor

With this proposal, without adding a CSV delay to the to-remote output, implementation will most likely set their static remote key to one of their BIP32 wallet key
Having you peer include in its commit tx an output that sends directly to your wallet

Note that the to-remote-output pays to a p2wpkh script; and longer term there will be wallets who would not by default derive p2wpkh addresses for their main on-chain addresses. E.g. when witness v1 gets soft forked in, some wallets might want to only have witness v1 addresses, and those will then need to sweep the to-remote outputs, at which point a cooperative close paying directly to one of their main witness v1 addresses (as soon as will be allowed for a cooperative close to do so, as it is not atm) would be cheaper.

My point is that it's not necessarily a true assumption that the commitment tx having a static p2wpkh output can always directly pay to a main wallet address.

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@SomberNight

SomberNight commented Sep 15, 2019

Copy link
Copy Markdown
Contributor

There are already wallets that only derive witness v0 outputs, e.g. Wasabi and Electrum.

edit; and there is no need for a transition period between v0 and v1, as in theory anyone who can pay to v0 can also do so to v1.

@sstone

Copy link
Copy Markdown
Collaborator

@Roasbeef I don't see why adding a delay here prevents you from recovering your funds ? My point is that not having such a delay was bad before and we're making it worse.

The fact that you currently need you peer's commit point is a different problem. the to-remote key could have been derived from the remote commit point (I don't think it makes security/privacy worse) and it would have made recovery much simpler.

@SomberNight well we'll have eltoo by then won't we :) but it may not be soon...

@Roasbeef

Copy link
Copy Markdown
Collaborator

I don't see why adding a delay here prevents you from recovering your funds ?

It doesn't prevent it, it makes it less self contained: recovery logic now needs additional data (to reconstruct the script).

My point is that not having such a delay was bad before and we're making it worse.

With my response being that the real incentive issue here is the initiator always paying the fees whenever a channel closes.

The fact that you currently need you peer's commit point is a different problem. the to-remote key could have been derived from the remote commit point (I don't think it makes security/privacy worse) and it would have made recovery much simpler.

This is the very problem that's being fixed with this change.

@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

@Roasbeef Meeting nodes say this is pending your ack to merge? Ping!

@Roasbeef

Copy link
Copy Markdown
Collaborator

@rustyrussell needs a rebase! I'll make another PR to add that note re compatibility with detecting proper data loss from state zero.

@Roasbeef

Copy link
Copy Markdown
Collaborator

Actually, the current text looks fine, scratch my last comment, doing one final pass over everything.

@RoasbeefRoasbeef left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🍕

@cfromknecht

Copy link
Copy Markdown
Contributor

needs rebase!!

This separates out the static remotekey changes from the more ambitious
option_simplified_commitment (which also included pushme outputs and
bring-your-own-fee for HTLC outputs).
As per http://www.erisian.com.au/meetbot/lightning-dev/2019/lightning-dev.2019-09-02-20.06.html
Thanks to everyone for feedback: @araspitzu@Roasbeef @bitconner
Suggested-by: @Roasbeef
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Trivial rebase, and collapsed into a single commit.

@murchandamus

murchandamus commented Oct 9, 2019

Copy link
Copy Markdown

This appears to allow to self-select an address from the Lightning Client's wallet only. Is anything planned that would require channels to close to an arbitrary user-selected addresses in the force-close scenario?

@Roasbeef

Roasbeef commented Oct 9, 2019 via email

Copy link
Copy Markdown
Collaborator

@blacktemplar

Copy link
Copy Markdown

I have a question for this change: With this change is it possible to use low fees on the commitment transaction and in the case of a force close use CPFP to get the transaction through? I really hope this is possible some day since if the fee market gets serious the high fees for commitment transactions serving as an upper bound will be a big problem in my opinion. Using CPFP would enable a much more dynamic fee system and every participant could decide for themselves how fast they need the assets / how much they want to pay for fees.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Meeting DiscussionRaise at next meeting

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@rustyrussell@sstone@Roasbeef@SomberNight@cfromknecht@murchandamus@blacktemplar@araspitzu@niftynei@t-bast
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

option_static_remotekey - #642

Merged
rustyrussell merged 1 commit into
lightning:masterfrom
rustyrussell:option_static_remotekey
Sep 26, 2019
Merged

option_static_remotekey#642
rustyrussell merged 1 commit into
lightning:masterfrom
rustyrussell:option_static_remotekey

Conversation

@rustyrussell

Copy link
Copy Markdown
Collaborator

This is now just removing key rotation (no CSV symmetry). I've used the placeholder optnum 48/49, we can assign a proper one at the meeting if accepted.

I have implemented this in c-lightning as an EXPERIMENTAL_FEATURES option, but not yet merged. It seems to work, and I also have protocol tests for it.

@rustyrussellrustyrussell added the Meeting Discussion Raise at next meeting label Jul 17, 2019

@cfromknechtcfromknecht left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @rustyrussell, definitely like the size of diff :)

Do we also want to modify the derivations described in BOLT 3 to say that that the payment_basepoint is not tweaked?

Comment thread02-peer-protocol.md Outdated
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Thanks @rustyrussell, definitely like the size of diff :)

Do we also want to modify the derivations described in BOLT 3 to say that that the payment_basepoint is not tweaked?

Huh, somehow my rebase lost that part! I def did edit that, will push...

Comment thread03-transactions.md Outdated
Comment thread02-peer-protocol.md Outdated
removed, but the disclosure of previous secret still allows
fall-behind detection. An implementation can offer both, however, and
fall back to the `option_data_loss_protect` behavior if
`option_simplified_commitment` is not negotiated.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
`option_simplified_commitment` is not negotiated.
`option_static_remotekey` is not negotiated.

@niftyneiniftynei removed the Meeting Discussion Raise at next meeting label Jul 22, 2019
Comment thread02-peer-protocol.md Outdated
Comment thread02-peer-protocol.md
Comment thread09-features.md Outdated
Comment thread02-peer-protocol.md
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Rebased to fix minor conflicts, and added minor fixes in separate commit.

rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Aug 29, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

OK, I am now running this on my two main test nodes:

mainnet: 024b9a1fa8e006f1e3937f65f66c408e6da8e1ca728ea43222a7381df1cc449605
testnet: 031a3478d481b92e3c28810228252898c5f0d82fc4d07f5210c4f34d4aba56b769

@rustyrussellrustyrussell mentioned this pull request Sep 2, 2019
10 tasks
@rustyrussellrustyrussell changed the title option_static_remotekey: first draft.option_static_remotekeySep 3, 2019
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 7, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 7, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
rustyrussell added a commit to rustyrussell/lightning that referenced this pull request Sep 10, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
niftynei pushed a commit to ElementsProject/lightning that referenced this pull request Sep 10, 2019
Aka. BOLTVERSION=930a9b44076a8f25a8626b31b3d5a55c0888308c from
lightning/bolts#642
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@sstone

Copy link
Copy Markdown
Collaborator

It just hit me that switching to static remote keys without adding a CSV delay, as for the to-local keys, is making incentives for using mutual vs force close worse than they are today.

With the current specs, not having a delay on the to-remote is already a problem: if you can get your peer to publish their commit tx, you get a UTXO that you can spend right away, while they have to wait to spend theirs. However, most implementations will use BIP32 wallets and will want spend this output (and pay onchain fees) and send it to a wallet key, as it makes backup/restore of onchain funds much easier (you just need your seed). So it's still better to negotiate a mutual close whenever possible, as it will return your funds directly to your BIP32 wallet.

With this proposal, without adding a CSV delay to the to-remote output, implementation will most likely set their static remote key to one of their BIP32 wallet key, which means that in practice getting your peers to publish their commit tx will always be the fastest solution, and could also be the cheapest if fees are going up and you don't want to negotiate.

This is why I would strongly prefer that we add a CSV delay to the to-remote output: users would then have an incentive to mutual close channels whenever possible, and not play the "get your peer to close first" game.

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@sstone

sstone commented Sep 15, 2019

Copy link
Copy Markdown
Collaborator

Adding a CSV value makes the recovery case less self contained.

What does that mean ?

Having you peer include in its commit tx an output that sends directly to your wallet feels just plain wrong. What is the point of even negotiating a mutual close then ?

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@SomberNight

Copy link
Copy Markdown
Contributor

With this proposal, without adding a CSV delay to the to-remote output, implementation will most likely set their static remote key to one of their BIP32 wallet key
Having you peer include in its commit tx an output that sends directly to your wallet

Note that the to-remote-output pays to a p2wpkh script; and longer term there will be wallets who would not by default derive p2wpkh addresses for their main on-chain addresses. E.g. when witness v1 gets soft forked in, some wallets might want to only have witness v1 addresses, and those will then need to sweep the to-remote outputs, at which point a cooperative close paying directly to one of their main witness v1 addresses (as soon as will be allowed for a cooperative close to do so, as it is not atm) would be cheaper.

My point is that it's not necessarily a true assumption that the commitment tx having a static p2wpkh output can always directly pay to a main wallet address.

@Roasbeef

Roasbeef commented Sep 15, 2019 via email

Copy link
Copy Markdown
Collaborator

@SomberNight

SomberNight commented Sep 15, 2019

Copy link
Copy Markdown
Contributor

There are already wallets that only derive witness v0 outputs, e.g. Wasabi and Electrum.

edit; and there is no need for a transition period between v0 and v1, as in theory anyone who can pay to v0 can also do so to v1.

@sstone

Copy link
Copy Markdown
Collaborator

@Roasbeef I don't see why adding a delay here prevents you from recovering your funds ? My point is that not having such a delay was bad before and we're making it worse.

The fact that you currently need you peer's commit point is a different problem. the to-remote key could have been derived from the remote commit point (I don't think it makes security/privacy worse) and it would have made recovery much simpler.

@SomberNight well we'll have eltoo by then won't we :) but it may not be soon...

@Roasbeef

Copy link
Copy Markdown
Collaborator

I don't see why adding a delay here prevents you from recovering your funds ?

It doesn't prevent it, it makes it less self contained: recovery logic now needs additional data (to reconstruct the script).

My point is that not having such a delay was bad before and we're making it worse.

With my response being that the real incentive issue here is the initiator always paying the fees whenever a channel closes.

The fact that you currently need you peer's commit point is a different problem. the to-remote key could have been derived from the remote commit point (I don't think it makes security/privacy worse) and it would have made recovery much simpler.

This is the very problem that's being fixed with this change.

@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

@Roasbeef Meeting nodes say this is pending your ack to merge? Ping!

@Roasbeef

Copy link
Copy Markdown
Collaborator

@rustyrussell needs a rebase! I'll make another PR to add that note re compatibility with detecting proper data loss from state zero.

@Roasbeef

Copy link
Copy Markdown
Collaborator

Actually, the current text looks fine, scratch my last comment, doing one final pass over everything.

@RoasbeefRoasbeef left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🍕

@cfromknecht

Copy link
Copy Markdown
Contributor

needs rebase!!

This separates out the static remotekey changes from the more ambitious
option_simplified_commitment (which also included pushme outputs and
bring-your-own-fee for HTLC outputs).
As per http://www.erisian.com.au/meetbot/lightning-dev/2019/lightning-dev.2019-09-02-20.06.html
Thanks to everyone for feedback: @araspitzu@Roasbeef @bitconner
Suggested-by: @Roasbeef
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
@rustyrussell

Copy link
Copy Markdown
CollaboratorAuthor

Trivial rebase, and collapsed into a single commit.

@murchandamus

murchandamus commented Oct 9, 2019

Copy link
Copy Markdown

This appears to allow to self-select an address from the Lightning Client's wallet only. Is anything planned that would require channels to close to an arbitrary user-selected addresses in the force-close scenario?

@Roasbeef

Roasbeef commented Oct 9, 2019 via email

Copy link
Copy Markdown
Collaborator

@blacktemplar

Copy link
Copy Markdown

I have a question for this change: With this change is it possible to use low fees on the commitment transaction and in the case of a force close use CPFP to get the transaction through? I really hope this is possible some day since if the fee market gets serious the high fees for commitment transactions serving as an upper bound will be a big problem in my opinion. Using CPFP would enable a much more dynamic fee system and every participant could decide for themselves how fast they need the assets / how much they want to pay for fees.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Meeting DiscussionRaise at next meeting

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@rustyrussell@sstone@Roasbeef@SomberNight@cfromknecht@murchandamus@blacktemplar@araspitzu@niftynei@t-bast