Great post, I appreciate the response.
Thanks for the kind words. It can take me awhile to write an in-depth reply; and I keep adding to this in pieces, as new replies accrue. Apologies that the result came out somewhat disjointed and rambling.
By way of preface:
The white paper refers to bitcoin as peer to peer cash, we have all believed in bitcoin as a currency from the get go. If the only way to utilize bitcoin to buy a cup of coffee is to go off-chain, then would you really be using bitcoin?
This is where my own lack of technical knowledge starts to show through. Specifically, I do not know enough about off-chain scaling solutions to have a technical opinion on whether those solutions are actually Bitcoin scaling, or essentially alt coins. I.E. the reason for on chain scaling is that it IS Bitcoin.
For a very rough conceptual analogy, imagine that gold is still used for everyday currency. But gold has some problems: It’s cumbersome; it’s heavy; it’s difficult to carry around. These problems are intrinsic to the nature of gold; they can’t be solved by changing gold itself. So somebody invents paper notes which are redeemable on-demand for gold. These can be used for convenience when purchasing cups of coffee.
However, this is where the analogy departs from the reality of anything yet seen. Unlike real-world paper gold notes,
these paper notes are magical. They are not issued by any central authority; you yourself create them by hooking your gold storage wallet into a “payment channel”. They require no trust, and impose no counterparty risk. They are mathematically verifiable to represent actual gold; they are not
promises to pay gold; they can be magically transformed back into gold at any time, whenever you wish to do so.
That would be an approximate description of gold’s version of the Lightning Network. Now, tell me: In your opinion, “would you really be using [gold]” with such a system?
Also relevant: Many users (mostly n00bs) are
already using off-chain transactions, but in an abysmally inferior way. There are major exchanges which act exactly as an obsolete bank: They give you an account, and they keep all the actual money for you. All accounts’ coins are typically kept in one pool, with on-chain transactions only used to send/receive outside funds. Transfers between users of the exchange are treated as intrabank transfers, made by changing some entries in an internal ledger.
This has all the centralization and counterparty risk which Lightning avoids. If the bank fails, you have Mt. Gox. Also, the bank can arbitrarily deny you access to your funds.
In your opinion, are people who use these exchanges
right now “really [using] Bitcoin”? My opinion is, not really—not in the fullest sense; though they can still transact in actual Bitcoin with people who
really use Bitcoin per the motto, “be your own bank”. At least they can, if the bank deigns to so permit. I hear that Coinbase closes the accounts of people who send to or receive from addresses disliked by Coinbase.
Much bigger problems are latency in block delivery (=orphan rate), network bandwidth, CPU and IOPS for validation, and most of all: UTXO set size growth.
Been thinking about that last part for awhile now. Literally you are saying "we can't scale on chain capacity because it will increase Bitcoin usage"
Fundamentally you are saying we can not have widespread consumer use of on chain bitcoin transactions?
Sort of. Literally, I am saying, “We can’t scale on-chain capacity because that would increase
on-chain Bitcoin usage (to the point of overloading nodes).”
But that is a non-problem. Why is it desirable to have “widespread consumer use of
on chain bitcoin transactions”? Emphasis added.
I realize here that, as you stated, we are moving from the technical discussion to its inseparable nontechnical counterpart. But first briefly, on the technical side, it must be understood what an awe-inspiring achievement was Satoshi’s creation of a Byzantine fault-tolerant decentralized database, and his application thereof to solve the double-spend problem for a new form of money. Very smart people had been breaking their heads over these problems, for about two decades. Now, very smart people have been trying to outdo Satoshi for the past nine years. Perhaps someday, an ingenious new invention will obsolete Bitcoin’s way of doing things. But thus far, nobody has proposed a replacement which improves performance and capacity
without compromising on decentralization and trustlessness.I find myself linking
this ACM Queue article quite oft of late. It provides a good bird’s-eye view of not only the technical problems solved by Bitcoin, but also the academic history of those problems. That will provide much necessary context for this discussion.
Satoshi’s BFT database has a few problems; principal among the ones hereto relevant: Its performance is awful, and its capacity is very limited. Fortunately, we can appeal to the Wheeler-Lampson Fundamental Theorem of Software Engineering,
“All problems in computer science can be solved by another level of indirection.” (See also
RFC 1925 Section 2, (6), (6a), and also (8). Also, (1) and (2a).) Enter Lightning Network and sidechains.
If you could propose a sound reason for the importance of
on-chain scaling, I would be curious to see that. I’ve never seen such a reason given, other than handwaving and emotionalist argumentation. For my part, to answer your question, yes! I would love to use Bitcoin off-chain.
Bitcoin has a serious existing flaw in my eyes, lack of transactional privacy (unlinkability). I myself lost a substantial proportion of my Bitcoin by trading it for a privacy-oriented altcoin, for purposes of private long-term value storage. I dearly wish that instead, I had been able to store
genuine Bitcoin on an appropriate Bitcoin sidechain. Sidechain Bitcoin would
be Bitcoin, redeemable on-chain at a 1:1 ratio.
Moreover, the inherent slowness of Bitcoin transactions is unacceptable for exactly the kinds of “cup of coffee” consumer transactions as you mention. Lightning Network is and will be incomparably more secure than zero-conf on-chain transactions; in my overall assessment, proper use of Lightning should be even more secure than single-conf on-chain transactions. (Small reorgs do happen!) When all “best practices” are observed, it’s not even feasible for
one person to buy a cup of coffee on chain—even if that were the only transaction occurring at that time worldwide. As it stands, on-chain, either the merchant takes a risk, or the customer waits somewhere between 10 and 60 minutes. With Lightning, both the wait and the risk are eliminated. This is besides the matter of scale. Why
wouldn’t I wish to do such transactions off-chain, where I can use real Bitcoin (instead of toy money such as Visa or Ripple) and the experience will be superior?
Aside, I note that if you’re selling 0.0001 BTC cups of coffee with Lightning, then you’re not creating a permanent, globally archived historical record of each and every purchase of coffee from you. Besides not bloating a global shared resource (“tragedy of the commons”), this also enhances privacy for both customers and merchants. Instead of forever recording each and every purpose, Bitcoin’s global public ledger will keep a permanent record of some occasional bulk settlements.
Thus as you can see, I don’t deem on-chain scaling to be important. What is important is:
0. To keep on-chain transaction processing decentralized, outside the control of any person, entity, corporation, cartel, clique, or government. This in turn requires that any person of modest means must be able to run a full node. It is unimportant that the “little people” be able to use on-chain transactions to buy cups of coffee. It is an imperative absolute rule of Bitcoin that the “little people”
must be empowered to run full nodes. If a full node were to require more resources than can be provided with an ordinary PC and a residential Internet connection, then that would not be Bitcoin anymore.
1. To enable decentralized off-chain consumer transactions. (0) enables this. (0) is a prerequisite for this.
If and only if we have a decentralized settlement layer, we can use that as a foundation to add new layers vertically (Lightning Network) and horizontally (sidechains).
Conclusion:“Bitcoin” as a currency unit means a currency which can be settled and redeemed on-chain, anytime and on-demand. “Bitcoin” as a technology is now growing to encompass a new ecosystem of Bitcoin applications which use the main chain as their foundation.
I'm sure this idea has probably already been brought up and shot down so please forgive my noob idea. Would it be possible archive the blockchain every few years? By this I mean take a snap shot of all wallet balances removing the transaction history and greatly compressing the data, this would become the starting point of transaction verification for the next few years and the archive (which would contain the full transaction history over the past few years) could be distributed by archive nodes. [...]
This exact idea and many of its variations are regularly raised on bitcoin-dev, almost as if on a schedule; and it’s just as regularly shot down, yes. A pointless discussion can here be obviated by asking, what would be the advantage over running pruned nodes? Pruned nodes already do internally more or less what you describe, on the level of an individual node rather than of the whole network. The only meaningful difference I can see is with initial sync, which only needs to be done once.
People who can’t afford to keep a few hundred gigabytes of data stored in perpetuity should enable pruning; and the vanishingly small number of people who are unable to make a one-time download of the blockchain should instead use an SPV client. But really, almost anybody can afford to run a full node
without pruning. This is a solution in search of a problem.
Edit to add:
The question is, if on-chain-scaling is only a mediocre improvement at the best given current capabilities, then why are we pursuing it at all? a 100-500% increase probably won't make much of a difference since it still won't be in the ball-park needed to be used for small & instant transactions anyways.
I'm not saying that improving the on-chain scaling protocol isn't a good idea, only that unless someone introduces a radical improvement (nothing of the sort that has been suggested up until now), the focus should lie on developing other aspects of the protocol (instead of wasting time & resources on mediocrity).
Make improvement on things that can yield significant improvements, not mediocre improvements. Value prioritization.
Well said, generally. That’s the right mindset for approaching these problems. But please also observe that off-chain layers act as a multiplier of
something. If Lightning Network winds up averaging
x off-chain transactions per on-chain transaction, for some impressively large
x, then doubling on-chain capacity could add up to
x capacity to the Bitcoin ecosystem.
That said, I do think that Segwit, Schnorr signatures, and MAST will suffice for on-chain capacity improvements for the near to medium future. After Lightning begins to mature and sidechains (somehow) become a reality, then we will better know what more is needed on-chain.