> For the complete documentation index, see [llms.txt](https://docs.jazdid.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.jazdid.com/developers/architecture.md).

# Architecture

<figure><img src="/files/DYzSESRcU9VV6o6fjVJ4" alt=""><figcaption></figcaption></figure>

## Major Components

### RegistrarController

The unified portal for register and renewal of different top-level domains (TLD) will be charged according to the registration fees configured by different registrars.

### Registrar

The registrar is responsible for allocating subdomains. Registrars can be configured at any level, and are pointed to by the owner field of the registry.

### ReverseRegistrar

The registrar responsible for managing reverse resolution via the ***.addr.reverse*** special-purpose TLD.

The reverse registrar provides functions to claim a reverse record, as well as a convenience function to configure the record as it's most commonly used, as a way of specifying a canonical name for an address.

The reverse registrar is specified in [EIP 181](https://eips.ethereum.org/EIPS/eip-181).

### PublicResolver

PublicResolver implements a general-purpose resolver that is suitable for most standard use-cases. The public resolver permits updates to domain name records by the owner of the corresponding name.

### Registry

All domain name lookups start by querying the registry. The registry maintains a list of domains, recording the owner, resolver, and TTL for each, and allows the owner of a domain to make changes to that data.

### BulkRegistrarController

Auxiliary contract of registrarController, support bulk query registration price, bulk search domain names availability, and batch renewal function.
