I was encouraged to open a discussion about my didplcbft project here. I figure it is indeed a bit better than trying to discuss this 300 characters at a time on a mostly one-on-one basis ![]()
didplcbft is an experimental PLC implementation. It is built on top of CometBFT: uses BFT consensus to decentralize the hosting and maintenance of did:plc credentials. I would recommend that you read the README that is on the project in Tangled so I donât have to repeat myself too much here.
didplcbft uses blockchain technology, but it purposefully avoids building on top of any existing cryptocurrency network, or being a cryptocurrency itself. This limits the options for how to implement certain aspects and prevent certain types of attacks, but it should avoid many regulatory concerns. This is a positive in my book: I am not a lawyer but I am a software engineer, so I definitely can deal with one domain better than the other. This also immediately distinguishes it from ideas like did:fid, which intentionally pull in cryptocurrency. Finally, not bringing in cryptocurrency should outright avoid the ethical/emotional/legal problems many people have with it. The emotional problems people have with blockchain-sans-cryptocurrency are enough of a hurdle. ![]()
I think did:web does not present a complete alternative to did:plc. I think this is sufficiently explained in the project README, but the gist of it is: did:web (in its current form at least) inherently relies on DNS. So the identities are, at best, at the mercy of some TLD authority, and at worst, if one doesnât want to pay for a domain, delegated to a subdomain and thus at the mercy of some domain owner.
DNS is often the subject of court decisions regarding censorship, even in healthy democracies (because of blocking piracy websites and unregulated gambling websites, just to name some examples) and having AT Protocol be vulnerable to these sorts of decisions is, in my opinion, not great. I donât want to stop being able to resolve the social media identity of some gambling website just because it is disallowed in my country, for example (and in such healthy democracies at least, that was probably not the goal of the court when they made that decision).
As to why did:plc needs to be decentralized, thatâs probably one of the most debatable aspects, and I present some arguments in the readme. At a limit, I would say it is a matter of consistency: looks like everything in ATProto can be decentralized and replicated to some degree, and I donât think the PLC should stick out like a sore thumb forever.
My approach for this project has been, and will probably continue to be for the time being, an âimplementation-firstâ one. Sure, I am doing some research before writing code, but I definitely want to have a functional proof of concept first and foremost, perhaps even one that can be used in certain production scenarios, before overly focusing on theoreticals and politics. I am deciding to build it in the open as I usually do with my most serious side projects, but everyone should be mindful that
- Everything Iâve built so far is still very much in flux and unproven, and I am open to feedback and suggestions.
- At the same time, I am largely building this because I found it a fun thing to do, and there is a limit to how far I will âbendâ my ideas and implementation; if youâre not happy about this, the Apache License 2.0 allows forking
In fact, it is not completely unlikely that I will lose the motivation to continue working on this, especially if the interest others are having in this project wanes, but if that were to happen Iâd definitely be happy if others took the torch from me.