sjefdeklerk (OP)
Jr. Member
Offline
Activity: 154
Merit: 8
SODL
|
|
January 02, 2018, 05:58:01 PM |
|
I really don't see how LN is supposed to work decentralized. In this scenario there would be a huge chain of people where everybody lends his money to the next guy in the chain, up the guy at the end of the chain who wants to pay for something. The maximum payment amount in this scenario is determined by the guy who has the least amount of money freely available in that chain. This effectively would mean that it can only work decentralized for very small payments. Even payments bigger than a few dollar could already be problematic.
Whereas in a centralized scenario, it could perfectly work, but it would effectively turn into a regular banking relationship as people have now, just with a different name (account at your bank vs payment channel with your bank). Or am I missing something here?
|
|
|
|
achow101
Moderator
Legendary
Offline
Activity: 3542
Merit: 6885
Just writing some code
|
everybody lends his money to the next guy in the chain, up the guy at the end of the chain who wants to pay for something.
There is no lending of money. It is not an IOU system, there is no lending. All money exists and is accounted for on the blockchain. The maximum payment amount in this scenario is determined by the guy who has the least amount of money freely available in that chain.
It isn't a chain, it is a route. The graph of nodes is not the extremely degenerate case of a linked list or hub and spoke model. Sure the maximum amount is limited by the smallest amount in the route, but if that amount is too small, another route can be chosen that allows for more money to be transferred if necessary. Furthermore, each route is for one use only, they aren't permanent and do not always have to be used for payments to the same person.
|
|
|
|
sjefdeklerk (OP)
Jr. Member
Offline
Activity: 154
Merit: 8
SODL
|
|
January 02, 2018, 07:59:13 PM Last edit: January 02, 2018, 08:45:10 PM by sjefdeklerk |
|
everybody lends his money to the next guy in the chain, up the guy at the end of the chain who wants to pay for something.
There is no lending of money. It is not an IOU system, there is no lending. All money exists and is accounted for on the blockchain. If person A wants to buy something, person B is in the middle and Person C is the receiver, then B first pays C, so he actually 'lends' money to A It isn't a chain, it is a route. The graph of nodes is not the extremely degenerate case of a linked list or hub and spoke model. Sure the maximum amount is limited by the smallest amount in the route, but if that amount is too small, another route can be chosen that allows for more money to be transferred if necessary. Furthermore, each route is for one use only, they aren't permanent and do not always have to be used for payments to the same person.
But the key here is that average Joe doesn't have a lot of money to finance payments for others (average Joe takes credit, he doesnt give it). So that's a huge problem in the decentralized mesh. I honestly don't see how this could work without any big centralized nodes like banks. In fact I think that's just the natural way it will evolve: people will open payment channels with big parties (=banks) to ensure that they can actually pay people. You don't want to divide your money over 20 channels and only have 5% of your money per channel. So it seems only natural that banks would become central in LN, it's both more efficient and effective. Just trying to grasp this whole concept. The whole idea of bitcoin was decentralization and now with LN it seems it's going the other way again.
|
|
|
|
achow101
Moderator
Legendary
Offline
Activity: 3542
Merit: 6885
Just writing some code
|
|
January 02, 2018, 09:33:15 PM |
|
If person A wants to buy something, person B is in the middle and Person C is the receiver, then B first pays C, so he actually 'lends' money to A
Actually he doesn't. B pays C at the exact same time that A pays B. So there is no lending as B is never short of his money. As soon as the hash preimage for an HTLC is known to the world, all parties in a route are instantly paid because the HTLCs can be then settled at the same time. But the key here is that average Joe doesn't have a lot of money to finance payments for others (average Joe takes credit, he doesnt give it). So that's a huge problem in the decentralized mesh. I honestly don't see how this could work without any big centralized nodes like banks. In fact I think that's just the natural way it will evolve: people will open payment channels with big parties (=banks) to ensure that they can actually pay people. You don't want to divide your money over 20 channels and only have 5% of your money per channel. So it seems only natural that banks would become central in LN, it's both more efficient and effective.
Joe can pay the same person using multiple channels. If I have two BTC total split across 4 channels and I want to buy something for 2 BTC, I can send 0.5 via Channel 1 to merchant A, 0.5 BTC via Channel 2 to Merchant A, and so on. Merchant A will get 2 BTC from either one channel or from multiple channels, Either way, he gets paid 2 BTC and I spent 2 BTC and the transactions are guaranteed.
|
|
|
|
Spendulus
Legendary
Offline
Activity: 2912
Merit: 1386
|
|
January 02, 2018, 10:33:11 PM |
|
If person A wants to buy something, person B is in the middle and Person C is the receiver, then B first pays C, so he actually 'lends' money to A
Actually he doesn't. B pays C at the exact same time that A pays B. So there is no lending as B is never short of his money. As soon as the hash preimage for an HTLC is known to the world, all parties in a route are instantly paid because the HTLCs can be then settled at the same time. But the key here is that average Joe doesn't have a lot of money to finance payments for others (average Joe takes credit, he doesnt give it). So that's a huge problem in the decentralized mesh. I honestly don't see how this could work without any big centralized nodes like banks. In fact I think that's just the natural way it will evolve: people will open payment channels with big parties (=banks) to ensure that they can actually pay people. You don't want to divide your money over 20 channels and only have 5% of your money per channel. So it seems only natural that banks would become central in LN, it's both more efficient and effective.
Joe can pay the same person using multiple channels. If I have two BTC total split across 4 channels and I want to buy something for 2 BTC, I can send 0.5 via Channel 1 to merchant A, 0.5 BTC via Channel 2 to Merchant A, and so on. Merchant A will get 2 BTC from either one channel or from multiple channels, Either way, he gets paid 2 BTC and I spent 2 BTC and the transactions are guaranteed. If I funded a channel with say 0.5 bitcoin, how long might it operate independent of the blockchain? because whenever there is a clearing of the transaction routes back to the blockchain, there is a nightmare of a fee to pay.
|
|
|
|
sjefdeklerk (OP)
Jr. Member
Offline
Activity: 154
Merit: 8
SODL
|
|
January 02, 2018, 11:04:28 PM |
|
Actually he doesn't. B pays C at the exact same time that A pays B. So there is no lending as B is never short of his money. As soon as the hash preimage for an HTLC is known to the world, all parties in a route are instantly paid because the HTLCs can be then settled at the same time. Ok the traditional definition of lending wouldn't apply here, agreed. However that doesn't change the problem that everybody in the route needs to have the amount of money that you are sending in his account, freely available. If I have two BTC total split across 4 channels and I want to buy something for 2 BTC, I can send 0.5 via Channel 1 to merchant A, 0.5 BTC via Channel 2 to Merchant A, and so on. Merchant A will get 2 BTC from either one channel or from multiple channels, Either way, he gets paid 2 BTC and I spent 2 BTC and the transactions are guaranteed.
That is if all your channels are connected to the Merchant AND everybody in those channels has at least the amount freely available that you want to send.
|
|
|
|
achow101
Moderator
Legendary
Offline
Activity: 3542
Merit: 6885
Just writing some code
|
|
January 02, 2018, 11:10:36 PM |
|
Ok the traditional definition of lending wouldn't apply here, agreed. However that doesn't change the problem that everybody in the route needs to have the amount of money that you are sending in his account, freely available. ... That is if all your channels are connected to the Merchant AND everybody in those channels has at least the amount freely available that you want to send.
With a well connected graph, that's not a problem. And based on current use on testnet, it looks like it is going to be a fairly well connected graph.
|
|
|
|
sjefdeklerk (OP)
Jr. Member
Offline
Activity: 154
Merit: 8
SODL
|
|
January 02, 2018, 11:21:53 PM Last edit: January 02, 2018, 11:32:16 PM by sjefdeklerk |
|
With a well connected graph, that's not a problem. And based on current use on testnet, it looks like it is going to be a fairly well connected graph.
But let's say I want to pay an airline ticket for $1200. I have 4 channels with 4 friends. Two of them have $350 freely available each and two of them have $250 available each. However one of them has a route with friends who only have $200 available. Now I can't pay for the ticket even though I'm a frikkin' (bitcoin) millionaire myself It would make SO much more sense for me to just open 1 channel with a big bank, but some cash in it and I'm done! I can now at least determine myself how much I can pay and I'm not dependent on the wealth of my friends (or their friend's friends). It just seems so logical that it's going to evolve into that. So not this 'ideal decentralized' mesh some people dream about but a centralized system. It just seems inevitable to me
|
|
|
|
achow101
Moderator
Legendary
Offline
Activity: 3542
Merit: 6885
Just writing some code
|
|
January 02, 2018, 11:34:16 PM |
|
But let's say I want to pay an airline ticket for $1200. I have 4 channels with 4 friends. Two of them have $350 freely available each and two of them have $250 available each. However one of them has a route with friends who only have $200 available. Now I can't pay for the ticket even though I'm a frikkin' (bitcoin) millionaire myself It would make SO much more sense for me to just open 1 channel with a bank, but some cash in it and I'm done! I can now at least determine myself how much I can pay and I'm not dependent on the wealth of my friends (or their friend's friends). That's completely untrue. You are then dependent on the wealth of that "bank", how many channels it has open, and how much it owns on each channel. You are not done, and there is no guarantee that said "bank" will be any better than your 4 friends. Suppose that bank is just like friends, but with more channels that lead to dead ends and not the airline you want to pay. Now you're stuck. It's exactly the same as with your friends, and not any better nor any worse.
|
|
|
|
sjefdeklerk (OP)
Jr. Member
Offline
Activity: 154
Merit: 8
SODL
|
|
January 02, 2018, 11:37:23 PM |
|
That's completely untrue. You are then dependent on the wealth of that "bank", how many channels it has open, and how much it owns on each channel. You are not done, and there is no guarantee that said "bank" will be any better than your 4 friends. Suppose that bank is just like friends, but with more channels that lead to dead ends and not the airline you want to pay. Now you're stuck. It's exactly the same as with your friends, and not any better nor any worse.
Well I rather depend on the wealth of a bank than on the wealth of my friends (and their friend's friends wealth) But yeah even then you're indeed not guaranteed of a good route and it's not even a guarantee I can pay my ticket. But isn't that an awful system then ? Of course I can always choose to bypass LN and just cough up the $55 (or way higher) transaction fee ... But still it just seems so far from perfect that I wonder if this thing is going to make it.
|
|
|
|
sjefdeklerk (OP)
Jr. Member
Offline
Activity: 154
Merit: 8
SODL
|
|
January 03, 2018, 02:15:31 AM Last edit: January 03, 2018, 02:42:00 AM by sjefdeklerk |
|
If I have two BTC total split across 4 channels and I want to buy something for 2 BTC, I can send 0.5 via Channel 1 to merchant A, 0.5 BTC via Channel 2 to Merchant A, and so on. Merchant A will get 2 BTC from either one channel or from multiple channels, Either way, he gets paid 2 BTC and I spent 2 BTC and the transactions are guaranteed.
BTW does BTC even supply for such a mechanism that it can cancel all payments if one fails ? Otherwise nobody would use it (who wants to pay 80% of a product and thus not receive the product) and your example isn't even valid
|
|
|
|
sjefdeklerk (OP)
Jr. Member
Offline
Activity: 154
Merit: 8
SODL
|
|
January 03, 2018, 02:37:44 AM |
|
Actually he doesn't. B pays C at the exact same time that A pays B. So there is no lending as B is never short of his money. As soon as the hash preimage for an HTLC is known to the world, all parties in a route are instantly paid because the HTLCs can be then settled at the same time.
Actually I don't think this is correct. In A -> B -> C then C first finalizes payment from B by sending the pre-image to B. Then B does the same with A, exactly like explained here: https://en.bitcoin.it/wiki/Hashed_Timelock_Contracts How is this different from a lending situation ? You ask your friend to pay for the pizza and after he paid for the pizza, you pay him.
|
|
|
|
achow101
Moderator
Legendary
Offline
Activity: 3542
Merit: 6885
Just writing some code
|
|
January 03, 2018, 05:55:53 AM |
|
BTW does BTC even supply for such a mechanism that it can cancel all payments if one fails ? Otherwise nobody would use it (who wants to pay 80% of a product and thus not receive the product) and your example isn't even valid
Yes, there is a mechanism to cancel a payment. Anyways, currently it isn't even possible to have a partial payment. The way that routing works is that the sender chooses the nodes to send through and will only initiate the process if it knows that the payment will happen (barring circumstances involving malicious actors or unforseen circumstances). Actually I don't think this is correct. In A -> B -> C then C first finalizes payment from B by sending the pre-image to B. Then B does the same with A, exactly like explained here: https://en.bitcoin.it/wiki/Hashed_Timelock_Contracts How is this different from a lending situation ? You ask your friend to pay for the pizza and after he paid for the pizza, you pay him. No, that's not how it actually works on the technical level. At the technical level, every node in the route first creates an HTLC offered output and HTLC received output in the channels that the payment is being routed through. This effectively locks in the coins and the order of those outputs being created is not guaranteed. I.e. A could offer the HTLC to B before B offers to C, in which case B owes A money. But just as likely is B offers C the HTLC output before it receives the HTLC from A, in which case A owes B money. In either case, neither party actually gets any money, so no money actually exchanged hands nor is anything actually owed. If B fails to offer the HTLC C, A will get his money back when the HTLC times out and B will not be able to have gotten any of that money at all. When the preimage is passed down the route from D to A (let's add one additional hop for this example), none of the parties in the route is able to get more money than they are supposed to even if they don't reveal the preimage to the next person. With lending money, the lender can steal the money, but in LN, the "lenders" (i.e. nodes in the route) cannot. The reason for this is slightly complicated. In a route A -> B -> C -> D, D must reveal the preimage R in order to be paid. He can do this by either broadcasting the C -> D Commitment transaction and the HTLC success transaction (so he spends the HTLC output from the commitment tx) or by telling C what R is (and thus keep the channel open). If he broadcasts the HTLC success, then both B and C know what R is since R is in that HTLC success and can immediately broadcast their HTLC success transactions, so they are paid and pay money at exactly the same time. If D gives C R and they settle off chain (to keep the channel open) but C refuses to give B R, he is actually out money since he has already settled the HTLC offered output but not his HTLC received. C is now short the money that he gave to D. Note that this is different from lending because this is not B refusing to give C his money but rather C refusing to take it. The only way C can take that money is if he gives B R or if he broadcasts the commitment transaction and HTLC success transaction. Either way, B will get R and he will end up paying the money to C as that is how HTLCs work. The payment of the HTLCs is guaranteed because of the commitment transactions. HTLCs are part of the commitment transaction which is signed by both parties in the channel. In the B -> C channel, B cannot revert his HTLC without C agreeing to revert it. If he chose to broadcast an old commitment which did not have this HTLC, then he will be subject to C's revocation transaction which can take all of B's money. The way that HTLCs work is that if you can show that you know R, then the payment is guaranteed because you can spend that output. So once C knows R, his payment is guaranteed unless he waits too long and the HTLC times out. But then that is still not lending as B did not refuse to pay C but rather C refused to take money from B. So in no way is this actually lending. No node has more money than they are supposed to. HTLCs are not a promise that you will give them the money (as it is with lending) but rather a guarantee that they will get the money. Nodes must forward R down the route otherwise they will be losing money. There is no situation where a node can get more money than they are supposed. Note that this only works when R goes from D -> A. If it went from A -> D, then it would be lending and a node could defraud the next node in the route. But LN goes the other way, so that is not a problem.
|
|
|
|
sjefdeklerk (OP)
Jr. Member
Offline
Activity: 154
Merit: 8
SODL
|
|
January 03, 2018, 02:05:40 PM |
|
Thanks, great explanation! I probably should not have used the term lending because the risks inherent in traditional lending clearly don't apply here. However the point remains that everybody in the route needs to have the money freely available that you want to pay. Personally I feel that this is why LN will never really work decentralized as some envision it. Time will tell.
|
|
|
|
nokati
|
|
January 03, 2018, 10:02:58 PM |
|
I think that it will not be a centralized doom scenario like some people think.
Nods do not have to be very big. Most small buy coffee amounts don't need much of backup from supper nodes.
You still can choose to send using the main chain wich have by then lower fee as the load is gone
Right now we have massive mining farms and small home miners that work in harmony to a certain level
Instad of mining pools we should see super nodes that are funded by average john using some smart contracts
I think that development team have think about al this points.
|
|
|
|
johncolbir
Newbie
Offline
Activity: 6
Merit: 0
|
|
January 04, 2018, 01:45:28 PM |
|
No one knows how the LN graph will look like until it's widely used. Most people will use LN for micro-payments, this means that people with low amount of BTC will still get used, so you won't need to open a channel with a big hub for you to pay your $3 coffee, because most people will have an open channel with an amount greater than $3.
Even in the worst case scenario where we have centralized hubs, it's a different centralization compared to say Ripple, where for example they can blacklist you and you can't send any XRP in the whole Ripple network, so you effectively have lost your XRP. In the case of a centralized LN network, you can just open a channel with a person that is already connected to a big hub and send all your transactions through that person if the hub refuses to accept your payment, and for small payment, I guess you won't even need a hub, just route your transaction through normal users.
centralization and decentralization can't be measured in absolute terms, all that a centralized network of hubs can do is refuse to route your payment, whereas in other centralized networks like Ripple or Paypal, they can actually freeze your funds.
Even if we have big hubs that most people use, can you really call it a centralized network when you still have the option to choose a route that doesn't involve these big hubs?
|
|
|
|
sjefdeklerk (OP)
Jr. Member
Offline
Activity: 154
Merit: 8
SODL
|
|
January 04, 2018, 02:12:33 PM Last edit: January 04, 2018, 03:32:15 PM by sjefdeklerk |
|
I've been reading some more and there are even more important arguments against decentralization:
1) Users need to be online all the time! If somebody is offline he can NOT process a transaction for you, this means that that person breaks the route, which is a huge problem. Banks on the other hand will of course be online 24/7 2) Monetary incentives for centralization! Everybody who helps processing your transaction gets a small fee. So if there's a route with 10 people in it, then a bank with a direct route can charge 9.99x the fee for one hub and still be cheaper! So the bigger a hub becomes, the smaller the routes will become and the more they can charge. This of course works as a huge snowball for size and is a huge incentive to become as big as possible.
|
|
|
|
achow101
Moderator
Legendary
Offline
Activity: 3542
Merit: 6885
Just writing some code
|
|
January 05, 2018, 01:39:00 AM |
|
1) Users need to be online all the time! If somebody is offline he can NOT process a transaction for you, this means that that person breaks the route, which is a huge problem. Banks on the other hand will of course be online 24/7
Not necessarily. If only one node's HTLC success transaction is broadcast, then all nodes in the route can take their payment and make their payment simultaneously even if one or more of them is offline. 2) Monetary incentives for centralization! Everybody who helps processing your transaction gets a small fee. So if there's a route with 10 people in it, then a bank with a direct route can charge 9.99x the fee for one hub and still be cheaper! So the bigger a hub becomes, the smaller the routes will become and the more they can charge. This of course works as a huge snowball for size and is a huge incentive to become as big as possible.
I don't think the fee will be a centralization pressure. It will be a race to the bottom because there will be competition and it will be easy for new nodes to compete. So sure your "bank" charges 9.99 as their fee for one route. Now I create my own node and I get a couple of channels, not as much, but still many. If you route through me, you may still have to go through 4 other nodes. I can then charge 5 as the so the total route fee is 9 (5 + 4*1). Now that "bank" has to lower his fee to remain competetive, and so on and so forth. It will be difficult for any one node to get a monopoly and maintain it and make LN centralized. Even then, anyone can still make their own node and make channels without the permission of the "central nodes". So there will certainly be lots of competition and that makes it decentralized. You can close a channel without the other party agreeing to it, so you can switch to using a competitor at any time. You can even close your channel and fund the opening of a channel with someone else at exactly the same time in the same transaction, so you won't have to pay more in transaction fees.
|
|
|
|
sjefdeklerk (OP)
Jr. Member
Offline
Activity: 154
Merit: 8
SODL
|
|
January 06, 2018, 01:50:37 AM |
|
Not necessarily. If only one node's HTLC success transaction is broadcast, then all nodes in the route can take their payment and make their payment simultaneously even if one or more of them is offline. From my understanding when a user is offline he won't even get elected as possible node. I don't think the fee will be a centralization pressure. It will be a race to the bottom because there will be competition and it will be easy for new nodes to compete. So sure your "bank" charges 9.99 as their fee for one route. Now I create my own node and I get a couple of channels, not as much, but still many. If you route through me, you may still have to go through 4 other nodes. I can then charge 5 as the so the total route fee is 9 (5 + 4*1). Now that "bank" has to lower his fee to remain competetive, and so on and so forth.
Hmm I find this a weird answer. Of course the guy with just one node can always charge less because he doesn't have to divide the profit.
|
|
|
|
Spendulus
Legendary
Offline
Activity: 2912
Merit: 1386
|
|
January 06, 2018, 06:19:45 PM |
|
1) Users need to be online all the time! If somebody is offline he can NOT process a transaction for you, this means that that person breaks the route, which is a huge problem. Banks on the other hand will of course be online 24/7
Not necessarily. If only one node's HTLC success transaction is broadcast, then all nodes in the route can take their payment and make their payment simultaneously even if one or more of them is offline. 2) Monetary incentives for centralization! Everybody who helps processing your transaction gets a small fee. So if there's a route with 10 people in it, then a bank with a direct route can charge 9.99x the fee for one hub and still be cheaper! So the bigger a hub becomes, the smaller the routes will become and the more they can charge. This of course works as a huge snowball for size and is a huge incentive to become as big as possible.
I don't think the fee will be a centralization pressure. It will be a race to the bottom ... Wait, so we can fund the entire LN with less than the current BTC miner fees?
|
|
|
|
|