- Could you please describe how the Lightning network is supposed to work?
- How does it scale better than pure blockchain transactions?
- What are the advantages and disadvantages of Lightning Network and blockchain transactions?
The Lightning Network is a collection of payment channels between pairs of nodes. To create a payment channel, two users commit funds to a UTXO under shared control. The shared funds allow the users to pay each other by changing how much they will pay out to each eventually. The state of the payment channel is stored in presigned Bitcoin transactions that spends the shared funds back to the individual users. As long as neither broadcasts the final state of the channel to the Bitcoin network, you can think of the funds in the channel like beads on an abacus—they can only go from one side to the other, but cannot leave the channel. By having multiple channels, users can forward payments from one peer to another, allowing payments between peers that don’t have direct connections. The Lightning Network allows for instant payments with a significantly compressed blockchain footprint.
Let’s say that you and I want to open a payment channel.
1. Putting funds into Lightning
We negotiate to each send 0.05 BTC into a shared 2-of-2 multisig output, the channel funding output.¹ This will require a transaction on the Bitcoin blockchain.
As a “balance sheet” and escape hatch, we negotiate a 2-of-2 multisig transaction that pays out 0.05 BTC to you and 0.05 BTC to me. We call this the commitment transaction.
The commitment transaction comes actually in two variants. I sign your commitment transaction and give it to you. If you want to put it in effect, you need only add your own signature and broadcast it to the Bitcoin network. Vice versa, you sign and give me my copy of the commitment transaction. The commitment transactions are future transactions for the Bitcoin network, they're just not valid yet because we have not actually created the channel funding output yet, and because they are each missing one signature. The commitment transaction comes in two variants because the copy you and I hold are asymmetric: your commitment transaction puts a timelock on your Settlement Output, and mine locks my Settlement Output. We’ll see below why we need that.
The commitment transaction guarantees that either of us can close the channel and return the funds to our respective controls by themselves. Now that we are confident to be able to to get back our funds, we can sign and broadcast the funding transaction:
Now, I want to pay you 0.01 BTC. We each create a new commitment transaction ("balance sheet") as before, but this one says that you get 0.06 BTC and I get 0.04 BTC. Each of us gets a new commitment transaction signed by the other to that effect as before.
To make sure that neither of us can use the old commitment transaction the other signed previously, we each create a justice transaction to prevent cheating. The justice transaction allows the channel partner to spend our timelocked output from our first commitment transaction to the themselves if we use the outdated commitment. If we use the correct commitment, the funds go to ourselves after the timelock passes, until then the counterparty can take the funds if we cheated.
I.e. when I try to activate the (now obsolete) 0.05 - 0.05 BTC balance sheet, my paid-out funds are locked for a number of blocks. This gives you time to broadcast the justice transaction in which I signed off on my 0.05 BTC output being sent to you.
It's safe for me to give you your justice transaction, or really to anyone, because the justice transaction will only be valid as a response to the fraudulent use of the old commitment transaction.² With the setup as described above, I'd have to come online before the timelock expires to catch an attempt at cheating, but obviously it wouldn't be safe for me to keep payment channels open if I might be offline for extended periods. Luckily, there are watchtower services that take a small payment to monitor for cheating and can broadcast the justice transaction on your behalf when they detect it.
3. Network payment
Alright, now you and I can send money back and forth thousands of times, with almost instant effect (depending only on how fast we can communicate with each other) without adding any additional transaction to the Bitcoin blockchain. Yet, on the other hand, if one of us ever tried to defraud the other, they would be instantly taken to court by having the dispute resolved on the blockchain to their own detriment. Pretty spiffy, but not terribly useful yet.
By the theory of six degrees of separation, everyone is connected to any other participant via only a few hops. Let's say you are getting some coffee from Bob the Barista. You do not have a payment channel with Bob, but you have the channel with me, and both Bob and me each have a payment channel with Alice. Let's assume that each payment channel has 100 m₿ in it, split equally.
Our "network" now looks like this:
Now, since you don't have a direct payment channel to Bob (and it would be very inefficient if you had to create a payment channel with every business partner you ever meet), you route your payment through the network. Instead of only writing an update of the balance between Bob and you as I described above, this becomes a concerted effort: Your wallet finds a route from you to Bob that has a) sufficient liquidity, b) least fees, and c) fewest hops. To make a payment, each involved payment channel updates its balances. With a payment of 1 m₿ for the coffee, this updates our network to:
As you can see, the balances at the ends have shifted appropriately from you to Bob, but the other participants have the same balance (although shifted to other payment channels). It's important to realize, that the payment can only go through completely or not at all. Either we all update the balances, or no one does.
Now, imagine that you don't have only the one payment channel with me, but you have maybe a half a dozen payment channels with other users! :)
4. Cooperative channel closing
Other than in the above case where one side closes the channel unilaterally, one of us can request to cooperatively close a channel from the other. When we agree, we collaborate to create a final payout transaction that doesn't lock any funds and allows immediate spending after confirmation. We could even use this transaction to spend some of our balance directly to a third party on the blockchain, or to create another different payment channel. Let’s say I want to pay Carol on-chain when we close the channel after the second commitment transactions have been exchanged.
- You cannot receive more money through the Lightning Network in one payment than the sum of your channel counterparties’ balances.
- Sender and receiver have to be online for a payment to be conducted.
- Your Lightning Network payments don't get recorded on the blockchain for eternity, (i.e. better payment privacy), but your Lightning node has a permanent identity and your announced channels’ funding outputs are publicly associated with your node’s identity (observers may guess how much funds you have deployed to the Lightning Network), or which outputs went to you when channels get closed.
- Instant payments! But your funds are tied up in payment channels. If you need those funds for an on-chain payment, you need to close the channel or splice out a payment with the assistance of your channel partner.
- Lower fees! Payments on Lightning don't require an on-chain transaction fee, but if you route payments through others payment channels, they will charge a proportional fee for the liquidity they provide. However, as other Lightning nodes are competing to transfer your payment for you, this costs much less than an on-chain transaction fee (unless the payment amount is huge).
6. Further reading:
- How is a node in the middle prohibited from keeping the money in a routed Payment in Lightning network?
- What are the trade-offs between transacting on LN and Bitcoin mainchain?
- How are paths found in Lightning Network?
¹ This examples is a so-called “dual-funded” channel. Many channels are funded only by one party upon creation. Channels funded by one party start off with the entire balance on one side and therefore only capable of sending payments but not receiving. Dual funded channels were recently implemented by some Lightning Network implementations for the first time.
² The commitment transactions and justice transaction mechanism are why Lightning needed the transaction malleability fix from segwit. We can only rely on this chain of half-signed, unconfirmed transactions if the transaction id’s of the prior transactions can be predicted reliably.
Lightning allows you to lock coins between two wallets, and then send special transactions between each wallet which only become "real" when they are added to the blockchain. But you don't do that, because on-chain costs you more fees, so you keep updating the transactions between each other.
Lightning not only makes it possible to send transactions off-chain from A to B, but also from A to B to C etc. Which would make it possible to create one big network, where most transactions happen off chain, you don't need to trust anyone and where all transactions are instantaneous.
Lightning Network is a layer on the top of the Bitcoin Blockchain. Le'me go in more detail.
It is a technology that makes bitcoin work faster, scalable and improve bitcoin in such a way that Bitcoin could handle hundreds or thousands of transactions each second, right now Bitcoin handles about seven transactions per second which is very low compared to Visa and Mastercard who handles hundreds or thousands of transactions per second. Bitcoin lightning network is a proposal which can help in moving from seven transactions per second to hundreds or thousands transactions per second without having any central entity and without losing trust among nodes.
How Lightning Network Works ?
It works by you and me where we can send each other bitcoins on a channel that is off the blockchain so we establish a channel between each other on the blockchain, we start communicating with each other and sending transactions to each other off the blockchain. We can do hundreds or millions of such transactions without broadcasting it back to the blockchain. When we create this channel that is outside the blockchain, we can do any number of transactions without burdening the entire network.
So in their whitepaper who have proposed this idea also in which I can send a transaction to some other person without creating a direct connection to that other person. Le'me explain guys...
Suppose Me and my friend are sending transaction to each other off the blockchain so may be my friend connects to some other person X so in the lightning network, it is possible to send funds from me to person X via my friend. I dont need to have a direct connection to person X. It's really a good way to propagate funds through the network without establishing many direct connections which also could burden the whole lightning network.
This is comparable with how the internet works today When i send a packet, it can get routed through many different nodes and the nodes dont really care where the packet is coming from and where it's going, they only care where they should send it next and so the next person may send it somewhere else and then it would finally arrived at final destination. It's similar to how lightning network work if i have a connection to my friend and my friend has a connection to someone else. I could send funds from me to someone else via my friend, my friend wouldnot even know if the funds are intended to go to person X or if person X is supposed to send person Y. If the person X is recipient then transaction is finished and can be broadcasted to the original blockchain so in this way we can do millions of transactions among each other without burdening the entire network and this could really scale the Bitcoin network.
Can you trust that middle person ?
I want to send some funds from me to my friend Sachin and i want to send those funds to Sachin via middle person Shivam so I have a channel from me to Shivam and then Shivam has a channel to Sachin, now i want to send my funds to Sachin. How can i trust Shivam? May be Shivam takes my funds for himself and doesnot send anything to Sachin so this thing is handled cryptographically and transaction will be refunded back to me if Sachin doesnot recieve my transaction in a certain amount of time.
Problems in Lightning Network ?
The worst thing that could happen to me in this lightning network is that some middle person who is unfaithful would hold my funds for a number of days and so after those days passes, I would get my funds refunded by the protocol of network. Another problem with this network is that people could do many channels, they could open and close channels instantaneously for burdening the network. In order to open a channel, we need to broadcast this information to the main blockchain and so if some malicious person tries to open and close the hundreds of channels a second, this could really burden the blockchain. They are working in it.