If you are willing to implement Mainline DHT from scratch, go for it. But if you are OK with using an off the shelf implementation here is how to implement Pubky from scratch:

1. Encode a DNS reply packet containing the endpoints you want, for example www. A 3600 IN vitorpamplona. com

2. publish that packet using Mainline PUT mutable rpc method using an ed25519 keypair.

3.on a different machine, make a GET query with Mainline for the Public key from step 2

4. once you resolve the encoded packet parse it and find www.

congratulations, now you made https://www. into a proper url, now either implement HTTP from scratch, or use your favorite HTTP library to fetch the web page.

there is of course more to it like work on a home server that stores your data for you and republishs your packets on Mainline periodically and offer a simple but open api, etc.

but the main thing here is what I described above, if you don't think that is valuable, then that is fair.

If you don't want to start from scratch, then you can do what I just described using this GUI https://app.pkarr.org , or if you can tolerate rust, you can go to https://pkarr.org where you can read more about the system, but also use the examples in the pkarr directory to publish and resolve packets and get a feeling for the speed and reliability.

so, does a censorship resistant DNS that can fade in the background and be taken for granted by web developers and make all the rest of web technologies usable in a more sovereign way and offer a credible exit from cloud hosts, does any of that sound interesting?

happy to answer more questions.

Reply to this note

Please Login to reply.

Discussion

This is great. I'd like to see it expanded to include everything I need to do to get a fully functional code out. No need to recode http, or mainline dht but any new protocol that pitches decentralization MUST offer a way to not use any of its own code if it wants to win. And implementers must have enough details to be interoperable with one another.

Pubky core is like Nip01, it is like DNS and WebDav, and it is more or less what I just described.

Now you can build on top of such stack, I am sure you could come up with 100s of micro apps ideas. Others will too. Your data (the public parts) will be available to them and theirs to you. If you also want every developer to interop with others, get them in a room I guess. Pubky core is not any more responsible for that than the spec of Websocket is responsible for Nostr clients understanding each other.

There is no magic for interoperability, and I don't personally consider it my mission, I want censorship resistant DNS, and a data store with an open API. Higher level abstractions will churn like hell, but at least the data will be there for anyone motivated enough to reverse engineer it and squeeze some value from it.

I am never going to build on top of a stack that I cannot understand to its core. And never going to build in a "decentralized" stack that is fully centralized in just one code base.

I am not saying that apps that use pubky must get together. I am saying that multiple (hundreds) implementers of the protocol behind pubky need to exist.

Otherwise, this is not decentralized at all.

This is no censorship resistance if we are all using the same code.

> Now you can build on top of such stack, I am sure you could come up with 100s of micro apps ideas

Will each app just put their data in a subdirectory of a user? If so, that reminds me a lot of GunDB! nostr:npub1g53mukxnjkcmr94fhryzkqutdz2ukq4ks0gvy5af25rgmwsl4ngq43drvk

depends on what they are doing and what paths are users giving them access to, but there is no enforcement of sandboxing like in say IOS or something.

Is there a concept of giving access only to specific files / directories then?

I'd like to setup my own pkarr-type service. Do I need pkdns or just pkarr or is more required. If you can give me a high-level checklist I'll try and set it up and submit PRs as I go.