https://github.com/publiusfederalist/zooko Skip to content Sign up * Why GitHub? + Features + Mobile + Actions + Codespaces + Packages + Security + Code review + Issues + Integrations + GitHub Sponsors + Customer stories * Team * Enterprise * Explore + Explore GitHub + Learn and contribute + Topics + Collections + Trending + Learning Lab + Open source guides + Connect with others + The ReadME Project + Events + Community forum + GitHub Education + GitHub Stars program * Marketplace * Pricing + Plans + Compare plans + Contact Sales + Education [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} publiusfederalist / zooko Public * Notifications * Fork 4 * Star 60 * Uncensorable, immutable microblogging platform that is completely decentralized and does not rely on any centralized systems. 60 stars 4 forks Star Notifications * Code * Issues 0 * Pull requests 0 * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Wiki * Security * Insights master Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 1 branch 0 tags Code Latest commit @publiusfederalist publiusfederalist Update README.md ... 34e2451 Jan 12, 2022 Update README.md 34e2451 Git stats * 10 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time keys zooko Jan 9, 2022 lib Made it aware of zooko-msg Jan 11, 2022 .gitignore zooko Jan 9, 2022 README.md Update README.md Jan 12, 2022 zooko.png Adding zooko.png Jan 9, 2022 zpost Made it aware of zooko-msg Jan 11, 2022 zpull zooko Jan 9, 2022 zread zooko Jan 9, 2022 View code [ ] Zooko Truly decentralized, immutable and uncensorable microblogging What is Zooko? How it Works UPDATE Limitations Writing a new post Proof of Concept Why Handshake? How to Install Commands zpull zread zpost License and Copyright README.md Zooko Truly decentralized, immutable and uncensorable microblogging Zooko is a working-example, proof-of-concept proving that you can have a decentralized, immutable, and uncensorable microblog platform (like "twitter") in a truly decentralized manner without needing any 3rd party APIs and simply relying on cryptography. What is Zooko? Zooko uses the Handshake blockchain which allows you to fully own and control a name. While many use cases exist for Handshake, including federalist, DNS, and decentralized identity, Handshake is a versatile blockchain that also allows you to build any number of applications on top of it, without the need of smart contracts. Zooko was named after Zooko Wilcox O'Hearn, one of the few remaining, original, Cypherpunks. We're still writing code. Zooko How it Works Handshake is an incredibly secure blockchain. While many other chains are easy to abuse, Handshake is not one of them. That being said, there was one outlet that we could take advantage of, and that is the UPDATE covenant which allows for a DNS resource record with several types, GLUE, NS, among others, and most importantly, TXT. This is what we take advantage of. UPDATE Limitations You can only call 1 UPDATE per block. This means that with our implementation, you can only Zooko once per block. Additionally, TXT has a limit. We are prepending our TXT with "zooko:" so the limit is 249 characters (255 less 6). That's 9 more than the leading microblog ! Writing a new post Zooko will copy your DNS resource records over everytime you post, while replacing the last Zooko. Since TXT records are ignored when a NS record is present, this will not affect anything as we are using on-chain TXT records as opposed to authoritative server served TXT records which are preferred when an NS is present. Proof of Concept This is a quick, and simple, proof of concept. If someone was to build this into a full blown microblogging platform, a lot more "protocol" would likely need to be developed to integrate different kinds of interactions as well as 'compound interactions' using multiple strings in TXT records, which could allow for more than 1 action per block only limited by resource record max size limit. One could also hook this into the websocket to watch both the mempool and, as well, for new blocks. Finally, of course, someone could utilize web technologies and build a beautiful interface for this. Why Handshake? Handshake has been gaining incredible traction, including from institutional bodies like Namecheap, the second biggest DNS registrar on the Internet. This traction means that Handshake is winning favor with the community and that the Handshake blockchain has secured its space in the cyberworld. Some questions arise as to whether or not Zooko will bloat the blockchain. With the UPDATE limitation to one (1) per block, I don't think it will. However, it was important to use Handshake because doing so anywhere else would cause this to be blockable. By leveraging Handshake, the entire blockchain would have to be blocked in order to block Zooko. This is highly unlikely because Handshake is too popular. This is why I chose to build this on Handshake. How to Install 1. Clone git clone https://github.com/publiusfederalist/zooko 2. Get prepared cd zooko npm install hs-client hsd prepend readline stream 3. Setup wallet and node keys in the keys folder. 4. Now, just try it! Commands zpull Updates the latest posts. ./zpull zread Reads the posts. ./zread ./zread ./zread zpost Posts a new microblog. ./zpost "" This will prompt you for your password (the password will not echo back to the terminal). License and Copyright (C) 2022 Publius Federalist All Rights Reserved. MIT LICENSED About Uncensorable, immutable microblogging platform that is completely decentralized and does not rely on any centralized systems. Resources Readme Stars 60 stars Watchers 2 watching Forks 4 forks Releases No releases published Packages 0 No packages published Languages * JavaScript 100.0% * (c) 2022 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.