How to Decentralize Uber
It has been an oft-cited example that Ethereum can be used to create a “decentralized Uber,” and there have been several (as-yet unsuccessful) attempts to do just that. But what does creating a decentralized Uber actually entail? In this post, I propose that a) Ethereum is overkill for the task at hand, and b) decentralized Uber is not as sexy as it sounds, and may or may not actually make sense in the real world.
What Uber Is Today
Uber is a business that bundles several services together to create a seamless transportation application:
- Technology development. Uber employs engineers and designers to make sure that all of Uber’s technology works to their standards, including server- and client-side applications for drivers and passengers. Uber also does R&D to test new business models, new app features, and new products.
- Order matchmaking. When people press the button on their Uber app to catch a cab, their GPS location is broadcast to Uber’s servers where the order is algorithmically matched with a driver whose own Uber app is also broadcasting their GPS location to Uber’s servers. Once the order is matched and the driver accepts the order, the driver is told where the passenger is located. The passenger can also see where the driver’s car is at and follow their movement to the passenger’s location. Both are provided a communication link to each other via a proxy phone number so they can resolve any issues while the driver is en route to pick up the passenger.
- Payments. Once the ride is over, credit/debit card payments are processed through the Uber application using a third-party payment processor called Braintree, a subsidiary of PayPal.
- Insurance. While drivers are required to carry their own valid insurance with minimum coverage amounts, Uber also provides an umbrella insurance policy that covers any gaps while passengers are riding in the vehicle. In some states, companies like Uber and drivers that use their network are mandated by law to carry an insurance policy that meets certain minimum coverage levels.
- Quality control. Uber checks to make sure drivers have a valid driver’s license, runs background checks to make sure drivers do not have a violent criminal history or a poor driving record, verify that drivers have valid insurance with enough coverage, and monitor both driver and passenger ratings to ensure that quality standards are being met by members of Uber’s network.
- Customer service. If the driver or passenger has a serious problem with the transaction, they can escalate the issue to Uber customer service for resolution. Customer service is also responsible for following up if the driver or passenger reports a forgotten item in the vehicle.
- Ancillary benefits and services. In addition to all the core services mentioned, Uber also uses its scale and reach to negotiate bulk discounts on many ancillary services for drivers such as healthcare, automotive maintenance, cell phone plans, and other products and services. Uber helps drivers obtain vehicle financing so that they can acquire a car to drive for Uber, and also lobbies governments to enact policies that are favorable for Uber (and usually, by extension, drivers and passengers) or oppose policies that are not favorable.
What Decentralized Uber Is Not
Decentralized Uber is not everyone broadcasting their location onto a blockchain and getting matched up by algorithmic oracles based on location proximity and bidding on the best price for a ride.
- Putting people’s current location and destination on a public blockchain is bad for privacy and personal security. People already get upset when they’re faced with the realization that Uber can track all of its users in real time.
- Putting people’s current location and destination and bids for fares on a public blockchain does not scale well and will be really expensive.
- Ridesharing is an inherently local service, so orders do not need to be broadcast to the whole world.
- Bidding for fares is a concept tried by the failed ridesharing startup Sidecar and has proven to add too much friction to the process. It is also an inherently different model than the intentional simplicity of Uber’s “press one button to hail a cab” model.
In short, Ethereum is not needed to build a decentralized Uber because most user interactions in a decentralized Uber app would happen off-chain, and Bitcoin supports all the on-chain interactions needed today.
What Decentralized Uber Could Be
Decentralized Uber — let’s call it “Doober” — is an unbundled Uber, with the possibility for redundancy in some areas to prevent there from being a central point of control or failure. Different companies can each be used for app development, background checks, GPS monitoring, insurance, matchmaking, payments, customer service, and additional benefits and services, and then aggregated together with the Doober app. These services could be re-bundled where it makes economic sense to do so, though it is possible many parts of the system will remain decentralized for economic or practical reasons.
The blockchain is indeed a key component of the Doober application, but not in the way that has been previously envisioned. Doober uses the blockchain only for identity and payments, delegating the task of order matchmaking to a network of private servers called Matchmaker servers. Drivers and passengers can then choose which servers they trust with their location data.
Blockstack is a key-value store database that uses the blockchain as a decentralized mechanism for determining the order of database updates. Think of it like a global file directory with a trusted root in the blockchain e.g. alice.id/zonefile/apps/gps/link or alice.id/zonefile/apps/reputation. Blockstack is the glue that binds all of our unbundled services together in a decentralized way where the user remains in control.
Blockstack would be used to register a unique identity on the blockchain — called a “blockchain ID” — and link that identity to: public keys for message authentication and encryption; reputation ratings from other drivers and passengers; official endorsements for statements like “I have a valid driver’s license,” “I have valid insurance with this much coverage,” “I do not have a violent criminal history,” etc; and a link to a GPS API endpoint — all the components needed for a Decentralized Uber-like system.
How Decentralized Uber Could Work
- Register a blockchain ID like “alice.id” then link the blockchain ID to the Doober application.
- Link a public key, called an “ID Key,” to the blockchain ID and use the corresponding private key to sign and decrypt messages linked to the blockchain ID. This is how messages from the blockchain ID owner are authenticated. The ID key will go into Blockstack like alice.id/zonefile/id-key-fingerprint/public-key.
- Have an identity verification service sign tokens indicating that the person who controls the blockchain ID has provided proof of a valid driver’s license, insurance with adequate coverage, and no history of violent behavior or car accidents. Link these tokens to the blockchain ID. These tokens will go into Blockstack like alice.id/zonefile/apps/endorsements.
- Register for a unique GPS API endpoint service with the blockchain ID and link the unique GPS API endpoint to the blockchain ID. This endpoint will go into Blockstack like alice.id/zonefile/apps/gps/endpoint-url.
- Register an account with a Matchmaker server. The account will be linked to the blockchain ID and is authenticated with the ID Key. Each Matchmaker can have different policies regarding driver and passenger requirements e.g. background checks, insurance, minimum reputation ratings, etc. Drivers and passengers can register with multiple Matchmaker servers, and servers could federate for redundancy and scale. Users will give permission to each registered Matchmaker to access the user’s GPS location only when the Doober app is on and waiting to give or receive a ride.
- Passengers can broadcast orders to multiple servers at the same time. If an order is matched on multiple servers, then the customer can either manually choose which order they want to commit to, or they can set automated policies to choose for them. Drivers will then get pinged by the Matchmaker server(s) when they get a ride request, and can accept or deny the request.
- Payments can take place on-chain or (more likely) using a Layer 2 system like the Lightning Network. The Matchmaker or other pre-determined arbitrator could be a signatory on a multi-sig transaction between the driver and passenger to prevent either from getting ripped off. Of course, they could also use any other agreed upon payment method.
- Issues are resolved either by insurance companies or Matchmaker customer service (or both, or some other third party — this can all be negotiated manually or automatically beforehand via the Doober app). Matchmaker servers can broker reputation exchanges and keep track of the complete reputation history to ensure that quality standards are met. Drivers and passengers can link their reputation history to their blockchain ID so that it is easily portable. If the reputation rating of a driver or passenger falls below a pre-determined threshold, the Matchmaker can suspend or delete their account. Matchmaker servers can gossip the reputation ratings of blockchain IDs with other Matchmaker servers to help prevent hit-and-run/exit scam scenarios.
As you can see, there are quite a few steps involved, but really not that much more than is involved with signing up for Uber today. Whether decentralizing Uber like this is worth the extra friction for customers or actually solves any real problems is up for debate.
I think there’s value in giving people more choice about who they share their data with, and breaking people out of silos and proprietary networks gives them more leverage to control their online relationships. The fact that there can be redundancy between Matchmaker servers via federation could make the Doober network more resilient against censorship in jurisdictions that do not have a favorable view of companies like Uber. Then the targets of regulators will have to be drivers and passengers instead of big companies like Uber, the same way end-users of BitTorrent are the target of copyright enforcement instead of BitTorrent Inc. Is this is a good thing or a bad thing? Maybe time will tell.
Anyways, that’s how I would decentralize Uber.
Originally posted at lightco.in.