# Technical

**The XRP Domains is designed to be compatible with the XLS-20 (NFT) storage standard on the XRP Ledger.**

### Domain Name Standard

All domain names must be normalized using a process called UTS-46 normalization. This ensures that uppercase and lowercase names are considered the same (**alice.xrp** = **ALICE.xrp = AliCe.xrp**), and also removes any spaces, white spaces, dots, and other invalid characters that are prohibited.

All domain names entered into the system must follow standardized naming conventions to ensure a consistent appearance for all users. This helps to prevent duplication and confusion between similar-looking names, and enhances security for our users.

The domain name is stored on the **XRP Ledger** with the mapping **NFTokenID** with **URI**. This **URI** will contain the domain name with the following structure:&#x20;

**https\://{host}/{sub-folder}/hello.xrp**

When resolving domain names, the XRP Domains system will parse this **URI** structure to ensure that the full domain name is obtained.

```
{
    "NFTokenID":"0008000043F7F087FD0F9CC7E2A1B173601FA4B35304904AB3E563A400000109",
    "URI":"68747470733A2F2F7872706E732D6D657461646174612D736572766963652E6865726F6B756170702E636F6D2F746573746E65742F68756C6C6F"
    //https://{host}/{sub-folder}/hello.xrp
}
```

```
const url = xrpl.convertHexToString(URI);
const obj = XRPIDjs.parseURI(url);
//domain object
obj.name// hello.xrp
obj.tld // .xrp
obj.sub // sub
obj.nameless // hello
```

The **URI** will also will also return metadata (domain information) as JSON, ensuring compatibility with marketplaces such as onXRP.com, xrp.cafe, and others. Please check the link below for more information.

{% embed url="<https://docs.xrpdomains.xyz/getting-started/metadata>" %}

### Domain Registration

When buyers register a domain, they will need to go through five steps as outlined below:

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

**Step 1:** When a buyer submits a **hello.xrp** registration request, it should be validated by checking naming standards first and then verifying if hello.xrp has an owner.

**Step 2:** The user must connect their Xumm wallet and confirm a single payment transaction to purchase **hello.xrp**. It is important to ensure that the wallet has sufficient balance and is connected to the correct network (mainnet).

**Step 3:** Once the payment is successfully confirmed on the **XRP Ledger**, the system will generate an order to reserve the **hello.xrp** for the buyer. The system will not mint **hello.xrp** directly. Instead, it will be added to a queue and minted only when the user completes the payment. When the payment is confirmed, the system will grant the user permission and create the **hello.xrp.**

**Step 4:** After the payment is confirmed, the system will mint the **hello.xrp** (which typically takes 1-2 minutes), in case there is an error, the buyer can check in the "**Domains Pending"** section on the dApp and proceed to complete the minting process for **hello.xrp.** The system will record the domain name to the **XRP Ledger** and map the **NFTokenID** to the corresponding **URI.** Check also: [**Domain name standards**](https://docs.xrpdomains.xyz/getting-started/technical#domain-name-standard)

**Step 5:** Once the minting process is complete, the system will send a request to the buyer's Xumm wallet The buyer must **Accept** this request to transfer the **hello.xrp** io their wallet and establish ownership. Alternatively, they can confirm the request later by checking the "**Incoming Domains**" section on the dApp.

### Domain Resolution&#x20;

Domain resolution involves the same first step as **Domain Registration**, where the validity of the domain is checked. Next, the SDKs & APIs will be utilized to query and retrieve information about the domain's owner, as well as other details such as social information and wallet addresses. [Read more](https://docs.xrpdomains.xyz/developer-guide/sdk)

### Domain Transfer

Domain transfer requires 2 steps as follows:

**Step 1:** The transferer will use the dApp to create an **NFTokenCreateOffer** command with the recipient's address set as the **Destination,** and set the Expiration to 10 days. The command will then be signed using the Xumm wallet. The transferor can also **cancel** this command by checking the "**Outgoing Domains**" section on the dApp.

**Step 2:** The recipient will see the transferred domain in the "**Incoming Domains**" section on the dApp.  You must click on "Accept" and sign the transaction using their Xumm wallet to complete the domain transfer process.

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.xrpdomains.xyz/getting-started/technical.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
