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 <[email protected]> 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 > [email protected] > https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev >
_______________________________________________ Lightning-dev mailing list [email protected] https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev
