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.

  1. 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.
  2. Putting people’s current location and destination and bids for fares on a public blockchain does not scale well and will be really expensive.
  3. Ridesharing is an inherently local service, so orders do not need to be broadcast to the whole world.
  4. 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. or 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

  1. Register a blockchain ID like “” then link the blockchain ID to the Doober application.
  2. 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
  3. 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
  4. 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
  5. 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.
  6. 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.
  7. 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.
  8. 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.

Email is probably the most popular decentralized messaging protocol. Add yourself to my email contacts if you would like to stay in touch!

From Platforms to Protocols

Last night I attended a great Sharers of San Francisco meetup organized by Chelsea Rustrum, an author and sharing economy consultant based here in the city. The event featured two presentations, one by Chelsea and another by Felix Weth, founder of the Fairmondo cooperative. The topic of this meetup was value creation and distribution, exploring ways that people can take part in the monetary wealth generated by the platforms they participate in. There were echoes of the recent Platform Cooperativism conference throughout the event. People are definitely interested in an alternative to the “Death Star” platform model that is taking up increasingly large parts of the economy.

At the meetup there was a lot of interest in the coop model of Fairmondo, with some attendees mentioning alternative methods of distributing monetary value back to platform members using automated smart contracts e.g. blockchains. A common desire that was expressed was for members to have a say in the direction of the platform, and for the platform itself to express the values of its members. It was pointed out that the challenges of scaling a cooperative with this model are not unlike the challenges of scaling democracy itself. And if the American experiment has shown us anything, it is that democracy does not scale well. How to reconcile these desires for both democratic participation and scale to compete with the likes of the platform Death Stars?

I believe that there is a third option which breaks the “capital vs democracy” dichotomy of corporate and cooperative platforms, and that is open protocols. An open protocol is a set of rules enforced by code which anyone can implement and integrate into their application. Open protocols can also be forked or upgraded at-will if they no longer serve the interests of their users. Protocols govern the interactions between users without the need for third-party enforcement; protocols are self-enforcing and are usually governed by meritocratic rather than democratic processes i.e. changes are made based on the technical merit of a proposal rather than popular support alone (though technical merit can lead to popular support). The requirement for technical merit when deciding how to change a protocol can make protocols less susceptible to the corruption present in corporate settings and more resilient against the challenges with democracy present in cooperative settings.

The primary benefit of open protocols over both corporations and cooperatives is that an open protocol is owned by no one. There is a creator of the protocol who sets the initial parameters, but users are completely free to adjust the parameters to their own liking after the protocol is released. In the case of protocols which have strong network effects, the process for changing a protocol can be difficult once adoption reaches a certain threshold, since coordination between all necessary parties can be difficult without a central coordinating authority. Open protocols thus tend towards simplicity rather than complexity, making it more likely that more people will use the protocol since there are less details to debate over. Any advanced features that users desire are built on top of the protocol instead. Consider the history of TCP/IP vs OSI; TCP/IP, despite being a technically inferior protocol, won the network effect because it was “good enough” for most people who wanted to join the Internet.

Within the past decade or so, many open protocols have been invented that can be used to assemble platforms that can replace the corporate Death Stars. Here are a few of my favorites, with additional examples that are still in development:

Bitcoin – a protocol that can be used for transferring value, alternative to money transfer platforms like PayPal (see also: Ethereum, ILP)

Bitmarkets – protocol for trading goods and services, alternative to marketplace platforms like Amazon (see also: OpenBazaar, DropZone)

IPFS – protocol for file storage, alternative to cloud storage platforms like S3 (see also: StorJ, Sia, SAFE network, Syncthing)

Ripple – protocol for creating mutual credit networks, alternative to lending platforms like Prosper

Tent – protocol for content sharing, alternative to social media platforms like Facebook (see also: DattTrsst)

WebRTC – protocol for real time communication, alternative to video messengers like Skype (see also: Tox)

XMPP – protocol for asynchronous instant messaging, alternative to communication platforms like Slack (see also: MatrixTelehash)

Is there a protocol that you like which you think can help break the proprietary network effects of the corporate Death Star platforms? Leave a comment below and let me know!

Email is probably the most popular decentralized messaging protocol. Add yourself to my email contacts if you would like to stay in touch!