Skip to content

Add optional close address#3702

Merged
wpaulino merged 3 commits into
lightningnetwork:masterfrom
carlaKC:lnrpc-addcloseaddress
Dec 10, 2019
Merged

Add optional close address#3702
wpaulino merged 3 commits into
lightningnetwork:masterfrom
carlaKC:lnrpc-addcloseaddress

Conversation

@carlaKC
Copy link
Copy Markdown
Collaborator

@carlaKC carlaKC commented Nov 11, 2019

This PR adds a delivery_address field to lnrpc and lncli's CloseChannel request which allows users to specify an address to close out to on cooperative closure of a channel. If an upfront shutdown address was set on channel open, requesting to close the channel out to a specific address will fail.

This PR replaces #1462.

This PR is rebased on the open upfront shutdown PR #3655, as much of the logic is shared.
Only the last 3 commits in this PR are relevant for review.

@joostjager
Copy link
Copy Markdown
Contributor

Needs rebase

@carlaKC carlaKC force-pushed the lnrpc-addcloseaddress branch from 30168ae to 377e730 Compare November 12, 2019 15:53
@Roasbeef Roasbeef requested review from bhandras and removed request for cfromknecht November 13, 2019 03:36
Comment thread lnrpc/rpc.swagger.json Outdated
Copy link
Copy Markdown
Collaborator

@bhandras bhandras left a comment

Choose a reason for hiding this comment

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

Really nice PR!

Comment thread htlcswitch/switch.go Outdated
Comment thread chancloser.go Outdated
Comment thread chancloser.go Outdated
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.

I'd probably call this function sg like: Matches and maybe move it under lnwire.DeliveryAddress (and add a unit test). WDYT?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

+1 for the unit test, see comment below for context on this check :)

Comment thread chancloser.go Outdated
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.

Does this check add anything (if yes: should emptyness checked for address)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

So here we are checking whether the address our peer has provided matches the pre-negotiated upfront address. There are two cases:

  1. They did not negotiate an upfront address (it's an optional feature), so we do not need to enforce close out to a specific address
  2. They did negotiate an upfront address, and we need to check that they're sticking to it; if not, we need to disconnect as per the spec's instruction because they may be comporomised

Comment thread chancloser_test.go Outdated
Comment thread fundingmanager_test.go Outdated
Comment thread lnwallet/reservation.go Outdated
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.

nit: As a reader it's really confusing to me that sometimes it's Shutdown, sometimes ShutdownScript. I guess this is because I'm not familiar with the code base yet.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

That's an inconsistency on my side, trying to keep var names brief. I'll settle on one or the other,

Comment thread lnwire/accept_channel_test.go Outdated
Comment thread lnwire/shutdown.go Outdated
Comment thread peer_test.go Outdated
@carlaKC
Copy link
Copy Markdown
Collaborator Author

carlaKC commented Nov 19, 2019

Thanks for the review @bhandras!
Since this PR is rebased on #3655, only the last two commits are relevant for review in this PR, sorry for not making that clearer! I'm not going to reply to the comments on the original PR commits, because that's going to add noise to this PR, but I will address them on 3655.

@carlaKC carlaKC force-pushed the lnrpc-addcloseaddress branch from 377e730 to 38acea3 Compare November 20, 2019 09:55
Comment thread rpcserver.go Outdated
@carlaKC
Copy link
Copy Markdown
Collaborator Author

carlaKC commented Nov 20, 2019

Updated to address comments and rebased on #3655.

@halseth halseth requested a review from bhandras November 21, 2019 13:40
Comment thread channeldb/channel.go Outdated
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.

After taking a closer look, it's always inside a Bolt transaction and therefore atomic.

Comment thread lnrpc/rpc.swagger.json Outdated
Comment thread fundingmanager.go Outdated
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.

Duh :) Sorry, didn't pay attention to what txscropt.PayToAddrScript(addr) returns :)

@carlaKC carlaKC force-pushed the lnrpc-addcloseaddress branch from 38acea3 to ee36c82 Compare December 3, 2019 09:44
@carlaKC
Copy link
Copy Markdown
Collaborator Author

carlaKC commented Dec 3, 2019

Rebased, but going to hold off on review for this one until parent PR is in.

@carlaKC carlaKC force-pushed the lnrpc-addcloseaddress branch from ee36c82 to c128b6b Compare December 5, 2019 10:53
@carlaKC carlaKC requested a review from bhandras December 5, 2019 10:58
Copy link
Copy Markdown
Collaborator

@bhandras bhandras left a comment

Choose a reason for hiding this comment

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

Only nits, other than these: LGTM 💯

Comment thread lnrpc/rpc.proto Outdated
Comment thread chancloser.go Outdated
Comment thread rpcserver.go Outdated
Comment thread server.go Outdated
@Roasbeef Roasbeef requested review from wpaulino and removed request for halseth December 5, 2019 18:48
Copy link
Copy Markdown
Contributor

@wpaulino wpaulino left a comment

Choose a reason for hiding this comment

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

Nice to finally have this land! Just a few nits from me, also needs a rebase due to a proto conflict.

EDIT: I think it'd be nice to give the original author of the PR credit in the other commits as well.

Comment thread cmd/lncli/commands.go Outdated
Comment thread htlcswitch/switch.go Outdated
Comment thread peer.go Outdated
Comment thread peer_test.go Outdated
@carlaKC carlaKC force-pushed the lnrpc-addcloseaddress branch from c128b6b to 7672cc9 Compare December 6, 2019 12:51
@carlaKC carlaKC force-pushed the lnrpc-addcloseaddress branch 2 times, most recently from e1b0b81 to 3ff4ba9 Compare December 6, 2019 14:09
@carlaKC carlaKC requested a review from bhandras December 8, 2019 12:57
Comment thread rpcserver.go Outdated
Comment thread server.go Outdated
@carlaKC carlaKC force-pushed the lnrpc-addcloseaddress branch from 3ff4ba9 to 6b3280c Compare December 9, 2019 13:51
Bluetegu and others added 3 commits December 10, 2019 09:12
This commit is adapted from @Bluetegu's original
pull request lightningnetwork#1462.
This commit is adapted from @Bluetegu's original
pull request lightningnetwork#1462.

This commit reads an optional address to pay funds out to
from a user iniitiated close channel address. If the channel
already has a shutdown script set, the request will fail if
an address is provided. Otherwise, the cooperative close will
pay out to the address provided.
@carlaKC carlaKC force-pushed the lnrpc-addcloseaddress branch from 6b3280c to 94d3eb6 Compare December 10, 2019 07:13
@carlaKC
Copy link
Copy Markdown
Collaborator Author

carlaKC commented Dec 10, 2019

Rebased to clear proto conflicts :)

@wpaulino wpaulino merged commit 3c6be62 into lightningnetwork:master Dec 10, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants