On the dangers of a blockchain monoculture
tonyarcieri.com
tonyarcieri.com
So, I look forward to more articles like this to draw attention to solutions other than Bitcoin architecture. Another thing I look forward to are links to interesting alternatives like SCP and Interledger in this. I haven't reviewed them yet but brief descriptions seemed more exciting than "Cut-and-Pasted-Coin launched yesterday while promising to change the world."
Some "see also" on that topic, then ....
https://www.reddit.com/r/Bitcoin/comments/3u1m36/why_arent_w...
http://diyhpl.us/wiki/transcripts/scalingbitcoin/sharding-th...
https://github.com/vbuterin/scalability_paper/blob/master/sc...
(Unless you don't mean the SCP that was presented during Scaling Bitcoin Hong Kong, and rather the other more widely known SCP....)
Plus, knocking out the miners and leveraging stored value in an existing currency can simplify things by removing some obstacles they discuss. Bitcoin's problem is a lot harder than the general problem of decentralized payments and contracts on cash-backed currency. I prefer to stick to the latter as it solves todays problems pretty well.
Also- proof of stake always forks due to work attacks, so that's probably not a secured database.
I think your second point is what some of the critics of the bitcoin obsession are talking about. Not every blockchain needs to be as attack-resistant as the bitcoin network. Many of the speculative blockchain uses like for the Internet of Things could benefit from a history of all transactions but don't depend on it. Proof-of-stake might work fine for many cases.
Matter of fact, storing it as one is incredibly wasteful. Banking systems have shown it's not necessary. Just need the transactions, timing, sources, and verification of them.
So git basically. Maybe instead of blockchain technology they could call it version control tech.
That's why it's exciting when people break away from the crowd dictating specific approaches and start asking themselves questions about alternative techniques. :)
On the other hand, if I have a transaction "Transfer 1 BTC to bitcoin.org" and you have a transaction "Transfer 1 BTC to mtgox.com", they don't necessarily commute or merge because of the double-spend problem: they might both be trying to spend the same 1 BTC.
There are a number of nifty decentralized systems you can build that don't have to think about double-spend problem, where all transactions commute/merge. Associating names with public keys seems to be one of them, as long as you allow a name to be validly bound to multiple keys. (A Keybase-style binding of external service usernames to public keys would permit this, since you simply have multiple valid Keybase proofs; the external usernames are arbitrated by the various centralized services. A Namecoin-style approach doesn't, since names are first-come-first-serve, and you don't want multiple people to be served the same name.)
There appear to be ways to make a money-transfer system avoid the double-spend problem: as I understand Stellar, it simply just makes the spending account legitimately owe both people money (and puts limits on how much each link can transfer at a time, so that the money is actually recoverable). But for non-money-transfer systems, if you can arrange your problem statement such that double-spending isn't a concern in the first place, you can use regular Merkle trees and avoid the entire proof-of-work overhead.
https://medium.com/@arthurb/what-do-blockchains-accomplish-e...
Such a bad implementation of a potentially good idea.
The Bitcoin protocol strives for absolute consistency to mitigate risk. Other cryptographic hash based protocols that are described as "blockchains" may trade the overhead of absolute consistency for speed and lower computational overhead, e.g. Ripple [1] uses consensus between `n - c*n` nodes as the basis of trust along with transaction costs to mitigate the odds of Byzantine failure that would result in double spend; in exchange transactions execute more rapidly and with less computational overhead. Again, there's nothing magical about the implementation details. What matters is reliable trusted transactions of value. Bitcoin transfers can happen on the order of minutes, Ripple transactions can happen on the order of seconds.
What technologies that are described as "blockchains" tend to provide is low transaction fees. The time and expense of moving value via blockchain from Berlin to Cartagena is low compared to wire transfer independent of the blockchain's provenance...provided of course that the end units of the exchange are suitable to all parties. There's nothing magical beyond it being easier than using goats as the medium of exchange.
[1]: https://ripple.com/
The liquidity constraints of Bitcoin may ultimately limit its general adoption and perhaps encourages speculation over use. And is why, despite my lack of clarity, I did not intend to suggest that Bitcoin was better than Wells Fargo money orders for moving money internationally. That doesn't mean that blockchains may not prove to be significantly better.
However it's a classic disruptive technology scenario. Bitcoin is weaker than other currencies in almost every way, but it has its few very special advantages.
For now the only users are people for whom those advantages are paramount. That small group of dedicated users will use it dedicatedly and slowly the ecosystem builds up around it until other limitations are mitigated.
At that point we'll need to reassess its competitiveness.
They're certainly not new or unaddressed. Or politically neutral within Bitcoin.
My favorite comparison is to leaderboard ranking in competitive games (let's use Starcraft 2 as an example.) This is another place where everyone would love to cheat if they could.
Let's say you set up a blockchain where each "transaction" contained someone's SCII 1v1 gameplay-record from their perspective (i.e. their own input events, and the received network movement- and action-events from their opponent) for a ladder match they played. You'd get two "transactions" in a pair for each match—each submitted by one player—and each one would would move the players' ladder rankings and leaderboard positions around (though in an idempotent way, if both records happen to be valid.)
In this model, instead of having to have an authoritative "ladder server" that simulates all the game's physics for the players, or building any sort of anti-cheating tech into the game-client, each player would just be part of the ladder blockchain and therefore would "audit" each entered game-record after the fact, by running the game's physics engine against the gameplay-records to determine their validity, and translating the valid records into changes in the ladder-ledger.
Every player that bothers to run the ladder-chain daemon (which might-as-well just be embedded into the game-client as a nice'd background process) would be auditing every other player's game-record for physics discrepancies. Records from matches where either player was using a hacked game-client would simply be dropped from history rather than affecting the ladder (or could be encoded as a forfeit for the hacker.)
The game's manufacturer could have server-nodes of their own, purely for auditing—but they likely wouldn't need to. In fact, there wouldn't even need to be a game company; the game could be completely abandonware with no server infrastructure, yet the ladder and leaderboard system would continue to function indefinitely.
The properties that let you do this are what make a blockchain a blockchain. The other properties are implementation details.
sidechains: http://blockstream.com/sidechains.pdf
Lightning Network stuff: http://lightning.network/ like http://lightning.network/lightning-network-paper.pdf
For a high-level overview of Bitcoin scalability proposals, see my 2015 scalingbitcoin.org Montreal presentation: http://diyhpl.us/~bryan/irc/bitcoin/scalingbitcoin-review.pd...
Lightning Network and Bitcoin payment channels are more like restrictions around the permissible possible undefined behavior of zero-confirmation transactions (which otherwise have more broadly undefined behavior), which are inherently unconfirmed in the Bitcoin system. By using an initial committed transaction, rules around the behavior of zero-conf transactions spending the UTXOs can be locked down, while still using Bitcoin transactions, not a separate consensus system and not a sidechain.
For an overview of criticism regarding the "consensus" mechanism in non-fuggerian Ripple (aka Ripple 2?) and Stellar, see https://news.ycombinator.com/item?id=9342348 and https://botbot.me/freenode/bitcoin-wizards/msg/36135395/
For an overview of why proof-of-stake doesn't sem to be secure, see https://download.wpsoftware.net/bitcoin/pos.pdf and https://download.wpsoftware.net/bitcoin/alts.pdf and https://download.wpsoftware.net/bitcoin/asic-faq.pdf
For an overview of what Bitcoin Core developers are working on regarding capacity increases, see the recent https://bitcoin.org/en/bitcoin-core/capacity-increases-faq which is regarding https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015...
http://tendermint.com/posts/tendermint-socket-protocol/
Yes, we're moving away from "PoS" from the time being, because our clients are more interested in posting collateral external to the blockchain. That said, the original security properties still hold. It's the combination of three things that create security on a non-PoW blockchain, for Tendermint.
* Validators have posted collateral (either on chain or off chain) that is not immediately transferrable, so there is something at stake.
* The BFT consensus algorithm ensures that at least +1/3 of validators must deviate from the protocol to attack the network.
* If there is a fork, then we can find out who had caused the fork. The validator-set is held accountable.
That hasn't changed. What has changed is our client base. We don't want to launch a cryptocurrency ourselves because as US/Canadian residents, that's a legal gray area. On the other hand, fin-tech clients and banks are interested in utilizing this technology for creating a distributed multi-write database. Thus the change in direction.
That said, we're very much interested in support the original PoS design. Other designs as well. For example, we're building out an experimental governance app that allows for arbitrary proposals. Perhaps we can use that to empower users or designated administrator groups to decide on updates to the validator set.
https://github.com/tendermint/governmint
There are many ways to update the validator-set, PoS just being one of them. We will build out our platform to accommodate a wide variety of strategies for managing the validator set. For all strategies, they will make use of our robust BFT consensus algo.
Finally, there are sound technical reasons why a BFT ledger should utilize a hash-chain of blocks (list of txs). It is both a speed optimization (validators only need to sign block hashes, not each tx) as well as a security requirement. To expound on the latter, note that the original PBFT implementation does not provide any guarantees when more than 1/3 are Byzantine (see http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.121...). But the hash-chain ensures fork consistency. So there you have it, a chain of blocks of transactions is fundamentally important for non-PoW ledgers. That's why we use the term "blockchains".
This is incorrect for multiple reasons.
> "Takes over 10 minutes to “commit” a transaction"
Incorrect. Average wait time would be less than 5 minutes.
> "Turning your Bitcoins into cold hard cash denominated in the currency of your choice is perhaps the cryptocurrency’s biggest problem"
It is author's world view based on pre-bitcoin times that cold hard cash is better. It can be said that turning cash to bitcoins is fiat's biggest problem.
>"moving money between ledgers actually involves integrating with those ugly legacy systems"
Assets on different blockchains can be swapped using various methods and does not need third parties.
> "there are far more efficient distributed consensus algorithms than this which don’t involve a proof of work."
Author gives the example of Interledger and SCP. Without proof-of-work origin of money will always be controversial. Both Ripple and SCP create money out of thin air.
>a very cool feature I will acknowledge exists and give a quick hat tip to Ethereum
There is NOTHING that ethereum can do that you can't do with bitcoin.
> Bitcoin-NG (paper), a protocol that inverts the ordering of Bitcoin consensus: a miner is first elected leader by winning the proof-of-work “lottery” by mining a “key block”, and then once elected leader becomes a transaction broker who can mint “micro-blocks” via digital signature until the next leader is elected.
Many problems linked https://www.reddit.com/r/Bitcoin/comments/3or365/bitcoinng_p...
I did not read last 3 paras. The author is damn right that Blockchains are world's shittiest databases and should not be used so.
In my personal understanding of what blockchain is, the author didn't mention it as a DMMS(Dynamic membership multiparty signature). This has been explained in the sidechains whitepaper, which most people do not read due to another myth that the employees of a private company 'blockstream' are majority of Bitcoin Core devs. Anyone trying to understand the blockchain should read the introduction of that paper. https://www.blockstream.com/sidechains.pdf
> Many problems linked https://www.reddit.com/r/Bitcoin/comments/3or365/bitcoinng_p...
Thanks dude, I forgot about my comment there. As for weak blocks, how about this one:
https://www.reddit.com/r/Bitcoin/comments/3m2wpf/bitcoindev_...
Average wait time for a block is around 10 minutes. You may be thinking of it in terms of buses, where if there is a bus every 10th minute, you'd expect a 5 minute average wait. But blocks are mined practically independently, you could get two in a minute, or none in an hour. Turns out, no matter when you start waiting for a block, the average waiting time will be 10 minutes.
However, I said "less than" 5 because difficulty has been increasing and more blocks are less than 10 minutes than not.
https://blockchain.info/charts/avg-confirmation-time?show_he...
So does fiat, and fiat works. It may not work well all the time for 100% of use cases, but in general it works well.
As long as the mechanisms by which money is created out of thin air are well-understood by the people receiving this money (which they are for fiat) and the recipients give informed consent to that (which they... sorta do for fiat), this doesn't seem like a negative.
If you are not a government, fiat money does not work for you.*
* Quasi-government entities have a long history of issuing currency like this - company scrip was one such practice, but its important to note that this is a situation of a company becoming more government-like.
That is factually incorrect. Bitcoin is not turing complete, Ethereum is. Eg: You can't do loops in Bitcoin, you can in Ethereum.
Perhaps you are speculating about the potential capabilities of sidechains, but they isn't a reality at the present.
Think of any Ethereum usecase and you can do it with bitcoin.
Also, can you expand on Schnorr Signatures
Yes, but it's a lot harder. Look at for instance the colored coins project vs. implementing a custom token on ethereum.
†Note to “that guy” on Hacker News: yes, there were cryptocurrencies before
Bitcoin. I’m aware. You don’t need to educate me on them. But they don’t count,
sorry.
https://www.youtube.com/watch?v=bMOzvxQHywMI know, it all blew my mind too.
The only thing new IIRC was making old things use proof-of-work and (global?) broadcast. Which also caused its problems. So, no, the stuff wasn't obscure, locked away... anything. Just ignored outside of transaction, database, security, and accounting subfields. The few doing it made slow but steady gains on technologies.
And thanks to Bitcoin, they might get some mainstream attention and more R&D.
I guess... congratulations?
Doing their homework for them just ain't productive. Not people riding a fad that is.
Note: A quick Google in response to one comment here led me to two, new papers with one having pretty awesome properties. Just goes to show how easy it is.