I know it's centralisation and goes against one of the features of the blockchain, but having trusted hubs through which to interact would save a lot of wasted space, time and data.
I'm not sure why inserting a check-point and resetting the blockchain size to zero would not be possible - can someone please explain this? If the status at the checkpoint were agreed upon by 51% of all nodes then why not?
Not using cryptocurrency.
Even (real) strip mining at least produces industrially useful ore.
Blockchain technology as implemented in bitcoin is incredibly wasteful. The power used alone is in the tera-watt hours per year.
All of those massive farms of custom miners...all to process an astounding ~90k transactions a day.
The relative energy cost is astounding, considering that volume could easily be handled by a single server in a traditional architecture.
(10 TPS for TPC-B: http://raspberrypg.org/2013/11/raspberry-pg-server-some-benc...)
Moore's law doesn't help bitcoin. Because if we produce a miner that has 10x the power efficiency of a current mining hardware it just results into everyone using that miner. Total hashrate would be 10x but the electricity consumption would remain the same. The difficulty adjustment in bitcoin guarantees that regardless of the HW the profit from mining goes close to the electricity cost of it. Thus we can simply ignore Moore's law and focus on the fundamental point of bitcoin mining: Producing waste heat.
Having to continuously produce waste heat to secure the network is a fundamental flaw in bitcoin. An attack against the network (51% attack, using waste heat) must be sufficiently expensive compared to the gains of such an attack. The benefits of an attack scale with the amount of value transferred in bitcoin network. Thus the amount of waste heat constantly produced by honest people also must scale in order to keep it secure.
All of this because one person got the bright idea to solve Byzantine generals problem via unforgeable votes. What kind of vote is that? Waste heat. The guy just figured out how to verify that some other person has produced waste heat. And the whole network rests on the assumption that honest people buy more votes than the dishonest ones.
Actually, it's capitalism in general that has an exponential hunger for resource consumption, Bitcoin is simply the first decentralised capitalist system, and it's so simple it's clear.
But well, in the end capitalism will have to go too - lest we want eventually to be strip-mining the whole universe at close to light speed.
Storing some type of "working set" is totally feasible. Technically you don't even need to keep around all blocks, simply the resultant state that you arrive at after processing all blocks in order. This is called the Unspent Transaction Output set or UTXO set.
It's also possible to only keep around XGB of blocks, or the last 500 blocks, etc (a pruned log)[3]. The purpose of keeping around all blocks is to bootstrap the syncing of new nodes to the network, or optionally to full-chain wallets for re-scanning. Before pruned nodes are widely deployed, a system needs to be developed to allow a syncing node to efficiently identify and retrieve the relevant blockchain shards it needs so it can validate everything and arrive at the current state.
Also, with BitcoinCore 0.10, syncing takes about 4 hours if you don't have shitty a hardware or internet connection [2].
[1]: https://en.bitcoin.it/wiki/Thin_Client_Security [2]: https://github.com/bitcoin/bitcoin/pull/4468 [3]: https://github.com/bitcoin/bitcoin/pull/4701
Well, it's a lot more likely in my eyes that it'd be a thin client operating against a server owned by its owner. Just as safe, and doesn't involve trying to figure out how to allocate enough money on a micro scale to all your individual devices so they don't run out.
Could I manually get it installed and running on another large-volume and slower speed drive where this wouldn't be an issue, of course. But why do I want to bother even dealing with something so user-hostile? The average Joe or Jill who isn't a computer nerd is just going to see this thing eating his/her hard drive and get rid of it.
It's especially endearing to me because it's my primary objection to anarchists (of whom I have several as friends)- that the system they envision just isn't stable, and we arrived at the system we have now for that reason.
Also, as Yvain pointed out in his excellent article[0], we might be fucking ourselves over big time with this drive towards decentralization and trustless systems. As we fight against corruption and abuse, we're building systems that don't allow us to coordinate even in principle. Today it's tax avoidance and buying pot on-line, tomorrow it will be untraceable trade of fissionable material and weaponized biotech.
Building trustless systems seems like a cool hack, but I think we'd be better off working on a way to improve coordination.
[0] - http://slatestarcodex.com/2014/07/30/meditations-on-moloch/
Many socialist and anarchist ideologists are/were perfectly fine with centralisation of production, as long as decision making is decentralised, and participation is a result of free choice and can be withdrawn.
The capability of decentralisation in Bitcoin is important because it acts as a safeguard against forced centralisation and coercion. As long as the capability remains, whether or not people for practical/efficiency reasons opts for centralisation ought not cause most anarchists any major concern.
I'm probably misunderstanding something, but isn't it more that blockchain technology allows decentralisation, while dominance of any particular deployment supports centralisation? As I understand it, once Bitcoin is centralised, the 51% can control it as they wish, and the only alternative is to set up a wholly separate Bitcoin2 chain, or another altcoin.
(Again resulting in cryptocurrency being a bad store of value.)
The lower level is centralisation into a small-ish pool of large services where no service exceeds 51%. That's what I was mainly thinking about.
We've seen in the past how Bitcoin has adjusted to the threat of 51% with people withdrawing capacity from large pools etc. in response.
In either case the point is that the existence and open availability of the technology acts as a deterrence to coercion because the act of trying to take advantage of a 51% attack will send people running for the hills (and the existence of altcoins makes that even easier).
We've seen people willingly pull back from potentially even "accidentally" exceeding 51% of the Bitcoin network in the past for that very reason.
The point is not absolute decentralisation at all cost (though some anarchist tendencies do want to maximise decentralisation), but the ability to withdraw consent and unilaterally decentralise.
Why would you have to? The point of decentralisation is not that everyone has a copy of the truth. It's that a sufficient number of nodes have a copy of the truth, such that you can check a number of them and easily verify the veracity of the data. Many blockchain applications run not by querying their own blockchain but rather querying a number of trusted sources via their API. Coinbase, Bitpay, Chain.com, Blockcypher etc all offer APIs to interface with their blockchain nodes and others.
It's like saying Facebook will never work because you can't possible store the worlds' photos on everyone's smartphones. You don't have to, Facebook stores it on their server. Similarly we will see, and already see, dedicated servers that store the blockchain, and as long as you have enough independent ones you can maintain decentralisation just as if you were hosting your own node.
There's absolutely no need to host the blockchain on small embedded devices any more than any other data, like music or photos we normally host on dedicated servers instead.
> but truncating the chain (or only storing some kind of "working set") isn't feasible either.
Yes it is. What makes you say it isn't? Pruning the blockchain is something that's currently being worked on.
The idea is that if I send you $1 a million times and you send it back $1m times, every day, for the next 1 billion years, we could either store terabytes and terabytes of data of all these transactions, or we could store the end result (= no change occurred) and the last couple weeks of transaction data. The rest can be pruned. Because each block has a hash of all its transactions, and this hash is used to mine the next block (hence a chain of blocks, blockchain), we needn't store each individual transaction, we have the hash to verify the truth of transactions.
We might have some universities saving all transactions for posterity & research, and some businesses for data mining, but the vast majorities of nodes that just need to secure the network can indeed, without security issues, not store long-spent outputs. (i.e. bitcoins that have already been spent many times over. e.g. if I give a dollar to you and you give it to the next guy, and he to the next girl, and so on 100 times, at that point there's absolutely no reason to store on every node the fact I gave a dollar to you for the security of the network.)
> Not to mention the gargantuan download that's required for that initial setup to get up to date with the latest network transactions.
Again, no need to have all redundant transactions. The pruned blockchain would currently be under a gigabyte large. Second, headers-first has already been implemented which made the initial setup much, much faster.
Beyond that, we mustn't forget that the average American makes 2 transactions a day. And one such transaction is about 400 bytes or so, in bitcoin. If you compare this to tweets, or an hour of netflix, it's puny. If you count up all the data, it's about $8 to store one day of all of US consumer transactions on a retail harddrive. Imagine the cost of storage for Mastercard for one of their nodes was $8, and instead of just powering a fraction of US retail, they'd literally handle every single transaction by themselves and store them all for $8. Even if you wanted to have thousands of nodes and store the last year of data (and given the velocity of money, you wouldn't have to as again, you can prune data after money has been spent a couple times), that's a puny amount of money to power an entire consumer financial system of the world's biggest economy. And given storage, like CPU and bandwidth, on a 50-60% yoy growth rate (Kryders, Moore's and Nielsen's laws), I think by the time bitcoin becomes important enough to run 100% of US retail (which is likely never, but hypothetically speaking), that $8 will have dropped to below $0.10 easily.
I know I'm taking big shortcuts here but this is just to illustrate the economics are extremely favorable today and in the future. I don't know if bitcoin will succeed or fail, but I'm pretty near certain it won't fail because storage/cpu/bandwidth isn't affordable enough for nodes to make it viable to run the network. I and many others have looked into this quite a bit and these aren't big problems. Bitcoin has big obstacles (no gigantic consumer benefits in a world of decent fintech like every OECD country to use bitcoin directly, is one), but storage probably isn't one of em.
But I think the stupidly-large size of the blockchain is a major hurdle, given the concurrent trend of miniaturization. Embedded devices like one might find in the much-vaunted "internet of things" (eyeball roll) can't really afford to be toting six SSDs just for storing 3 or 4 different blockchains, or even one big one.
There comes a point when it's just no longer practical to store the entire blockchain, but truncating the chain (or only storing some kind of "working set") isn't feasible either.
Not to mention the gargantuan download that's required for that initial setup to get up to date with the latest network transactions.
I think it's a great idea in theory but ultimately pretty annoying in practice.