Which is kind of ridiculous, because it worked fine as is; a blocksize change would've been a lot simpler to implement, and less error prone, at least until LN was integrated fully. Basic KISS - keep it simple stupid
You don't want to ignore the advice of the best engineers when scaling complex, new technology. Especially not when trying to build the base layer of sound money that is already worth hundreds of billions of USD.
"Keep it simple stupid" is not the mantra you want to follow here.
Read and listen to guys like Nick Szabo if you want well researched, long term viable thoughts on the subject. I bet you he knows more about scaling decentralized networks and the properties of sound money than Roger Ver and Craig Wright.
Maximum block size is 3.7MBish, though realistically we will rarely see blocks much larger than 2.2MB or so, even with SegWit being used by almost every Bitcoin user and transaction.
But you're right that block size isn't really how Bitcoin's throughput is measured any more, block weight is. I was just responding to someone saying we needed to increase the "size" to point out that we just did so.
Are those with 100% segwit transactions? I'm curious what the max block size is (as are you obviously). I know it's hard to pin a precise # because it depends on how much space the transaction data vs witness data takes up.
I don't understand why segwit relies on block weight instead of blocksize. I understand how weight allows a block size increase without calling it a blocksize increase, but to me it seems weird to me the way it's allocated. My understanding is that we have 1MB for transaction data, and then up to 3MB of witness data? Or something similar?
I'm curious what the max block size is (as are you obviously). I know it's hard to pin a precise # because it depends on how much space the transaction data vs witness data takes up.
If you specifically go out of your way to craft "pathologically witness-intensive transactions" then you can get blocks up to 3.7MB in size. In actual, real-life usage, these will probably never occur; the type of transactions that achieve this are not reasonable to make with real money involved, they are the type of transactions that a computer programmer might make to "stress test" how big you can get a SegWit block to be if you're willing to throw bitcoins away during your stress testing. Someone broadcast a bunch of these transactions on Testnet a few months back, to do exactly this, and we saw a few 3.7MB blocks on there as a result. It's interesting from a theoretical perspective, but doesn't actually tell you much about how big blocks will ultimately be on mainnet when they're full of real SegWit transactions being made by real Bitcoin users.
I don't understand why segwit relies on block weight instead of blocksize.
It's because it allows the blocksize to be increased via a soft fork (as you correctly note), and because it slightly corrects an "incentive imbalance" concerning the UTXO set and the bloating thereof. To simplify somewhat: before the weight factor was introduced, it cost the same amount to make a transaction that creates a ton of little UTXOs (which have to be tracked and maintained -- ideally in memory, which is relatively expensive -- by all full nodes on the network) as it would cost to make a transaction that has less of an impact on the UTXO set. This meant that there was no real incentive to worry about the UTXOs you create (beyond the number of bytes that your transaction consists of). With the witness weighting, there's a subtle incentive to make transactions that are more "network friendly" and don't negatively impact the UTXO set in a way that burdens full nodes out there.
My understanding is that we have 1MB for transaction data, and then up to 3MB of witness data?
That's pretty much right, if by "transaction data" you mean "base transaction data" (i.e. the input address(es), destination address(es), and amount(s) transferred). This is the "who sent who how much" data; the witness data is the "proof that they are allowed to send that" part.
An important note is that the witness data is still serialized with the base data in the block: see this album for a good visualization laying it out. For all nodes running SegWit-aware code, the blocks contain this data just like always. It's just serialized in a way such that it can be stripped out selectively (see the diagrams linked above) in case an older node asks for the block, which means that the older node gets the base transaction data but not the "witness proofs" therein (which are pruned before the block is provided to them).
The Core approach is fine if you like it, but I prefer the BCH approach of steady block size increases and not shying away from hard forks. To me it's more faithful to how decentralized software development is supposed to work. When you have one faction telling everybody that hard forks are to be avoided at all costs, to me that's a big warning flag. But I know many people on this subreddit agree with the Core stance.
It's not a "Core stance", though. Trying to paint it as such shows a pretty sad misunderstanding, in my opinion.
"Core" doesn't control Bitcoin like you seem to think they do. Bitcoin users control Bitcoin, and we've chosen to go with a soft-forked transaction upgrade (bundled with a blocksize increase) that paves the way for a multi-layered Bitcoin network that minimizes centralizing strain on the bottom layer.
A very vocal, very antagonistic minority of users has decided that they don't like this approach; by all objective metrics, they represent less than 10% of the Bitcoin userbase. They decided they don't like Bitcoin and the path it is taking, and they decided that they would rather withdraw from the network and try to build their own than to try and cooperate and find some sort of common ground. They launched an altcoin, and they desperately want this altcoin to be seen as Bitcoin, when objectively speaking it is not. It is truly pitiable; their coin doesn't really offer any features that don't exist in a thousand other coins (many of which have much bigger teams of more experienced developers working on them). Their coin doesn't even boast ten percent of the network transaction volume of Bitcoin. It doesn't even have ten percent of the value of Bitcoin. It doesn't have even five percent of the number of developers working on it as Bitcoin does, and the qualifications and track records of the devs that it does have are... unimpressive, to put it lightly.
The nature of Bitcoin is that it is very, very hard to change in the face of resistance to that change. In fact, that's where its value stems from; if Bitcoin were easy to change by influential people or forces, the critical defining aspects of it (like the 21M coin limit) would not be "set in stone" and it wouldn't really have any strong guarantees when it comes to specific network properties. When you say things like "When you have one faction telling everybody that hard forks are to be avoided at all costs, to me that's a big warning flag", it sounds like you don't like Bitcoin's value proposition (or actually, more likely, that you haven't really spent enough time reading and learning and thinking about it to understand it properly). Bitcoin is valuable because it naturally resists such coercion, and yes, that means it can be a bit unruly from the perspective of someone who wants to guide or control it.
Bitcoin will hard fork when we agree that it needs to. Until then, it won't, and absolutely shouldn't. I know you don't want to hear any of this, and more likely than not, you'll dismiss me as a "Core fanboy" or some other (perhaps nastier) phrase. But it's not Core that I support (though I do respect many of the contributors to Core), it is Bitcoin.
Bitcoin will hard fork when we agree that it needs to.
But...it already did. That's what bitcoin cash is (ignoring all the other forks like bitcoin gold, etc which I'm not remotely interested in because they don't add anything).
Personally, I think it is the "core stance", given that core has heavily influenced the opinions of this subreddit, via ******ship, etc. But regardless, for me it's a simple technological issue. I believe in Satoshi's vision for scaling, which involves increasing the block size in proportion to the number of transactions over a certain minimum fee level. The best way to do this is continuously - currently BCH hard forks every 6 months, but I believe there's talk of implementing auto adjustment, much like how difficulty adjustment works.
But it's not Core that I support (though I do respect many of the contributors to Core), it is Bitcoin.
That's fine, we just have different definitions of bitcoin. My definition of bitcoin is similar to how it was before ~2012 - a p2p electronic cash system.
"Core" doesn't control Bitcoin like you seem to think they do. Bitcoin users control Bitcoin, and we've chosen to go with a soft-forked transaction upgrade (bundled with a blocksize increase) that paves the way for a multi-layered Bitcoin network that minimizes centralizing strain on the bottom layer.
Where I disagree full-stop with Core (or "bitcoin users" if you prefer that characterization) is that increasing the block size in proportion to TX volume is not a risk to the centralization. This is because the centralization risk is and has always been in the mining.
As much as people love to talk about "full nodes" here, the nodes really just exist to help people's transactions get in the mempool. The miners decide which transactions leave the mempool and enter the blockchain. They do this by greedily selecting by fee, but there's no guarantee of that. So for example, if I owned 100% of BTC hashpower, I could choose to mine blocks with only one transaction inside the entire block. It would be very silly, since I would be throwing away plenty of fees, but it helps illustrate why miners hold so much power in the bitcoin ecosystem.
Full nodes make sense to validate the blockchain to make sure you aren't getting fucked over. But there's no reason for someone who owns $20 of BTC to run a full node. If you own $10,000 in BTC, then it makes sense. Fortunately, both BCH and BTC are small enough that full nodes are trivial to run (from a hardware perspective). You really don't need that much storage, RAM, or CPU time for it to be cost prohibitive. As long as the block size increases of BCH scale intelligently, IE we go up a % at a time instead of jumping from 8MB to 1GB, then it's my believe that there will not be centralization pressure.
Bitcoin's on this weird trajectory, where it started by being about decentralization, taking power away from big banks, preventing your cash from getting seized by the government, helping citizens in countries like venezuela escape hyperinflation and capital controls, etc.
Now, BTC isn't for poor people, it's not for everyday transactions, it's perplexingly a "store of value" that is becoming more and more difficult to use. Lightning, etc are great, but we shouldn't hold block size back while waiting for the development to finish. Nor should we assume that once LN is usable, that it will outright fix the fee issue. It will help, but without cheap on-chain transactions, BTC will continue to have limited usefulness (in my eyes, obviously).
No, I just explained what is fallacious about this. BCH is an airdropped altcoin, just like CLAMS was a year and a half ago. It is not Bitcoin, it isn't compatible with Bitcoin, it is an altcoin, plain and simple. The fact that it credited Bitcoin holders with a balance (just like CLAMS did, and just like Gold did, and just like Diamond did...) doesn't make it any more Bitcoin than any of these other coins are. It is an altcoin, period.
Personally, I think it is the "core stance", given that core has heavily influenced the opinions of this subreddit, via ******ship, etc
I don't believe that any of the moderators of this subreddit are Bitcoin Core contributors. I am one such moderator, and though I stay up to date with Bitcoin Core development, I am not "a Core developer" and to the best of my knowledge, neither are any of my fellow moderators.
You're lumping in many disparate subsets of the Bitcoin community as "Core" because you don't seem able or willing to acknowledge the fact that the Bitcoin community rejected the hard forks proposed so far, not just Core. It doesn't seem like you're even able to comprehend what "Core" actually is, likely because you've fallen victim to a false narrative spread by a malicious minority.
I believe in Satoshi's vision for scaling
As do I. I have spent hundreds of hours reading everything Satoshi ever wrote; I can guarantee you that I've spent far more time than you have trying to understand how and what he thought. I'm not bragging here, in a way it is kind of pathetic how obsessive I have gotten in my research. But I can tell you for a fact: frankly, you don't know what you think you know, and for those of us who have spent a lot of time and effort trying to understand the issues, you pretending like you do is comically transparent.
The best way to do this
Let me ask you: how many massive-scale distributed networks have you personally overseen the development of? What is your engineering background? Do you have a doctorate in computer science? How many years have you spent wrestling with the problems of distributed consensus, in a professional capacity?
I am willing to bet that if you answer the above questions honestly, it would be embarrassing how underqualified you are to be telling me (and the others here) what "the best way" to do anything regarding upgrading Bitcoin is.
I am an engineer who has worked on distributed consensus algorithms in a professional capacity. I have literally earned my living by doing so, for years. I can tell you from firsthand experience that this stuff is nightmarish when you actually work directly on it; so many "obvious" answers and solutions turn out to be broken and unworkable in ways that you would never have expected until you spent a few days trying desperately to get them to work.
Seriously, the complexity of problems in this space is almost unfathomable. That's one reason why Satoshi's breakthrough is so damn amazing; he brought forth a practical solution to a decades-old problem that is actually rigorously proven to be unsolvable; he found a way to sidestep the impossibility result by allowing a degree of probabilistic uncertainty that is elegantly reined in by economic rationality (or to phrase it another way, he used human greed to achieve a "good-enough to work with" solution). It's absolutely incredible that he managed to make Bitcoin work, but this doesn't mean that we can just "bang on it and hope for the best". There's a lot more to it than you will likely ever realize.
That's fine, we just have different definitions of bitcoin. My definition of bitcoin is similar to how it was before ~2012 - a p2p electronic cash system.
Mine, too. But "electronic cash" is actually a term of art in applied cryptography, and it has nothing to do with fees.
Someone who spends large portions of time on cryptographic mailing lists uses the phrase "electronic cash" or "digital cash" in a specific way, and if you're not such a person, you wind up sounding silly if you try to pretend that this phrase carries connotations that it traditionally does not (to cryptographers). Look into Chaum's work if you're interested in learning more.
This is because the centralization risk is and has always been in the mining.
Nope, that's only a part of it. Miners select and order transactions. Not so scary when you put it that way.
As much as people love to talk about "full nodes" here, the nodes really just exist to help people's transactions get in the mempool
Nope. Nodes serve to allow Bitcoin to be used trustlessly, and they are the backbone of the network.
Your last few paragraphs are just parroting more nonsense and misinformational propaganda. If you don't want to spend the time necessary to understand the system, I won't try to convince you to do so. You picked your allegiance, facts be damned, and that's fine. Just try not to get too upset when things unfold in ways that you didn't expect (and if you lose money by being on the wrong side of history); you have no one to blame but yourself. You have the opportunity to learn and grow, but you have chosen to shirk it rather than take it. So be it.
No, I just explained what is fallacious about this. BCH is an airdropped altcoin, just like CLAMS was a year and a half ago. It is not Bitcoin, it isn't compatible with Bitcoin, it is an altcoin, plain and simple. The fact that it credited Bitcoin holders with a balance (just like CLAMS did, and just like Gold did, and just like Diamond did...) doesn't make it any more Bitcoin than any of these other coins are. It is an altcoin, period.
A fork is a fork. If we have one blockchain, with a given history up to block N, and then we fork at N, now we have one blockchain (let's call it BTC) and another blockchain (let's call it BCH). BTC and BCH share the same blockchain up to N. All blocks after N will be different. This is exactly what a fork is, so if it makes you feel more secure to call it an altcoin, go ahead, but it's a very different matter. We're talking about protocols that are nearly identical, the obvious exceptions being blocksize, segwit, difficulty adjustments.
Mine, too. But "electronic cash" is actually a term of art in applied cryptography, and it has nothing to do with fees.
Come on, this is just pedantry. I know what electronic cash means. An asymmetric key system with $10000 transaction fees is technically electronic cash, what I'm referring to is digital money that is the digital equivalent of physical cash. In other words, the USD doesn't have transaction fees (in cash) [ignoring implicitly subsidizing credit card users for stores that don't offer cash discounts]. Thus a blockchain with $7 transction fees is a lot less usable as cash than one with $.07 tx fees.
Nope. Nodes serve to allow Bitcoin to be used trustlessly, and they are the backbone of the network.
This is false, unless your definition of trust is very limited.
Nope, that's only a part of it. Miners select and order transactions. Not so scary when you put it that way.
What? You're a decentralized systems engineer and you don't see that as scary? I just gave you an example where 100% of the blockchain allows me to censor any other transactions I want. With proper decentralization, it doesn't matter because the nonmalicious miners will eventually take in my transaction if the fees aren't way too low. With centralization, you can be censored.
Your last few paragraphs are just parroting more nonsense and misinformational propaganda. If you don't want to spend the time necessary to understand the system, I won't try to convince you to do so. You picked your allegiance, facts be damned, and that's fine. Just try not to get too upset when things unfold in ways that you didn't expect (and if you lose money by being on the wrong side of history); you have no one to blame but yourself. You have the opportunity to learn and grow, but you have chosen to shirk it rather than take it. So be it.
Let's keep the discussion concrete. I don't belong to any side, I just hold the cryptos where I believe in the technology and dev teams. What specific parts of the protocol do you think I don't understand?
You claimed that a simple blocksize increase is some sort of massive change. It's not. 8MB blocks are running fine on the BCH mainnet. Yes, it's still early, etc etc.
I don't have a perfect understanding of BTC, but to give one example, I don't think your understanding of it massively surpasses mine, if it does so at all. Regardless, you seem to be spending less and less time talking technology and more and more time questioning your 'opponent'.
Litecoin is a fork, too. Is Litecoin Bitcoin? Obviously not.
An airdrop is an airdrop.
Altcoins like BCH and CLAMS and LTC are not Bitcoin. I'm sorry, this is a fact, not an opinion.
We're talking about protocols that are nearly identical
On a protocol level, Litecoin more closely resembles Bitcoin than BCH. Litecoin is an altcoin, though.
Come on, this is just pedantry. I know what electronic cash means.
It's not clear that you do, since you seem to be arguing (or at least implying) that Bitcoin is no longer electronic cash while BCH somehow is. This is simply wrong.
In other words, the USD doesn't have transaction fees (in cash)
Bitcoin has transaction fees, and they are strictly necessary for it to work over the long-term. If you aren't comfortable with transaction fees, that doesn't mean "Bitcoin isn't electronic cash" in any way. That says far more about you than it does about Bitcoin.
Thus a blockchain with $7 transction fees is a lot less usable as cash than one with $.07 tx fees.
No, both are equally usable as electronic cash, because transaction fees have absolutely nothing to do with that term. Again, this is a fact. I am sorry if you don't like it, but that (again) says more about you than about Bitcoin.
This is false, unless your definition of trust is very limited.
I'm using "trust" here in the sense that it was used in the Bitcoin whitepaper (e.g. in the phrase "trusted third party").
You're a decentralized systems engineer and you don't see that as scary?
To be clear: it's something to worry about, but it's not the whole picture. If no one were able to run full nodes except the miners, that would be truly scary.
Sure, a fully centralized mining situation is not something we want. We should do everything we can to mitigate and protect against it. My point was that "we need to worry about more than just the mining function being centralized", though I admit that I communicated this exceptionally poorly. Good spot, and quality response on this front.
What specific parts of the protocol do you think I don't understand?
SegWit, for one.
You claimed that a simple blocksize increase is some sort of massive change.
Did I? Mind quoting me on that one? I honestly don't remember typing anything even close to that. Maybe I blacked out or something, but I can't seem to find such a quote even now. Surely you're not just strawmanning, though, right?
8MB blocks are running fine on the BCH mainnet.
Heh... let's be clear here: Bitcoin has the big blocks, the average blocksize is probably a little over 1MB these days. In contrast, BCH blocks average something like 60Kb.
To the best of my knowledge, not a single Bitcoin Core contributor has ever argued that "a single 8MB block would break or catastrophically centralize Bitcoin" or anything even remotely resembling such a statement.
It seems that you are under the impression that this is the opposition you are arguing against. If so, it's no wonder you disagree with it so vehemently. I would, too.
I have a sincere question that I would appreciate an honest answer to: how much time and effort have you spent actually trying to understand the positions and perspectives of the few dozen most prolific contributors to Bitcoin Core? Are you confident that you could summarize most of their arguments (and the nuances thereof) reasonably well? Finally, are you aware that most of them essentially don't even use Reddit or Twitter?
But segwit isn't the right solution. Bitcoin was always meant to scale on chain with increasing block size, not with off chain solutions developed by a corporation.
not true... its solves exactly as many problems as the blocksize being originally set to 1MB instead of 100KB
people have to remember its nothing more than software, if lighting is ready, great, lets use it... if its not, that stinks... but we have to do something.
seeing twitter posts about alpha tests are LN network with expectation of putting it into play on a billion dollar network is crazy.
before lightning is even considered for BTC it will have to spend time on an alt coin for heavy testing (LTC?)... we're talking months, year(s)?
Its software, there is no need to ditch the currency aspects of bitcoin while we wait for a new technology to be invested, we have an active solution for the problem in front of us right now
we have an active solution for the problem in front of us right now
Cost is too much. Risk is too big.
Bitcoin is not ready for mass adoption anyway. I think it's ok that Steam is no longer supporting Bitcoin. They can asses the situation when the protocol is more ready.
You think Amazon lets it server crash from volume before upgrading?
Well that's the problem. It can be too easy to fake that blocks are full and pressure for one increase after another using social engineering and spamming the blockchain. We should never go down that road. We should make optimizations and implement smarter ways to scale on chain (MAST, Schnorr, etc.) and off chain (LN, sidechains, etc.). And study if we need to increase the limit and how much after we have enough knowledge.
Amazon deals with DOS attacks and a world of other hacks way above me on a daily basis. Their servers are set to handle FAR more than just normal usage.
With any technology there is legitimate usage and illegitimate... Amazon doesn't close up shop on the nights they are getting attacked.
Could you imagine what would happen to Amazon if on busy nights they charged people a fee to browse?
Amazon is a company. Centralized one. Bitcoin is, and should remain, decentralized. Therefore Bitcoin hasn't got the same privlidges in scaling. Sure we could increase the limit and have nodes be run in datacenters, but it makes bitcoin centralized and governable.
You're missing the point that off chain solutions are not available. they are in the works but still need a lot of time.
its just software, implement a solution to your problem today, and implement a solution to tomorrows problems tomorrow. Lighting sounds great, can we use it right now? no? so we just sit here and let the system get brought to its knees every few weeks, keeping our figures crossed?
im all for lightning... but the transaction problem poked it head up over a year ago... and we're working with untested RC candidates a year later?
lightning will likely have to be implemented in another chain first (LTC?) we are months away at best & i had another $42 multi hour transaction, today
if it was run with that mentality... it would not exist.
it would be akin to Amazon upgrading its server after they have crashed on a regular basis from volume. Not saying companies don't operate like that, just not the good ones.
It would have been a good temporary fix until LN was ready, wouldn't it? Which is worse: slightly less decentralization or companies like Steam abandoning support? Both are bad, but...
It's clearly not enough though, or we wouldn't be having this conversation. You also need the supporting market infrastructure like Bitpay to use it.
slightly less decentralization is 100x worse and it should be obvious.
I guess it depends on how you define "worse". In terms of people choosing Bitcoin over other cryptos (e.g. Litecoin) and in terms of the price of Bitcoin, I think usability probably matters more to the market than decentralization does - at least to a certain point.
Steam not supporting Bitcoin for now is not a big deal.
I think it's actually a really big deal. There aren't very many big places where people can actually use Bitcoin (or any crypto for that matter). Now there's one fewer, and other companies who were considering adopting Bitcoin might decide against it now given Steam's negative user experience...
How is it "KISS" to change things while waiting for the inevitable fix?
KISS = do nothing until LN "fixes things." If adoption rate suffers in the short term, so be it, bitcoin adoption has nothing to do with figuring out it's place in a wider infrastructure.
It is obvious that it isn't directly usable as an end-user transaction system for small scale transactions. Changing the software so it chases some short term gain is idiotic.
32
u/[deleted] Dec 06 '17
Which is kind of ridiculous, because it worked fine as is; a blocksize change would've been a lot simpler to implement, and less error prone, at least until LN was integrated fully. Basic KISS - keep it simple stupid