This page has three main sections. (Note that the listings could be empty.) more… Tip: Remember the back-button! And don't click the number on the left.

  1. The first item displays a term, URL, text or picture.
  2. Followed by a (still unordered) listing of statements about this subject. (for details follow ">"-link)
  3. Separated by a horizontal rule a "reverse" listing of statements referring to this item in object position.
1850 comment >

Zooko's conjecture states that no single kind of name can achieve more than two out of the three desirable properties "human-meaningful", "decentralized" and "secure":

              decentralized (A)

    human-meaningful (L)      secure (G)
     lexical scope          conflict free

This issue played an important role in early in the process when the concept later termed Askemos was conceived.

First we focus on the low level, base line of mapping from "internal" (L) to "external" (G) scope. Since early prototypes in mid 1990 we rely on a notion of names, identifiers and bindings. Most of the insight and idea we owe to Abel&Sussmann, "Structure And Implementation Of Computer Programs", MIT Press 1985.

In SICP's language fresh objects (termed values) are created as the result of evaluating an expression. Values live in "the store ", intentionally vaguely defined. Binding construct are used to associate a human-meaningful symbol (L) – a "name" wrt. our nit-picky distinction between names and identifiers – to a value (G).

Now we had to look closer what the "value" is. In a simple Scheme interpreter it would be a memory address. Decentral, memory management would recursively lead to the very same problem to be solved here without a terminating case. Instead we found that we want a self-sealing "canonical hash" (termed OID) over some meta data to prove provenance plus a cryptographic hash of the (serialized) value itself. We use these as "secure identifiers" (AG) for the value.

New bindings are now always pairs {L, AG} of a human-meaningful name in some lexical (local) scope and a self-sealing identifier for the value. In the language of " petname systems " this is a pair of a petname and a key.

In the XML form of the core language the following expression would bind the name "greeting" to the value "Hello World!":

     <link name="greeting"><new>Hello World!</new></link>

From this point there would a symbol "greeting" in the lexical scope of the source agent (place) bound to the canonical hash of the fresh value holding the string "Hello World!". However: no two "Hello World!" – even though byte-for-byte identical – end up with the same OID, since at least either the time or the creator are different, but both are part of the canonical hash.

Most of the complexity was hidden by mapping these two corners from the base line of the triangle into allocation and garbage collection of bindings. The core language for manipulating our " persistent store", a LISP descendant so to speak, follows this tradition. The user can focus on getting the three legged case as seen fit.

Second, we argue here that Zooko is wrong to see all those three properties as equally desirable. They belong into different contexts. The two sides of a binding are required for a system to be logically consistent at a single point in time. Naming systems providing all three properties at once are not required to the proof system at this level. According to Gödel's incompleteness theorems basic names and values must form a directed acyclic graph not contain a reference self-reference. Otherwise they cannot demonstrate their own consistency. Triples having all three properties are namespaces (or in SICP language environments) holding mappings from names to values. They are incomplete or inconsistent in Gödel's sense. In contrast to bindings at the base level, these ALG-mappings change over time. (I.e., they are stateful.) Nevertheless any decentralized system that deals with humans and faces security threads will be interested in the third property too. They are desirable in social context, just a different thing.

It is the very point of Askemos to provide a language enabling users to create autonomous, meaningful and secure naming systems termed agents. Since those can not prove their consistency on their own, we need some external proof: Those agents are – in general – assumed to be owned and operated under the authority of "juristic persons", i.e., groups of individuals responsible to each other for social/legal reasons. This stratification by limited common interest, the least common denominator so to speak, helps to restrict decentralization to some consensus of the parties, side-stepping issues from even trying the impossible while still proving the agents consistency.

Other individuals are free to respect or ignore those authorities; that is: at least technically they are. In practice they are required to establish the initial contact at least. We anticipate from the small world phenomenon that applications need to be structured into chains of six agents to scale globally.

In so far Zooko's triangle from 2001 was not perceived as a challenge. Since Askemos was published 2000 we use the same idiom in the core language to express those lexical and global qualities. Failing to see a compelling reason to try otherwise, we intentionally left the third corner of the triangle to language and semantics at "application level".

What I'm asking: What would be the challenge actually? Disprove Gödel's theorem? Or demonstrate how having all three properties is different? I would not try either. Or is the challenge to show how to live with the restriction? Did I miss an option?

Comments welcome!

3941 comment >

Interesting to note:

Zooko's page seems to be created at 2001-10-20. By May 2012 it was dead after being archived last time at 2012-01-25.

The last update from 2006-01-30 points to "naming versus pointing", whereby a pointer would be an identifier in the language we use.

1843 is a > issue
1846 title > Zooko's triangle
1848 state > recall comment
issue container member