It is probably not possible to solve the scaling problems on-chain - a secure decentralized consensus on a global scale cannot be fast. Currently the bitcoin protocol processes about 7 transactions per second. Doubling the speed by doubling blocks will not make it much closer to the 50K transactions per second of a system like VISA. But it is probably possible to scale the transaction system off-chain - with https://lightning.network/ - which works like a protocol for writing and accepting checks. As far as I know Lightning is impossible or very hard without SegWit.
But with Lightning off-loading the bulk of transactions miners will lose a bit of their power - so maybe this is what makes them against it.
Another aspect of the riddle is that SegWit will eliminate ASICBoost - which is an optimization developed by one of the biggest ASIC miners producer - so he is probably also against it. There is also the thing that ASICBoost is probably patented - so it has a lot of opposition in the community.
A counter-argument is that the Lightening work is a proprietary development outside of bitcoin core (lead by Blockstream) and the work is even patent-encumbered.
They state the ip is for defensive purposes only - however that is questionable given that anything they implement, automatically becomes prior-art. It is also contrary to the spirit and practice of the majority of crypto/alt projects.
It is unreasonable to attack miners for having interests, without disclosing that other interests may benefit from the current levels of network congestion that a skeptic would say are caused by having artificially small blocks.
There's nothing proprietary about Lightening Network. Lightning network was started by a startup, who published the paper, there are several open source implementations of it, and to my knowledge there's no actual involvement of Blockstream. Blockstream has their own solution (that doesn't need segwit right now) called Liquid.
Liquid Network and Lightening Network are different things and work in a different ways. A new version of liquid that uses some of he lightening technology enabled by segwit is probably in Blockstreams plans... but there are multiple competing open source implementations of Lightening Network being worked on.
Please link to the patents on the lightening network. I don't think you can.
There is no current network congestion. Free transactions are clearing after awhile and very low fee transactions are clearing right away.
All of the congestion of the past 3 months was from a spam campaign being run by the people who claim "bitcoin doesn't scale without larger blocks" ignoring that Segwit increases block size AND increases efficiency in using that capacity.
I referred to Blockstream and this is their patent front announcement,
> Today we are excited to announce some important steps we are taking on the patent front, why these defensive steps are necessary, and our hope that others will see merit in our approach and follow our lead.
...
> Our Patent Pledge assures developers and users of our technology that we will not sue them for patent infringement, provided they comply with the terms and conditions of our pledge...
Edit: Here is a discussion of Blockstream's patent application for side car design,
> The application, submitted on 9th May and published earlier this week, outlines “systems and methods...for transferring an asset from a parent chain to a sidechain”.
> Blockstream’s work on the Lightning protocol began two years ago with the intention of enabling new applications and developing new use cases that could help further the adoption of Bitcoin and related technologies
Also presumably if segwit activates then Liquid is no longer needed?
Edit: The relationship between Blockstream and Lightning is underscored, by the fact that the largest contributor to the specification is a Blockstream employee (Rustee Russell),
The 'lightning network' has been one of the promised solutions 'coming soon' for many years now. Except, no-one has solved all its problems yet. There remain difficult issues to do with routing of transactions, and some horrible money-losing behaviour if users don't stay online to protect their channels from being looted. On top of that, there's not enough space on the blockchain to allow everyone to open & close a payment channel anyway.
If Bitcoin took (likely more than) ten years to get to the state where we are now, it's likely that second layer solutions such as Lightning are not developed overnight.
I'm really tired of hearing the "increasing the block size won't suffice"-argument. Yes, increasing blocks to 10 MB won't give us VISA-scale, but it will allow Bitcoin to serve TEN TIMES AS MANY USERS! I can't believe how many otherwise intelligent people fail to see that this is desirable. It's like driving your car at 10 km/h per hour on the high-way and refusing to increase your speed because that would still not make you as fast as a rocket.
Increasing the block will solve the problem until the new size is not enough, which will be very soon. A larger block means a larger blockchain, and the nice thing about the blockchain is that you can download the entire thing. With a larger block it will outpace the storage advances and will not be downloadable for the average user, which means that only specifically equipped entities such as miners will be able to have a copy of it, and that is a big problem.
10x the transactions is not much at all. The comparison with the VISA network is not a valid one - with micropayments the volume could be 100x or 10000x - we should be able to accommodate it.
The only solution is to begin handling transations off-chain. But the problem is that there is no one good proposal for it. Until it is clear how off-chain transactions work, we will keep seeing this sort of stuff.
> With a larger block it will outpace the storage advances and will not be downloadable for the average user
This has nothing to do with the block size. The size of the chain is proportional to the number of transactions. Whether those are sliced-and-diced into small blocks or large ones is completely irrelevant to how big the chain is. The only thing the block size influences is how many transactions can be mined in one block, i.e. the rate at which transactions can be processed.
If you don't change the rate of block creation - then the rate of blockchain growth is proportional to the block size. If you increase blocks - then the blockchain will grow faster. This is kind of obvious.
But yeah - the size of the blocks does depend on the number and size of transactions and if you don't have transactions to fill up the block in full (i.e. so that its size is just under the maximal block size) - then the transactions will be the limiting factor.
I have no idea why Satoshi chose a 1MB limit. Probably for the same reason he chose a 21M BTC limit on the total number of bitcoins that can be mined: both are arbitrary numbers that he pulled out of a hat. But the next time I see him I'll be sure to ask.
> With a larger block it will outpace the storage advances and will not be downloadable for the average user, which means that only specifically equipped entities such as miners will be able to have a copy of it, and that is a big problem.
This is eventually going to be a problem sooner or later regardless. The fundamental decentralization of Bitcoin depends on everyone having the whole blockchain. Any sort of "checkpointing" mechanism inherently relies on trusting authoritative nodes about network state, at which point it's no longer decentralized.
(However this is somewhat of a distinction without a difference. In practice you are trusting the nodes on the network anyway - the network is authoritative because everyone agrees to treat it as authoritative. If everyone agrees to trust some other blockchain as "the real truth" then you can either accept the new authoritative network or be on your own chain that nobody else accepts - which is what happened to Ethereum after the DAO hack.)
This is a fundamental limit to the Bitcoin model and will have to be addressed sooner or later. The data is already past ~100 GB (and totally incompressible) and that's with blocks so small that the network is choking due to lack of capacity. This is only a few years' worth of records, what does the big picture look like in 20 years?
Segwit is absolutely mandatory to allow interfacing other chains in a secure manner. Pretty much everyone agrees transaction malleability is a huge design flaw (apart from some Chinese farms which are abusing it via AsicBoost).
What I specifically have a problem with is the way both sides have drawn arbitrary lines here. It's not SegWit or a larger block, we can have both. And in fact the Core proposal does include a larger block, on a surface level this dispute is over how much bigger it should be (the Unlimited devs want a much larger block right away). Again, pretty much everyone agrees that transaction malleability needs to be fixed except that group of miners.
On a deeper level it's about a power struggle between the Bitcoin Core devs and the Bitcoin Unlimited devs, and between the various factions of miners.
What is the cost? I would assume it is consolidation of mining power since larger block size makes it even less likely for smaller players to be able to verify new blocks in real time.
The cost is, with 8MB blocks, 95% of nodes that validate consensus will be excluded (unable to keep up or become too costly to run) within 6 months - as per BitFury's (heavily invested Bitcoin mining company) research on bigger blocks: http://bitfury.com/content/5-white-papers-research/block-siz...
Without full nodes validating consensus, miners can (will) force protocol changes (eg. change 21,000,000 coin limit) on users, effectively changing the decentralized leaderless attributes to a centralized dictatorial less-efficient PayPal. At this moment, bigger blocks mean a less-free (as in speech) bitcoin.
The cost is that larger blocks have difficulty crossing the great firewall of china and mining is already centralized there.
I have seen this myself with a production blockchain and blocks that were less than 1mb. Increasing the size increases this effect and gives Chinese miners and artificial advantage.
Plus there's no congestion on the network right now. There's not a scaling problem. It was spam.
Further, segwit increases block size and efficiency so there's no reason to not activate it.
This whole issue isn't about scale, core is still ahead of the curve on what's needed to scale, it's about control, and disabling ASICBOOST and keeping transaction fees high.
'The great firewall of china' isn't someone manually inspecting every byte that enters and leaves china, it can manage more than a 1mb transaction just fine. And, even if the delays were more than minuscule, how does it favour one side over the other? Both sides have the same delay.
Plus there's no congestion on the network right now. There's not a scaling problem. It was spam.
Woohoo! No need for anyone to do anything then. Remind me again why everyone is trying to scale bitcoin?
You don't even seem to understand what we are talking about (not 1mb transactions) and you're flat out wrong. I have direct experience with a p2p network that I have built, and the problems getting blocks between nodes on opposite sides of the "Great Firewall of China". Really any engineer with an understanding of that system and P2P networks should understand why.
Everyone is trying to scale bitcoin because bitcoin is growing dramatically... that doesn't mean that the "full blocks" and "high fees" we saw recently weren't due to spam.
> The cost is that larger blocks have difficulty crossing the great firewall of china and mining is already centralized there.
Ironically, this has actually become a real Byzantine Generals problem. Guess Bitcoin can't actually solve that problem in the real world.
From what I understand, China isn't too keen on the whole endeavor since it circumvents their (stringent) capital controls. What happens if they turn the baleful eye of their deep packet inspection onto the Bitcoin network? (serious question)
(Background for those who don't know: encryption/etc don't work against the Great Firewall, it knows what a given type of connection "looks like" in terms of packets/activity, so it can identify (eg) a VPN session even if it's "wrapped" or "tunneled" across some other protocol. They use a massive amount of machine learning hardware to profile connections in realtime to pick out "suspicious" activity and those connections will be dropped after a few moments. It's not impossible to run arbitrary connections through the firewall but it's very difficult and getting harder all the time.)
I think the car analogy is not quite correct. A car is able to dynamically change its velocity, bitcoin can't easylie do that. It would be much better to find a genereal solution that fix that problem altogether, instead of finding a solution that works for the next few years and might require future forks.
There is rarely a silver bullet, and I don't see one in the case of Bitcoin. Even if lightning network (which is what everyone who does not see the need for a block-size increase points to) was available today, we would need larger blocks to reach VISA-scale. The responsible thing to do is to increase the blocks as early as possible while we still are in "beta".
The most compelling argument I know of against bigger blocks is that the big blockers have started putting Craig Wright (Nakamoto Dundee) forward as, like, any sort of expert.
>I can't believe how many otherwise intelligent people fail to see that this is desirable.
If there were no technical and economic tradeoffs to increasing the blocksize then yes, it would hard to see how otherwise intelligent people could oppose it. Everybody loves a free lunch. But there are tradeoffs, which you conveniently omit, which are giving those otherwise intelligent people pause, rightfully so.
If you believe that Bitcoin needs to scale up far beyond 10x the current size, then it's like driving your car at 10km/h per hour on the highway and refusing to increase your speed because you're trying to get to the moon and going faster in your car won't help in the least.
Currently at 160GB or something with 1MB block, what storage do you think a node will require with 10MB block in the next 5 years when the usage will be growing?
It seems to me that the otherwise-intelligent people are seeing the appropriate analogy as refusing to learn to run fast because they're trying to buy a car. Yes, most humans are capable of running faster and for longer distances than they currently can, with training. But training is a lot of work, and if your long-term goal is to go much faster than any human is known to be able to run, it's not clear that training is your best approach.
There are some new attempts being made without using a blockchain but still reaching the same level of consensus or finality. They are usually based on DAOs (directed acyclic graphs - not to be confused with The DAO Organization). A good introduction is this paper: Blockchain-Free Cryptocurrencies:
A Framework for Truly Decentralised Fast Transactions -
https://eprint.iacr.org/2016/871.pdf It was previously discussed on HN here: https://news.ycombinator.com/item?id=14730354
The acronym for directed acylic graphs is DAG, not DAO. That's also an incredibly vague thing to be "based on" and seems more like an appeal to "impressive technical sounding name that actually happens to be extremely trivial and something people learn about in a first year undergraduate mathematics course".
DAG and not DAO of course... The mathematical description is straightforward however the implementation (for example mining fee distribution) seems fairly complicated and loses a lot of the beauty of a blockchain. AFAIK Iota is the first serious attempt at running such a crypto currency.
The 7 TPS claim is an apples-to-oranges comparison.
You must remember that Bitcoin transactions are "settled" in that 7 TPS timescale, whereas VISA transactions are merely "recorded" in their 50K TPS rate.
In reality, it generally takes a minimum of 15 days for your VISA transaction to "settle" with your bank account. Thereby the true TPS rate is orders of magnitude lower for VISA.
The numbers are about throughput. Bitcoin has 7 TPS throughput and VISA has 50K TPS (peak) throughput.
With regard to latency bitcoin is still worse in practical applications - because VISA confirms a transaction immediately even if as you write it settles after 15 days - while bitcoin more or less settles after and an hour - but the first confirmation you get only after about 10 minutes.
So everyone quits making transactions for a week while Visa catches up? Or does there backlog increase indefinitely? OR do they have to settle at the same rate as record, just delayed? I'm guessing the last one...
You're comparing latency to throughput. Visa intentionally has slow latency, to reduce fraud, which is a major problem with Bitcoin. Visa has excellent throughput, beating the pants off of Bitcoin, which is another major problem with Bitcoin.
Even if you spread Visa's transactions evenly over time, the 100 billion transactions per year [1] that they perform would be a couple orders of magnitude higher than what bitcoin can support (~3000 TPS)
I think you mean to use a total transaction number for bitcoin, rather than a per-second number, to compare to Visa.
If we use the 7 TPS number that people seem to be using (even though the real number I think is slightly lower), then we end up with 220,752,000 transactions in a year; three orders of magnitude less than Visa.
I think proof of work mining is extremely wasteful. But once it is in place, you can sign a merkle tree of any size. You can add as many transactions as you want. The problem is that the ledger has to grow and grow. It would be nice if something was developed where you didn't need to keep the whole history.
While I agree that only increasing block size forever (or simply removing the size limit) doesn't seem reasonable in the long run, are we sure that segwit and the off-chain scaling solutions proposed today will really solve the long-term scaling issues of BTC?
The Q-and-A at the end in particular is interesting:
>Q: On the last slide, one of the assumptions was 3 channels per person. Assuming payment channels wouldn't be useful for retail sales, because you don't want to buy a coffee just to open immediately. Is that correct?
>A: Joseph might expand on this. Let's say you buy a coffee. You're probably buying a coffee only once, right? Well, maybe the coffee is $5, and you put $50 into the channel and leave it open. Then someone else comes to the coffee shop and she does the same thing. But she has a channel with the grocery store. There's me, coffee shop, Alice, grocery store, they all have channels. When I go to the grocery store next time, I don't have to open a channel. Payments are routed.
>Q: It sounded like everybody would have to open new channels.
>A: I am guessing the mean is going to be 3, but it will probably be an exponential distribution. Most people will probably have 1 channel, and then some might have 100s of channels open.
I don't know about you but while on paper that might work I still see a lot of hand waving, guesswork and rather unsubstantiated assumptions. Why would I decide to "lock" $50 worth of Bitcoins when I buy a $5 coffee? What's the incentive for me to do this? Where does this estimate of 3 come from exactly, I see it repeated everywhere but I can't find the maths behind it?
The simulation is rather unrealistic and I'm not sure how to interpret its conclusions. It seems to kinda work but there are issues:
>133,401 micropayments were attempted and 3461 (2.6%) of these failed. For successful payments the median number of hops was 19 and the median total fees were 2 bits (0.000002 btc) or 32% of the value transferred.
Now it could be caused by a bad simulation rather than a real issue with Lightning network, but frankly I can't tell at this point.
I don't have a horse in this race but as seen from the outside it all looks a bit rushed and amateurish. I don't know the whole story though, maybe I'm just poorly informed.
The simulation starts with each user having 14 channels open - seems like quite a strong assumption for a serious test (starting with 0 channels for each user and then randomly opening new ones would be much more interesting). After a talk by one of the lightning devs I also got the impression that they are betting that several hubs with thousands of channels would quickly emerge - due to the fee gained by running a channel. Needless to say this would undo quite a bit of the decentralized nature of bitcoin.
Seems like a good deal for the coffee shop (you don't have to pay for the Visa fee and you get some free customer retention on top of it all) but as a customer what do I gain from that, practically speaking? The only thing I can think of is low fees if I'm traveling abroad. But if the fees are really very low then your incentive becomes void, I won't bother putting $50 in the coffee shop if it only saves me $0.001 in fees.
Can you really imagine how this would work IRL?
"-Here you go sir, that'll be $32 please."
"-OK, I'm paying it Bitcoins... Oh, you don't have an open channel, I'm going to create one... Mmh, but how much to I put in? Let's say $100, I'll probably buy here again next week. But will that be enough? What if my total is just above that next time? I'll have to pay the fee twice. I guess I'll just make sure not to go over $100."
"-We also accept cash, Visa and MasterCard sir."
Again, maybe it can work, it just feels so "theoretical" so far, I haven't seen anybody paint a convincing picture of a what a "Bitcoin as Visa replacement" world would look like concretely.
You missed a really important feature of lightning. If you have a channel open with Starbucks, and Starbucks has a channel open to Wal-Mart, and Wal-Mart has a channel to $local_bank, which has a channel to $local_store, then you can use your Starbucks channel to pay $local_store.
And while this is an important feature of lighting, it's not actually a "feature" when compared to Visa or MasterCard and the centralized banking system from the point of view of the user. Ideally this should all be hidden away from the average customer.
People won't want to worry about graph theory when paying for a sandwich at a gas station. Existing payment solutions still wins hands down 99% of the time when it comes to convenience even if we imagine a "perfect" lightning network. I really have a hard time imagining what would drive a mainstream adoption of bitcoin over the current status-quo.
Users don't need to worry about routing when they connect to the internet, though in fact the computer is making 10+ hops for any given connection.
Lightning will work the same way. Nobody needs to worry about graph theory, they can just generally assume that the graph is fully connected, and that their software will be able to find a path from A to B.
The internet is not decentralized the way Bitcoin is. Actually I'd argue that the internet is more like the modern banking system: you have big corporations (ISPs, Google, Facebook, Netflix, Amazon...) interconnecting to provide a service to users in exchange for money. They have a vested interest in making sure the network actually works, at least for them. If you want to use the Visa payment system you need a bank account, if you want an internet connection you need an ISP. Bitcoin has nothing like that.
What will be bitcoin's "ISPs"? Who makes sure the graph remains connected and usable? Who invests in the "infrastructure", making sure channels remain well balanced? Some say that Lightning will be self-balancing through a clever set of incentives, but that's again extremely experimental and untested.
Also note the big "net neutrality" thing going on in the US right now. What will prevent big players from teaming up and interconnecting with each other to facilitate transactions while leaving out the rest?
I don't have the answers to any of these questions, maybe it's just FUD. I'm just surprised that bitcoin is a couple of weeks from making such a huge jump into the unknown. It's extremely interesting to be sure, but I feel like some people are going to get severely hurt if this whole thing comes crashing down.
I don't see a reason that exchanges couldn't take on the role of ISP/bank in this situation. Essentially you have an account with 1500 BTC at an exchange, and you say that you want to put 500BTC into a lightning network. Then the bank centralizes itself in the lightning network graph by making connections with other large banks and some major companies.
Of course what we've just done is recreated the modern centralized payment processing scheme on top of the bitcoin network (ie. a mom and pop shop connects to square connects to BoA has my money which doesn't actually exist anywhere, and they make ledger changes and top up later).
You might even be able to make such a system work with no additional transaction fees. But I'm not sure of that.
Why not just use Stellar or Ripple at this point? That's exactly what it was designed to solve. And it has the benefit of being able to use, you know, real currencies. So you can go to your coffee shop, instantly spend $5, and be done without having to worry about what the price of a bitcoin (or in this case, lumen) is.
Yes. This is basically the exact user experience of the Starbucks app, and it's a fine experience.
You pre-pay an amount, have a balance open, transactions reduce that balance, and you occasionally need to reload your balance with another credit card transaction.
Which is to say I don't think this is an intractable problem if there is good software with good user experiences to help out.
All that said, I'm not current on the block-size vs SegWit debate, so my analogy could be flawed.
But Starbucks is the perfect use case for this Lightning scenario, it's a frequent purchase for a relatively small amount. Basically anywhere where a "voucher" system like this starbucks app exists lightning could probably fit with minor disturbance.
Now take amazon, take that small shop on the street where you go twice a year because it's super expensive but it's also opened very late, take your car mechanic, take that guy on ebay you're buying a pair of socks from, take that restaurant in Berlin during your vacation where you'll probably never go back. Will you be willing to "pledge" 10 times the amount while buying there? And if not won't the fee be dissuasive? What's in it for me?
And won't that create negative side effects for competition? For instance if a new coffee shop opens next to Starbucks with your system I have an incentive to keep going to Starbucks since it already has an open channel (exactly what the Starbucks app is about, except I'm paying for it, not Starbucks), so effectively it makes it harder for newcomers to compete. Same thing for, say, amazon vs. some random ebay seller. The more popular a shop, the more likely it'll be to have an open channel pending. Isn't that going against the "completely decentralized currency" ethos? What good is it that the currency is decentralized if I can effectively only use it with a limited number of companies?
It would be pretty amusing to me to see the cyberpunk libertarian cryptocurrency turn into a glorified Costco membership.
I have been being told all along that the 7TPS limit is just an artificially-imposed limit and it's only there because the devs don't actually know what would happen if they (say) doubled it... was this a lie?
Another aspect of the riddle is that SegWit will eliminate ASICBoost - which is an optimization developed by one of the biggest ASIC miners producer - so he is probably also against it. There is also the thing that ASICBoost is probably patented - so it has a lot of opposition in the community.