NEW PAYMENT CHANNEL UPGRADE PROPOSALThis new concept could bring major improvements to the lightning network. These are the proposed improvements.
- Any user could connect to several other users on the same payment channel then go offline without disrupting the channel.
- Users could make instant withdrawals with the cooperation of their peers.
- We would only need the public key of the people we want to connect with to start a channel with them.
Please, take a minute to read this. This is an overview of the concept (for now let's call it the multidirectional payment channel).
Creating a channel: One of the participants opens the channel by transferring any amount of coins to a new multi-signature wallet. For security reasons the creator of the wallet (or the main user) must preset a limit on the withdrawal fees (this restriction can be overruled with the signature of all the participants).
Deposits/withdrawals: Only the creator of the wallet can fund the channel but any participant can withdraw their coins. The withdrawals can be validated by one signature or by all the signatures (the funds will be temporarily frozen unless the transaction is signed by everyone).
Payments: To make a transaction the payer must sign a payment to the payee then have it signed by all the other participants (they will actually sign their new balance on the channel). The main user does not have to sign the payments of the other users (so he can go offline and it will not affect anyone).
Security: All the channel participants must protect themselves against fraud by verifying the payments that are made from their wallet. Any user can invalidate a fraudulent transaction with a penalty transaction and prevent the cheater from withdrawing more funds. A transaction can no longer be invalidated after the funds are unfrozen.
DISPUTE RESOLUTION CLAUSEWhen signing a lightning transaction the channel participants create a "bill" that allows the payee to spend the amount of the transaction. Those bills can be used to come to an agreement in the case of a dispute (it can take up to four steps to close a case). I will give you an example showing you how a case can be resolved. In this example there will be three channel participants with the pseudonyms Alice, Bob and Carol.
1.Alice makes a withdrawal.
2.Bob or Carol posts a penalty transaction to invalidate Alice’s withdrawal.
3.Alice sends the latest lightning payment that was signed to her to prove that she has enough funds for her withdrawal.
4.Bob or Carol posts a more recent payment signed by Alice to invalidate her proof.
There are a few important things to point out..
1.The creator of the wallet basically signs the total balance of the other users when he sends them a payment and the other users sign their own total balance when they send him a payment. The main user doesn’t need to know the balance of each participant as he can invalidate a withdrawal by simply proving that the user who is making it is spending his balance (on the opposite side the other participants can invalidate his withdrawals by proving that he’s trying to spend their balance). The payments from the main user require two transactions (one signed by his peers and one signed by himself).
2.The public key of any cheater will be removed from the channel (the coins on his channel will be transferred to a new wallet where his key is removed).
3.A withdrawal does not close the channel (the user who requested it must return the amount he owes to the other users).
4.A penalty transaction does not need to include any proof against the targeted user if he is not the main user (that is simply because there could be no proof if the targeted user did not sign any lightning payment).
I believe we could implement this system with a soft fork but for sure there are a lot of technical details to go through. You’re all invited to contribute to the development so we can all prosper!
Thanks,
Thomas