Centralized apps are bad. Everyone knows this: if you want your blockchain idea to sound good, you just say that's its decentralizing something. Money, funding, love...you name it, it should be decentralized!
Well, a key component of our initial Fiddy (Friend in Debt) implementation is centralized, and we think that's a good thing.
But is that true? What if some aspects of decentralization that are useful, but others are useless or actively harmful?
What Blockchains Are Good for
It's important to understand what blockchains, in their current form, are good for, and what they don't do well.
Blockchains are awesome at taking processes that required bureaucracy to guarantee storage and trust, and offloading those while keeping the same guarantees. They also excel at simplifying processes that require lots of human mental effort to track or monitor.
Fiddy (and Credit Protocol) needs both of those features. People either offload tracking of money and debts to banks (bureaucracy guaranteeing storage and trust), the cloud (mental effort), or pen-and-paper (mental effort). By both recording debts on the blockchain and requiring both parties to confirm the debt, Fiddy takes advantage of the best features of the blockchain.
However, large public blockchains suck at speed and cost. And if we want people to use Fiddy, we need speed and low cost, otherwise we'll just have an ideologically pure app that no one gives a shit about.
The solution we've chosen is an architecture that makes certain decentralized guarantees for Fiddy, and then puts the rest of the information in centralized systems.
Guarantees Fiddy Makes
- All debts are recorded on the blockchain
- All Eth addresses that created those debts are recorded on the blockchain
- Memos saying what the debt is for are recorded on the blockchain
- Both users must have cryptographically signed in order for the debt to exist
- If everyone from BlockMason died in a plane crash tomorrow (or a freak gardening accident, or any type of disastrous event, really), users could recreate all data from Fiddy and keep going as if we had never existed
How Fiddy Uses Centralization
Fiddy centralizes all operations that are short-term, and don't form part of the permanent debt record. The main portions of that are:
- Friend requests between users
- Pending debts and friendships
- Holding debts that are signed by one party until the other party signs or rejects the debt
Notice that all of these operations are essentially temporary, and also ones that users don't want or need to pay for. By centralizing them, we create a much smoother user experience, while preserving all the key features of decentralized, trustless debt recording.
Most dapps will have this pattern: a high-value, decentralized core, with lots of centralized infrastructure around it to make it accessible and clean for end-users. It's important to understand exactly what the key value propositions of your dapp are: the design will flow directly from that understanding and analysis.
If you like thinking about the boundaries between centralized and decentralized systems, you should join our Telegram and yell about things you want to see in future blog posts. I'll probably make fun of you for yelling, and then write about those things.