Madhavan Malolan

Posted on Jan 06, 2022Read on Mirror.xyz

Measuring the degree of decentralization

We’ve been pondering upon how to make sure we build a truly decentralized product, community and company. It’s hard. But here I’ll share a mental model to evaluate the degree of decentralization of your system.

Your system is as decentralized as your least decentralized subsystem

But how to measure decentralization?

Balaji S had a great post (circa 2017) to measure Decentralization Retroactively, this post is about measuring Decentralization Proactively.

https://news.earn.com/quantifying-decentralization-e39db233c28e

https://news.earn.com/quantifying-decentralization-e39db233c28e

Counting potential participation (P1)

For each subsystem in your system, count the number of potential participants.

e.g.

  • How many bitcoin miners can exist in the world?
    • Maybe as many computers there are in the world? 1B
  • How many people can run a DB with high API availability?
    • Maybe as many accounts that exist on AWS? 10M
  • How many people can vote on a proposal?
    • Maybe number of people with an internet connection? 2B

Counting potential permissionless participation (P2)

Counting how many of those participants can realistically participate in the subsystem without any human’s permission?

Permission participation comes in various forms

  • Owning an NFT
  • Owning coins
  • Having high computation
  • Having an on-chain reputation
    • e.g. have voted previously on Snapshot
    • This could eventually merge into “Owning an NFT”, but right now these seem to be different.

e.g.

  • How many people can run a bitcoin node with > 4GH/s?
  • How many people can run your instance of DB with high availability? 1 (only you)
  • How many people can vote on proposal (and have access to full information)? Varies

Calculating a score (D)

D = P2/P1

Huh not too hard, that.

Another measure is

D’ = Rate of change of D over time

D’ for example has been rapidly changing for bitcoin miners. Number of ASICs has been increasing steadily in the world. When D’ is high, having a low D is kind of OK. Especially because in a lot of places in web3, technology is new but fast improving. Or, product is new, but awareness is fast growing to participate.

Some case studies

Database choice

Let’s say you are building a decentralized software. You are now choosing a database.

How many people can run this database from a technical standpoint? Everyone who has an AWS account - maybe?

But realistically they cannot participate in the decentralized world because to run a database that is consistent with the instance you are running, they need your permission. In the sense that you need to add them to your master-slave config or you need to give them read access by adding their credentials on your DB.

So effectively only 1 participant can run this DB without your permission.

So D = 1/10M = 10^-7

Now no matter how beautifully decentralized the rest of your engineering stack is, as long as it uses a centralized Postgres DB, the decentralization score of your software can never be more than a meager 10^-7. That is because the degree of decentralization of a system is equal to the degree of decentralization of the subsystem with the lowest score.

Grants Mechanism

Grants mechanisms are trying to decentralize themselves. But how decentralized are they?

a. Not on-chain grants

Most of the grants dao are ones involving a discourse forum and some form of voting. So everyone really can see and vote on these proposals technically as long as they have internet connection. So that’s 2B people - assuming there is some form of proof of humanity.

But how much of the information & access to asking critical questions is available to anyone. This is usually a “grants committee” that is chosen by the protocol leadership. How many people realistically have access to the information that happen on calls between the grant awardee & the grants committee? Maybe 5 (the people on the committee)? Some processes also have a multisig managed by this team.

D = 5/2B = 2.5*10^-9

No matter how much of your information is published on your blog, no matter how many decentralized tools you use to manage your DAO, your process will always score a meager 2.5*10^-9 or less. Because a system is as decentralized as the most centralized subsystem.

b. On-chain only voting (Nouns Proposals)

Again, the total number of people who can vote on grants stays 2B.

Anyone can submit a proposal on Nouns as long as they own a Noun. And noun owners can vote on these proposals.

The cheapest Noun sold for 20ETH. How many people have earned more than $100,000? Probably about 100M. So technically they all will be able to participate should they care so much about voting on a Noun proposal - without needing permission from the creators of Noun or anyone else.

D = 100M/2B = 0.05

That’s a good score. Now as long as there is no other subsystem in nouns that is more centralized, it will score well.

How to optimize for building a decentralized system?

Keep asking the question : what is the most centralized sub-system in this system?

Frequently missed sub-systems

  • Information asymmetry. Access to information to make decisions is not broadly available even though the processes might seem to be voting based.
  • URLs. Requiring people to use specific URLs to access your app, not allowing them to change it.
    • Unlike Uniswap, where you can access it through uniswap.org or do a swap from etherscan.org and get the exact same job done.
    • Not allowing people to run their own version of your API and point an app to that URL.

So, how decentralized, really, is your system?