RNS provides an architecture which enables the identification of blockchain addresses by human-readable names.
By adding a name resolution service, also known as “alias”, the probability of errors is significantly reduced. In addition, centralizing the access to multiple resources associated with a human-readable name improves the blockchain platform user experience. As resource names may change over time, the system needs to be flexible to support frequent changes.
Currently over the World Wide Web, the Domain Name System (DNS) is responsible for mapping human-readable names to IP addresses. RNS is a decentralized and secure service that works over RSK’s blockchain.
RNS is a hierarchical name space inspired by DNS, with the hierarchy roughly corresponding to organizational structure, and uses the “.” character to delimit its levels.
The design goals of the RIF Name Service influence its structure.
RNS has two major components:
The RNS Registry, which is specification for a tree structured name space and data associated with the names.
Conceptually, each node and leaf of the domain name space tree names a set of information, and query operations are attempts to extract specific types of information from a particular set. A query names the domain name of interest and describes the type of resource information that is desired.
RNS Resolvers are contracts that provide information from a name in response to client requests.
Resolvers must be able to answer a query directly, or pursue the query using referrals to other resolvers. A resolver will typically be a contract’s public function that is directly accessible to user programs or other contracts; hence no protocol is necessary between the resolver and the user program.
These three components roughly correspond to the three layers or views of the domain system:
Before RNS can be used to hold naming information for some kind of object, two needs must be met:
The guideline for finding a specific record for a name is as follows:
Guidelines on integration
A domain name identifies a node. Each node has a set of resource information, which may be empty. The set of resource information associated with a particular name is composed of separate resource records (RRs). The order of RRs in a set is not significant. Resource records associated with a name are found in the domain’s resolver