From World Afropedia
Jump to: navigation, search
Zooko's triangle defines the three desirable traits of a network protocol identifier as Human-meaningful,, Decentralized and Secure.

Zooko's triangle is a diagram named after Zooko Wilcox-O'Hearn which sets out a conjecture for any system for giving names to participants in a network protocol. At the vertices of the triangle are three properties that are generally considered desirable for such names:[1]

  • Human-meaningful: The quality of meaningfulness and memorability to the users of the naming system. Domain names and nicknaming are naming systems that are highly memorable.
  • Decentralized: The lack of a centralized authority for determining the meaning of a name. Instead, measures such as a Web of trust are used.
  • Secure: The quality that there is one, unique and specific entity to which the name maps. For instance, domain names are unique because there is just one party able to prove that they are the owner of each domain name.

Of these three properties, Zooko's conjecture states that no single kind of name can achieve more than two. So the edges of the triangles represent the three possible choices for a naming scheme:

  • Decentralized and human-meaningful: This is true of nicknames people choose for themselves.
  • Secure and human-meaningful: This is the property that domain names and URLs aim for.
  • Secure and decentralized: This is a property of OpenPGP public key fingerprints.

Zooko's conjecture was disproved through creating practical systems that exhibit all three properties.


The contribution of Zooko's triangle is that it encouraged systems designers to explore how to attain all three properties.

The original name systems designed featured two out of three properties, following Zooko's triangle:

  • Compromise decentralization: DNSSec offers a secure, human-meaningful naming scheme, but is not decentralized.
  • Compromise human-readability: .onion addresses and bitcoin addresses are secure and decentralized and are not human-meaningful, to most.
  • Compromise security: I2P uses name translation services which are decentralized and provide human-meaningful names, but which relies on trusting third parties. Petname systems demonstrate that a naming system can be built by dynamically translating between different possible kinds of names.[2]

After such systems were explored, Zooko's conjecture was disproved by practically implementing systems that exhibit all three properties. Computer scientist Nick Szabo illustrated that all three properties can be achieved up to the limits of Byzantine fault tolerance.[3]

The internet activist Aaron Swartz described a naming system based on Bitcoin which tries to square Zooko's triangle by employing Bitcoin's distributed blockchain as a proof-of-work to establish consensus of domain name ownership.[4] These systems remain vulnerable to sybil attacks,[5] but are secure under Byzantine assumptions. A few months after the proposal, Namecoin was released which implements the concept.

Following Namecoin, other platforms were developed which defy Zooko's conjecture, such as Twister. Recently, Monero released OpenAlias,[6] a DNS aliasing technology to ensure human-readability whilst keeping the already-existing decentralization and security properties. OpenAlias works with any cryptocurrencies, including Bitcoin, although no OpenAlias-compliant Bitcoin software is known to exist.

See also


  1. Zooko Wilcox-O'Hearn. "Names: Decentralized, Secure, Human-Meaningful: Choose Two". Archived from the original on 20 October 2001.
  2. Mark Steigler, Zooko, An Introduction to Petname Systems, Feb 2005
  3. Nick Szabo, Secure Property Titles, 1998
  4. Aaron Swartz, Squaring the Triangle: Secure, Decentralized, Human-Readable Names, Aaron Swartz, January 6, 2011
  5. Dan Kaminsky, Spelunking the Triangle: Exploring Aaron Swartz’s Take On Zooko’s Triangle, January 13, 2011
  6. Monero core team (19 September 2014). "OpenAlias". Cite has empty unknown parameter: |1= (help); External link in |website= (help); Missing or empty |url= (help); |access-date= requires |url= (help)

External links