- Every node is potentially untrustworthy therefore additional verification must be performed on the results of any query. To verify a piece of information, a "paper trail" must be transmitted as well (who created what when).
- This overhead causes information to move much more slowly in a system (if at all, if the threshold is set too high it's possible for all queries to fail).
- To counter this cost, each node can build its own map of trusted nodes based on the validity of previous information. This "network of trust" can be used to throttle the amount of verification performed.
- To illustrate, let's take what happens if you're totally new to a fully decentralized ridesharing platform. You start off not knowing any of the other users (nodes) and so you select a few at random (trusting all mutually), perform a query on all nodes and select the driver with the best rating (according to popular rating from those few users). You take a ride from that driver, have an awful experience, and therefore don't trust the ratings shared by those users anymore. You're back to square one. Building trust takes a lot of time and first-hand validation.
- There's potential for trusted nodes to turn "bad" (untrustworthy) therefore each node must continuously "police" neighboring nodes and relay any changes in behavior to mutually-trusted nodes.
- What's more, there is a certain "cost of competition" that comes with truly decentralized systems. You cannot roll out "system-wide" changes as easily as a centralized one since a majority of the system must first agree (and many times that majority is too small to even consider it a consensus, which ends in grid-lock).
- These five costs (paper-trail, verification, building network of trust, policing network of trust, cost of competition) makes the overall performance of a distributed platform very inferior to that of a centralized platform like Uber.
- Of course there are downsides to centralized platforms like Uber. The quality of ratings is less trustworthy since all users use separate criteria (and could be untrustworthy Lyft proponents). Also, Uber (as a system) does not make decisions in the best interest of its users and is only kept in check by its competition (which is diminishing each day).
- You can look to human civilization as a way to illustrate some of the challenges and solutions of purely decentralized systems. It would be pretty hard to survive if everyone didn't trust anyone outside of himself. We built our own networks of trust via our family and friends (our tribe). As human populations grew, so too did competition between tribes. Centralized governments and services were then built to offset some of our individual responsibilities and promote unimpeded, fair flow of certain resources while still preserving those aspects that benefit the most from decentralization.
- These hybrid systems (platforms with both decentralized AND centralized aspects) work the best in the real world as long as those centralized parts keep working for the majority of nodes and a healthy balance of decentralized/centralized is maintained. (You'll notice we struggle with both of those caveats today in modern civilization).
Whoo! Sorry for the long-winded post, I have a lot more to say on the subject but I'll save the rest for a blog post :). (I'm working on decentralized authority and identification in my spare time so this is a hot area of research for me!).
It does seem like that would not require an overseers anymore than Bitcoin does.
What am I missing?
Credit card verification doesn't include the name, and only includes street number and zip code of the billing address.
When I request a ride, the _system_ gives me...
To explain what you're missing, I have to talk about how decentralized networks are actually implemented.Think of the "system" as a large crowd of people in a room. Only certain people in the room have the information you want. It is totally unfeasible to ask every person in the room, you can only ask the three guys closest to you.
What do you do?
The best strategy to maximize query performance mimics the real-world— each person occasionally gossips information to each other, which replicates data across a network and increases the chance that someone nearby will have the answer you seek.
The problem then comes down to trust-- say you ask three guys nearby a question: "Do you know if there are any cabs nearby?"
Let's say those three guys did happen to know of a cab nearby but wanted it for themselves (they just got an invite to this AWESOME party in the Haight), so they lie to you and take the cab for themselves.
Or, in an alternative case— they are all three sons of a rather horrible cab driver and tell you that he is the ONLY one available.
If we had a global view of the system, the chances of this abuse might be minimized but this is just not feasible in real-world implementations.
There's also other implications for privacy (nodes in the middle might log your queries) which might also introduce new vectors for abuse.
Thinking about it this way, the real value of bitcoin might not be in the coins but in the blockchain itself.
It's essentially a write-only log that you can append to by paying a minimal fee.
Absolutely. Blockchains are much more general and useful than a Bitcoin-centric view assumes them to be. See http://namecoin.info, https://ethereum.org, http://bitshares.org, and http://proofofexistence.com for examples.
Using the block chain as a single, shared, decentralized database is an interesting solution but has serious flaws when used as you describe:
1. Transactions are not added immediately (and by added, I mean a consensus has been reached by a majority of the network on the state of the block chain), it can take up to 10 minutes for confirmation to be reached [1] with modern networks and hardware.
2. Each transaction increases the size of the block chain. To independently verify a transaction, each node must have a complete copy of the block chain which is about 21 GB today [2], and growing ~1 GB per month. This rate is expected to increase with time which presents one of the biggest flaws of Bitcoin today. Several strategies exist to reduce the size (pruning of the data, using lightweight clients that only store headers instead of full data) but all of these reduce the ability for an individual node to verify a transaction.
3. Transactions can fail for various reasons: data is too large, transaction fee too low, fork in the blockchain, orphaned blocks, etc. What's even worse is that you won't know (and can't try submitting the transaction again) until confirmation fails ~10 minutes later.
4. Transactions fees for storing arbitrary data in the block chain is dependent upon the real-world price of bitcoin. What's more, once the block reward approaches zero (the reward is cut in half approx. every four years) the rewards of mining will shift entirely to voluntary transaction fees. This will likely cause transaction fees to increase.
5. The block chain is only secure as long as there doesn't exist a single group with a majority of processing power (it is kept in check by competition between miners). If a monopoly develops it can abuse the system very readily.
These various reasons (latency, size, failure, fee increases over time) make the block chain a pretty bad back-end for the implementation of a shared, decentralized database of a real-time P2P app.
The idea isn't completely unsalvageable however, another way of looking at the problem is to realize that the block chain file itself is used as a shared resource between many "threads". Each thread has its own local copy but reconciliation must be performed across all threads to ensure consistent state (which introduces huge amounts of synchronization and contention).
To parallelize the problem, we must reduce the amount of resource contention required. The best way to do that is to use separate databases (eg, separate block chains) for separate, logical clusters of threads. Eg, for a ridesharing app, you can use a separate database (block chain) for each city. This way, only the data that is relevant to each thread must be synchronized.
There's a few problems with this approach (could allow local monopolies to develop more readily) as well but it better emulates natural models for decentralized systems.
It might also be better to use a hybrid approach based on the type of data involved:
1. Use a secure DHT (distributed hash table) to store data that isn't necessarily transactional (such as individual ratings that could be aggregated via an unstructured query).
2. Use a local block chain to synchronize shared resources (such as driver availability).
Yet another option: re-design bitcoin in such a way that these problems can be addressed and then convince miners to adopt that since it will in the long run result in increased fees for them because of a larger number of 'riders' on the transactions. This could offset the loss of mined coins and will effectively allow bitcoin a smoother transition from the 'mining' to the 'transaction' stage, it adds sufficient value to the blockchain that it might even replace the mined coin reward completely or surpass it before that reward goes to '0'.
You've pointed out why it can't be perfect. You haven't proven that it can't work.
Perfect is the enemy of good. It doesn't have to be perfect. I was going to say it just has to be better than our current system. But it doesn't. It just has to be legal. Maybe it's better, maybe it's worse. But we're allowed to give it a try (generally speaking -- maybe not in California, but possibly in another state that doesn't have the same rules).
If the flaws you point out occur often enough, then people will stop using it and the experiment will fail.
Who is "you"? Someone, somewhere would be creating a system that verifies unique identities, aggregates ratings, etc. Even if the logic is peer-to-peer, the system requires an extremely robust engineering infrastructure to keep it going, and the people that build that thing take on all the issues Uber is dealing with, but without real control over the system.
Or to put it differently, it's not a coincidence that all big peer-to-peer systems are anchored in weird spots around the world. In any major country the government will hunt down the keepers of the system and hold them accountable for the content.
So, to answer your question directly, you're missing a whole lot.
So there goes your lengthy argument.
Seems they use the bitcoin block chain heavily as the basis for trust and security. Both of their "proof of burn" and "proof of timelock" techniques require each user to have a complete copy of the latest block chain (currently >20GB) to independently verify global trust.
I mention a few other pitfalls with this approach in another comment [2].
1) Write a script to answer requests without ever intending to pick up.
2) Get out of the car, don't transfer the other half.
3) Sign up as a driver, and wait until you find an attractive/rich fare. Lock doors and do what you will.
Deregulation is not the answer for everything. Uber/Lyft works precisely because they are very well regulated to stop the cases I outline above, and more.
#3 can be avoided based on reputation previously gained. Maybe some sort of signup payment with a trusted vetting authority.
It's worked remarkably well for the past 5+ years and right now, there are almost 500 rides available for today.
* zimride.com
* erideshare.com
And my friend made https://github.com/thedjpetersen/ridezap_os
And I've seen countless school projects trying to address ride-sharing.
I don't think it will ever catch on.
What do you see as the main problems?
As a driver, I got as many as 10 viable requests per seat regardless of my ride schedule. I saw a lot of empty seats in other SF-LA rides so I was confused at the disparity...until one ride, a college-aged woman that bought a seat showed up with her mother. Both of them expressed visible relief at the fact that I, a woman, was driving, and with two adults that were obviously my parents in the back seat just like my blurb said. They really were just going to walk away if anything was different, and they didn't even consider male drivers.
It clicked in my head that most messages were from women that must have felt safer riding with another woman. I naïvely assumed all the happy riders were just happy about a fast 5-6 hour ride with fresh fruit and snacks from my parents.
tl;dr I think it's about intimacy. Even for an extroverted culture, plenty of people didn't use Zimride and similar even if they knew about it. Sharing 1-6 seats (most private cars) is way more intimate than 6-10 (airport shuttle-types) or a bus/train and is typically not backed by a company with a professional driver. Not sure that there will ever be a solution that provides enough trust and support to get over that problem before we get better mass transit and self-driving cars.
- bumming a ride
- hitchhiking
- car jacking
- kidnapping