tl;dr We are proposing Alias — a homogeneous standard for identifying resources by human-readable qualifiers: EIP-2193 dType Alias Extension — Decentralized Type System, that supersedes ENS.
This article is meant to analyze current standards used for identifying resources, through a semantic and intuitive lens.
From a semantic standpoint, it is intuitive to traverse a path to a leaf/resource starting from its root origin:
root > component > subcomponent > leaf. There are multiple separators used to intuitively render such a path:
For example, in object access, in most object-oriented languages,
. means refining. It provides access to a property or method of the parent object, respecting the root->leaf order or writing the path to the property.
The same root->leaf order is present in operating system file browsers, menus and sub-menus in applications, breadcrumb UI components. Historically, even when you reference a passage in the Bible, you first mention the Old/New Testament, then the chapter and then the verse number.
Characters that symbolize the leaf->root path are:
@ means "at" and is widely used in email addresses.
/ is used to represent mathematical fractions
Characters that symbolize the leaf->leaf relations in natural and programming languages are:
As seen above, there are symbols with ambiguous meaning, depending on the context. An example is
/, which can convey a root->leaf path (e.g.
/Users/alice/Documents/Books) or a leaf->root rule (e.g.
2/3 fraction), or a leaf->leaf relation (e.g. in natural language: "he/she").
We will now take a look at the existing standards used for providing human-readable addressability for resources and how they use the semantic rules mentioned above.
The current DNS format is
leafsubdomain.subdomain.domain.tld. Users can set their own subdomains and domains, buying them from a decentralized network of DNS providers and registrars. They can choose the TLD only from the available options, controlled by ICANN, in associations with world governments.
The hierarchical order of the standard is:
leafsubdomain < subdomain < domain < tld. We notice that this order makes the current URL standard heterogeneous and not intuitive:
protocol > leafsubdomain, but
leafsubdomain < subdomain < domain < tld, and
tld > query > hash. Therefore, the order changes from meaning
>, to meaning
< and back.
We also notice that the DNS leaf->root format replaces the IP address (e.g. IPv4:
FE80::0202:B3FF:FE1E:8329), which has a root->leaf ordering.
This leads to confusion and unpredictability, making it harder for the internet to be machine-readable and intuitive.
DNS for Ethereum/Blockchain
These follow the same principles as DNS, while striving to be more decentralized. However, without a central authority such as ICANN, they still need to set a collaboration process, in order to not assign the same domain to different users.
Here, the character
. is used to mean a leaf->root rule, which is unintuitive:
leafsubdomain < subdomain < domain < tld.
Libra has two ways of addressing resources. In Move, developers use
address.modulename.resource to reference a resource - e.g.
0x56.Currency.TCoin or even
0x56.Currency.deposit() for resource methods.
However, resources are stored under user accounts as
. separator respects the root->leaf hierarchical discovery path: from the more general to the more particular, in the direction of writing. A Libra account can contain multiple modules, with multiple resources.
/ separator also respects the root->leaf rule, as an account can have multiple resources.
Alias is Based on Intuition
Alias is based on semantic ordering, following the meaning of the separators that are used. It currently allows the following separators:
.: general domain separation, e.g.
@: identifying actor-related data, such as user profiles, e.g.
#: identifying concepts, e.g.
/: general resource path definition, e.g.
For more information, check EIP-2193 dType Alias Extension — Decentralized Type System.
dType is akin to Move resources because they are similar to dType
structs. With Alias, they will gain human-readable accessibility, akin to DNS. However, DNS/ENS does not have data modeling and is less flexible, while Move resources are (and probably will be) controlled by a centralized entity.
In the new decentralized world, maybe it’s time to break with tradition and inflexibility and retie the knot with intuition and clear semantics.