Ole Henrik Skogstrøm [ARCHIVE] on Nostr: 📅 Original date posted:2021-09-25 📝 Original message: Thank you Bastien Didn't ...
📅 Original date posted:2021-09-25
📝 Original message:
Thank you Bastien
Didn't know about this PR. Should have searched more thoroughly next time.
But good to see this feature is underway.
--
Ole Henrik Skogstrøm
Mobile: (+47) 97 42 74 44
On Wed, Sep 22, 2021 at 8:58 AM Bastien TEINTURIER <bastien at acinq.fr> wrote:
> Hi,
>
> This is exactly what the dual funding proposal provides:
> https://github.com/lightningnetwork/lightning-rfc/pull/851
>
> Cheers,
> Bastien
>
> Le mer. 22 sept. 2021 à 07:29, Ole Henrik Skogstrøm <
> oleskogstrom at gmail.com> a écrit :
>
>> Hi
>>
>> I have found a way of opening balanced channels using LND's psbt option
>> when opening channels. What I'm doing is essentially just joining funded
>> PSBTs before signing and submitting them. This makes it possible to open a
>> balanced channel between two nodes or open a ring of balanced channels
>> between multiple nodes (ROF).
>>
>> I found this interesting, however I don't know if this is somehow unsafe
>> or for some other reason a bad idea. If not, then it could be an
>> interesting alternative to only being able to open unbalanced channels.
>>
>> To do this efficiently, nodes need to collaborate by sending PSBTs back
>> and forth to each other and doing this manually is a pain, so if this makes
>> sense to do, it would be best to automate it through a client.
>>
>> ----------------------
>> --- Here is an example of the complete flow for a single channel:
>> ----------------------
>>
>> ** Node A: generates a new address and sends address to Node B *(lncli
>> newaddress p2wkh)
>>
>> ** Node A starts an Interactive channel **open** to Node B* *using psbt*
>> (lncli openchannel --psbt <node_b_pubkey> 2000000 1000000)
>>
>> ** Node A funds the channel address *(bitcoin-cli walletcreatefundedpsbt
>> [] '[{"<channel_address>":0.02}]')
>>
>> ** Node B funds the refund transaction to Node A and sends PSBT back to
>> Node A (*bitcoin-cli walletcreatefundedpsbt []
>> '[{"<node_a_return_address>":0.01}]')
>>
>> * *Node A joins the two PSBTs and sends it back to Node B (*bitcoin-cli
>> joinpsbts '["<channel_open_psbt>", "<node_b_return_to_node_a_psbt>"]')
>>
>> ** Node B verifies the content and signs the joined PSBT before sending
>> it back to Node A *(bitcoin-cli walletprocesspsbt <joined_psbt>)
>>
>> ** Node A: Verifies the content and signs the joined PSBT *(bitcoin-cli
>> walletprocesspsbt <joined_psbt>)
>>
>> ** Node A: Completes channel open by publishing the fully signed PSBT*
>>
>>
>> ----------------------
>> --- Here is an example of the complete flow for a ring of channels
>> between multiple nodes:
>> ----------------------
>>
>> ** Node A starts an Interactive open channel to Node B using psbt*
>> (lncli openchannel --psbt --no_publish <node_b_pubkey> 2000000 1000000)
>> ** Node A funds the channel address* (bitcoin-cli walletcreatefundedpsbt
>> [] '[{"<channel_address>":0.02}]')
>>
>> ** Node B starts an Interactive open channel to Node C using psbt*
>> (lncli openchannel --psbt --no_publish <node_b_pubkey> 2000000 1000000)
>> ** Node B funds the channel address* (bitcoin-cli walletcreatefundedpsbt
>> [] '[{"<channel_address>":0.02}]')
>>
>> ** Node C starts an Interactive open channel to Node A using psbt*
>> (lncli openchannel --psbt <node_b_pubkey> 2000000 1000000)
>> ** Node C funds the channel address *(bitcoin-cli walletcreatefundedpsbt
>> [] '[{"<channel_address>":0.02}]')
>>
>> ** Node B and C sends Node A their PSBTs*
>>
>> ** Node A joins all the PSBTs* (bitcoin-cli joinpsbts
>> '["<A_funded_channel_psbt>", "<B_funded_channel_psbt>",
>> "<C_funded_channel_psbt>"]')
>>
>> Using (bitcoin-cli walletprocesspsbt <joined_psbt>):
>>
>>
>>
>> ** Node A verifies and signs the PSBT and sends it to Node B (1/3
>> signatures)* Node B verifies and signs the PSBT and sends it to Node C (2/3
>> signatures)* Node C verifies and signs the PSBT (3/3 signatures) before
>> sending it to Node A and B.*
>>
>>
>> ** Node A completes channel open (no_publish)* Node B completes channel
>> open (no_publish)* Node C completes channel open and publishes the
>> transaction.*
>>
>> --
>> Ole Henrik Skogstrøm
>>
>> _______________________________________________
>> Lightning-dev mailing list
>> Lightning-dev at lists.linuxfoundation.org
>> https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210925/ccd224f4/attachment-0001.html>
📝 Original message:
Thank you Bastien
Didn't know about this PR. Should have searched more thoroughly next time.
But good to see this feature is underway.
--
Ole Henrik Skogstrøm
Mobile: (+47) 97 42 74 44
On Wed, Sep 22, 2021 at 8:58 AM Bastien TEINTURIER <bastien at acinq.fr> wrote:
> Hi,
>
> This is exactly what the dual funding proposal provides:
> https://github.com/lightningnetwork/lightning-rfc/pull/851
>
> Cheers,
> Bastien
>
> Le mer. 22 sept. 2021 à 07:29, Ole Henrik Skogstrøm <
> oleskogstrom at gmail.com> a écrit :
>
>> Hi
>>
>> I have found a way of opening balanced channels using LND's psbt option
>> when opening channels. What I'm doing is essentially just joining funded
>> PSBTs before signing and submitting them. This makes it possible to open a
>> balanced channel between two nodes or open a ring of balanced channels
>> between multiple nodes (ROF).
>>
>> I found this interesting, however I don't know if this is somehow unsafe
>> or for some other reason a bad idea. If not, then it could be an
>> interesting alternative to only being able to open unbalanced channels.
>>
>> To do this efficiently, nodes need to collaborate by sending PSBTs back
>> and forth to each other and doing this manually is a pain, so if this makes
>> sense to do, it would be best to automate it through a client.
>>
>> ----------------------
>> --- Here is an example of the complete flow for a single channel:
>> ----------------------
>>
>> ** Node A: generates a new address and sends address to Node B *(lncli
>> newaddress p2wkh)
>>
>> ** Node A starts an Interactive channel **open** to Node B* *using psbt*
>> (lncli openchannel --psbt <node_b_pubkey> 2000000 1000000)
>>
>> ** Node A funds the channel address *(bitcoin-cli walletcreatefundedpsbt
>> [] '[{"<channel_address>":0.02}]')
>>
>> ** Node B funds the refund transaction to Node A and sends PSBT back to
>> Node A (*bitcoin-cli walletcreatefundedpsbt []
>> '[{"<node_a_return_address>":0.01}]')
>>
>> * *Node A joins the two PSBTs and sends it back to Node B (*bitcoin-cli
>> joinpsbts '["<channel_open_psbt>", "<node_b_return_to_node_a_psbt>"]')
>>
>> ** Node B verifies the content and signs the joined PSBT before sending
>> it back to Node A *(bitcoin-cli walletprocesspsbt <joined_psbt>)
>>
>> ** Node A: Verifies the content and signs the joined PSBT *(bitcoin-cli
>> walletprocesspsbt <joined_psbt>)
>>
>> ** Node A: Completes channel open by publishing the fully signed PSBT*
>>
>>
>> ----------------------
>> --- Here is an example of the complete flow for a ring of channels
>> between multiple nodes:
>> ----------------------
>>
>> ** Node A starts an Interactive open channel to Node B using psbt*
>> (lncli openchannel --psbt --no_publish <node_b_pubkey> 2000000 1000000)
>> ** Node A funds the channel address* (bitcoin-cli walletcreatefundedpsbt
>> [] '[{"<channel_address>":0.02}]')
>>
>> ** Node B starts an Interactive open channel to Node C using psbt*
>> (lncli openchannel --psbt --no_publish <node_b_pubkey> 2000000 1000000)
>> ** Node B funds the channel address* (bitcoin-cli walletcreatefundedpsbt
>> [] '[{"<channel_address>":0.02}]')
>>
>> ** Node C starts an Interactive open channel to Node A using psbt*
>> (lncli openchannel --psbt <node_b_pubkey> 2000000 1000000)
>> ** Node C funds the channel address *(bitcoin-cli walletcreatefundedpsbt
>> [] '[{"<channel_address>":0.02}]')
>>
>> ** Node B and C sends Node A their PSBTs*
>>
>> ** Node A joins all the PSBTs* (bitcoin-cli joinpsbts
>> '["<A_funded_channel_psbt>", "<B_funded_channel_psbt>",
>> "<C_funded_channel_psbt>"]')
>>
>> Using (bitcoin-cli walletprocesspsbt <joined_psbt>):
>>
>>
>>
>> ** Node A verifies and signs the PSBT and sends it to Node B (1/3
>> signatures)* Node B verifies and signs the PSBT and sends it to Node C (2/3
>> signatures)* Node C verifies and signs the PSBT (3/3 signatures) before
>> sending it to Node A and B.*
>>
>>
>> ** Node A completes channel open (no_publish)* Node B completes channel
>> open (no_publish)* Node C completes channel open and publishes the
>> transaction.*
>>
>> --
>> Ole Henrik Skogstrøm
>>
>> _______________________________________________
>> Lightning-dev mailing list
>> Lightning-dev at lists.linuxfoundation.org
>> https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210925/ccd224f4/attachment-0001.html>