Common Pitfalls Seen in Decentralised Data Storage

Sarvvid
5 min readOct 14, 2021

--

A common issue seen with decentralized data storage is the inadvertent erasure of information. This article will discuss the five central points on how to avoid this problem. There are plenty of stories about decentralized systems falling apart due to errors or bad actors, but that doesn't mean that decentralization is inherently flawed - it's a new and often-overlooked approach that can benefit many users if implemented correctly into a project or system.

Software decentralization is an interesting concept that has recently become more popular, with plenty of tools and frameworks for supporting it. However, there are some common pitfalls that are sometimes seen in projects trying to use decentralized techniques.

The art of decentralized data storage and how it is a future implication

The first thing to understand regarding decentralization is that it's not simply about storage - the act of storing data doesn't make it decentralized; an encrypted message encrypted on one computer can still be decrypted on another computer without trust or central coordination. Storing data on a blockchain is just one method of applying fundamental fundamental principles of computing - cryptography, network connectivity and distributed software architecture - so the question "should I decentralize?" has to be framed differently before answering "yes".

"Decentralization" has become one of the most overused buzz-words in the tech industry. It seems everyone wants to be "decentralized" - whether they're trying to put their personal data on a blockchain, live stream their lives with an AI webcam, or run a decentralised search engine. For developers and entrepreneurs, decentralization is often just another buzzword that doesn't mean anything - but for anyone that's actually producing something with infrastructure components, it's critical.

This article intends to outline five important points on how to avoid common problems with decentralized systems.

#1: "Decentralization" vs. "Simplicity"

When discussing decentralization, make sure to carefully consider the words you use. The word "decentralized" has very different meanings depending on the context - in one respect, it could mean a simple distributed consensus algorithm like Nakamoto's Bitcoin (which doesn't actually require any additional systems such as blockchain), while in another it could mean a system featuring no delegated authorities and self-awareness (such as blockchain-enabled smart contracts interacting with each other) - and yet another sense, it could mean an autonomous data marketplace that coordinates data via decentralized markets and markets clearinghouses (such as DataBroker DAO).

The word "decentralized" has multiple meanings - and often, we're not even talking about the same thing. Rather than try to re-define the word as another buzzword, it's better to instead simply avoid using it at all - or at least take care to define what it means in the context of your project.

#2: Obscurity

It can be difficult to tell what is and isn't decentralized in a given piece of software without actually looking into the code and talking with the developers who wrote it. However, the problem of obscuring code means that users and creators alike can hide mistakes and flaws in their code and pretend it's better than it is. We've seen this problem with decentralization, especially with cryptography; some developers use the word "decentralized" as a marketing ploy without properly implementing or addressing some of the underlying technical issues.

A good way to verify if your software qualifies as decentralized is to try and rewrite it as a centralized solution (like a dApp). If you find yourself struggling to design an efficient system that doesn't rely on trust or delegated authority, then you're likely looking at a decentralized solution that hasn't been implemented correctly.

#3: The Power of Obscurity

Another way obscurity works against decentralization is the power of metaphor. When projects are solely abstractions or metaphors for something else, there can be an inherent bias in how their users perceive them. As long as the user understands the metaphor, they will be able to implicitly associate it with whatever is at its heart. Take Bitcoin, for example; when you hear about Bitcoin, you probably think of money or money transfers; but when you imagine Bitcoin itself, you're probably thinking of the concept of self-organizing databases.

This is even true when users can't see the code - like in the case of Ethereum where there are no human beings behind it. While most people come to Ethereum by imagining decentralized applications (dApps) in their head, in reality there are no programmers in any physical location developing or maintaining it.

#4: Trustless systems

The goal of every piece of decentralized software should be to enable trustless interactions. This means there must be no ways for users to collude or take advantage of each other (not even unintentionally, like with the ZcashZero bug mentioned in #2 above). It's important to make sure that the interactions performed by software are trustless; this is usually determined by the consensus algorithm used for arriving at a solution. The more secure the algorithm, the more trustworthy it is - and that means it can be trusted.

Most trustless systems do not use distributed consensus algorithms because they are too slow, too hard to compute, or both. However, the future of decentralized computing may soon favor attention-based algorithms designed specifically for distribution (such as Paxos for Bitcoin). The main reason traditional trustless systems don't use distributed consensus algorithms is because there is no way to get them into production for any significant period of time without the complete trust of all parties involved (because there's no single entity or third party that can be trusted to maintain it).

#5: Access Without Authority

One core idea driving many projects is the idea that network connectivity can be used to extend the capabilities of an existing system beyond what was originally envisioned. For example, Internet connectivity can be used to provide game-changing access to people who were previously offline. The Internet was originally envisioned by the military as a way for them to communicate; however, today it's used for far more than that - including making online payments, live streaming video, and launching rockets.

Today's Internet can do all of these things because it doesn't rely on any centralized authority (such as banks or credit card companies); instead, it relies on decentralized systems that anyone can access for free. This has become possible because the Internet does not require any "authority" to maintain - no one is required to maintain its infrastructure or software.

--

--

Sarvvid

Sarvvid is India's first decentralized cloud storage company, provides the most secure storage system for your data. learn more at https://sarvvid-ai.com/