Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Zooko's Triangle (wikipedia.org)
79 points by mattwilsonn888 on Aug 18, 2022 | hide | past | favorite | 40 comments


Zooko's Triangle was a useful lens, but I think of it has having long been solved (or, refuted) by many blockchain projects.


IMO, blockchain human-readable naming generally creates a single coherent namespace and are thus "centralized" in terms of Zooko's Triangle. The singular authority is vested in shared consensus, but is singular authority nonetheless.

The real answer to Zooko's Triangle is to do human-meaningful name lookups as little as possible. For instance, in an ideal world I should be able to run a nameserver that stuffs all of ICANN's TLD pollution under an .icann label, such that I could type "blog.google.icann" to access what is currently called "blog.google". References to other resources would be specified with decentralized non-human-readable (ie cryptographic) identifiers, and outgoing links intended for human consumption would also have a relative hint so that my browser could turn the cryptographic identifier back into a human readable identifier in my own namespace.


I guess I'm not adding much to your comment, but I just wanted to remark that this exact thing has been bugging me for ages: people talk about these blockchain projects as being "decentralized" simply because _execution of the algorithm_ is distributed across lots of (mutually distrusting) nodes. This perspective confuses me, because it doesn't seem to be a particularly meaningful distinction when there is still one consensus truth in the network.

In the case of a naming system, as you point out, that means there is still one finite, scarce namespace in the system, just as there is in DNS.

More generally, there is still a central authority pushing out code, and so unless you want to hard-fork, what does the "decentralization" in a blockchain actually buy you? Does it do anything more for you in practical terms than protecting you from a central server suffering an outage?

I spent some time a while back coming up with ideas for an alternative to blockchains that would pursue many of the same goals, starting from first principles ("what the heck even _is_ money?"). I have no idea whether any of my ideas would have actually worked in practice, but they at least ticked the "decentralized" box in a way that I found a lot more meaningful than merely "decentralized execution of a centrally-defined algorithm to determine a single global consensus state". (I stopped working on them not because they didn't show promise, but because I became convinced that they would be a net negative for the world if they were successful; I lost the desire to find a working design.)


I thought about similar for a long while, pre-Bitcoin even. I think it's impossible to do money as such. Bits don't have an intrinsic worth, and so value is always in relation to another party. A key property of money is fungibility, thus network effects from many people using the same definition of value. Thus, central authorities, whether those authorities are controlled by fickle individuals, natural language bureaucracies (traditional companies), or formal language programmatic consensus (blockchain).

I think about the only decentralized improvement one can do is software that creates credit lines denominated in an existing currency, between mutually trusting parties. And then attempt to scale that up (ala Hawala), with technical means to keep the slightly diminishing fungibility from being an issue (one USD owed to you by the Treasury is worth slightly more than one USD owed to you by your friend A (owed to him by B, and so-on), even if you trust A with your life).

However, there are many areas where we can adopt decentralized functionality (which actually means not having unnecessary centralized functionality), such as my above naming example. If we want decentralization, it's just ridiculous for my browser to be making hundreds of centralized name lookups to render a single page. And I've seen too many blockchain projects where they're actually pushing a solution that is more centralized than the existing ones.


One reason why we want decentralization is censorship resistance, meaning nobody can be censored.

I'll use bitcoin as an example. If you are using visa/mastercard, they can censor you. The government can order them to censor you. Bitcoin mitigates this problem. If a particular miner refuses your transaction, you have plenty of other miners to choose from.


You might find this (very) pre-blockchain page on smart contracts interesting: http://erights.org/elib/capability/ode/ode-bearer.html


> More generally, there is still a central authority pushing out code

Not necessarily, it's quite common for forks to compete on a single ledger, with features activated when the majority of miners elect to run the fork which supports them.


You might want to have a look at the GNS (GNU Name System): https://www.gnunet.org/en/gns.html https://datatracker.ietf.org/doc/id/draft-schanzen-gns-01.ht... To my understanding, this enables what you are looking for.


This has been noticed quickly. Aaron Swartz wrote "Squaring the Triangle" in 2011: http://www.aaronsw.com/weblog/squarezooko.


I concur, for example, ENS domains are memorable, secure and the whole contract is decentralized. And you can send Vitalik eth at vitalik.eth


Woe betide other Vitaliks!


?


It's nice that you can send vitalik eth to vitalik.eth, but what about the 10000 other vitaliks out there? Are they supposed to be vitalik_4591.eth, the_real_vitalik.eth, etc?


they can pick a different name, i don't really understand what solution you are advocating. that no one can be vitalik because there are more than one?


I'm actually not advocating for a solution, because I don't know of one. My point was only that OPs statement of "ENS domains are memorable" is only true for early adopters. Later adopters won't have that luxury. The same thing played out with the .com domain, which is why so many companies use non-.com domains these days, because it is not straightforward to get a memorable domain in .com.


Proof of work gets progressively centralized by industrial economies of scale. Proof of stake will lead to a plutocracy controlling the chain.


Not all PoW mining were created equal, monero for instance uses a pow algorithm that was designed to be resistant to ASIC mining.


All proof of work is just a proxy to proof of capital. As long as having more money and hardware gets you more mined "stuff", then all the power will go to those who start with more resources. "One <thing you can buy a million of>, one vote" just means you can buy more votes.


for xmr it's 1 cpu = 1 vote, that's the lowest barrier I can imagine. furthermore owning more capital is not really a big deal since the tokens are fungible, thus no censorship of lower net worth individuals is possible on the protocol level


As long as the protocols are controlled by a majority of miners choosing the chain, being able to buy votes is a problem. Devaluing my "owned" currency by forking a new chain with your preferred outcomes, or refusing to implement useful features because it would make it harder for your miners to make a profit are both things detrimental to the ecosystem as a whole and me as an individual and are impossible to prevent as long as you can just buy more votes. More capital means more control over the network, period. This applies to any blockchain that uses miner consensus to decide anything, and also applies to any blockchain that is forkable at all.


you are missing a crucial factor in your viewpoint, owning the majority of any such assets is not even desirable crossing a certain threshold, since it then becomes a liability - who are you going to sell those assets to when distrusts increases due to certain actions? any distrust will fundamentally be detrimental to one's own self interest due to value destruction.

furthermore, I heavily doubt it's even a realistic argument that a single high net worth individual could ever compete with a globally sized competition where it's easy to vote via: 1 cpu = 1 vote mechanism. it would be much easier with the traditional asics mining because the high net worth individual could have the money and means to buy up all the asics or produce them himself, but with the ease of availability of cpus, I heavily doubt that it's the same ball game.


Human meaningful names aren't great. They basically require that names have a cost. Either DNS or blockchain, and either way you may have trouble on isolated networks.

I think a better solution is to just leave meaningful names to centralized DNS. It's a perfect fit. Amazon is centralized already.

Private individuals don't commonly need them. Look at phone numbers. We are fine with local assigned names for the most part.

What we need is a way to create a URL that embeds its SSL fingerprint and is independent of any authority. Self hosted stuff can use that because there's generally a safe bootstrap method to communicate that name.

And even with unsafe bootstrapping like non unique search, you are still not any worse off than you are with Facebook using the same method. Probably better, in fact, if you are using local-only nonunique search over Bluetooth instead of something anyone anywhere can fake.

Meaningful names can even give a false sense of security and lead to typosquatting. The advantage of not needing a blockchain or consensus seems bigger than the advantage of names.


Human meaningful names are useful when used in configuration files and the like, because otherwise you have no way to recognize what host is being referenced, and to easily communicate with others about it. I would maybe prefer the term “human-recognizable names” for that reason.


In a local context they're great, but it seems like Zooko only applies to global DNSlike systems.


There's also a nice short paper [0] sent to Rebooting the Web of Trust by Christine Lemmer-Webber, Mark S. Miller et al. The Spritely Institute [1] is elaborating on this [2]

[0] https://github.com/cwebber/rebooting-the-web-of-trust-spring...

[1] https://spritely.institute

[2] https://spritelyproject.org/news/petname-systems.html


Here's another triangle

Human-meaningful: Meaningful and memorable names.

Unique: The referent of a name is unique and immutable.

Intergenerational: The first generation of users can't take up all the good names.


I think the intergenerational aspect is intertwined with the "centralized" aspect if zooko's triangle, because traditionally in DNS you have some central authority (ICANN, IETF, registrar) that is expected to "solve" that somehow by deciding who should be allowed to own certain domains.


IMHO there should be no good or bad names and no choice which do you take. I loved ICQ so much because it didn't require me to invent a nickname nor to struggle spelling it aloud to people from different countries. Just a reasonably short number - that was amazing.


This is another good case for just tossing the whole unique name thing entirely and going with key hashes and freely chosen nonunique names.


What about Facebook's onion domain?

https://facebookcorewwwi.onion/

This seems to be human meaningful, secure, and decentralized.

https://m.facebook.com/nt/screen/?params=%7B%22note_id%22%3A...


It's not actually secure and human meaningful. There are many possible domains at least as legit looking which are not owned by facebook, and so you must either have the machine remember that facebook is facebookcorewwwi.onion and not wwwfacebookcomyz.onion (secure) or trust the first domain that looks legit (human-meaningful).


I'd love to see some insight as to how they were able to generate that domain name. Surely if they can do that (years ago, even), then a well-funded adversary would be able to generate the same now, given enough time.

Maybe it took x thousands of compute years to generate the secret key for `facebokcorewww` - and they didn't care about the last character. But still, let's say you're a government agency with endless resources - how hard would it be to recreate that private key? If a private corp can do it once with finite resources - why can't you?

Was it is just a stroke of luck for those working on it? What are the chances?


They stress tested a compute farm for by brute forcing onion addresses. About 10 per week per CPU started with facebook. corewwwi was their favorite.[1] Onion addresses are longer now.

[1] https://alecmuffett.com/article/15996


Very interesting read. Thank you!


It is not secure by merit of the fact that they were able to brute-force it. The v2 onion domains are weak. the v3 onion domains are much longer.


Also worth noting that v2 domains are phased out now and will no longer work. Facebook's new onion address is facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion, which is not exactly human-meaningful.


I can't believe they managed to grind that one.


Blockchain is an obvious counterexample


But aren't blockchain solutions a form of centralization?

The blockchain itself has a decentralized structure. But when we use it as a basis for our naming scheme it becomes a single point of failure. It isn't possible for some participant in the naming scheme to choose to use a different blockchain which they prefer.


21e8 fixes this




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: