# 4.1 Limitations

### **Handle Registration Period**&#x20;

* Minting a handle (not a sub-handle) is initially restricted to a registration period of two years at the price of 1 year; however, renewals or extensions can be made for any duration.

### **Sub-Handle Minting**

* Parent handle owners can mint a sub-handle under their parent handle for a maximum of one year per transaction. This design feature prevents long-term squatting on their own sub-handles, as there is no cost to mint or renew sub-handles for parent handle owners.

### **Character Restrictions, Handle Length and Punycode**

* Handles are limited to a maximum length of 18 characters
* Handles may only contain lowercase characters and single hyphens; no other special characters are permitted, except for "xn--" to enable the use of punycodes.
* Punycode requires only "xn--" as a prefix for handles and sub-handles.\
  \
  \&#xNAN;*for example:*&#x20;

&#x20;      *xn--4v8h.₿ =*��*.₿ (handle)*

&#x20;      *xn--4v8h.xn--4v8h.₿ =*��.��*.₿ (sub-handle)* <br>

### **TokenURI Data Persistence**&#x20;

* TokenURI data will persist during expiration until the handle is burned.

### **Sub-Handle Count Retrieval**

* Parent handle owners can retrieve the number of registered sub-handles  associated with them using the `getSubhandleCount` function whether they're valid, expired, or burned, but not the actual sub-handle names.

### **Retrieve Sub-Handles associated with Parent Handle**

* The `getSubOfParentHandle` function can list all the sub-handles minted under a specific parent handle. However, it will not filter out the expired handles. You will need to utilize the `isSubExpired` function to determine expiry.

### **TBA EVM Multi-Chain Support**

* Currently, it is not possible because Rootstock does not support Layer Zero. However, there are other workarounds, and Layer Zero is currently in the negotiation phase.

### **Stress Test**

#### **Mint Handle**

Approximately 25 handles could be minted simultaneously from the same caller and transaction. We used the `multiHandleMint` function, which can only be called by the contract owner.

#### **Address To Handle Indexing**

During our stress test, approximately over 1000 handles can be displayed per address using the `handlesOwnedBy` function. We decided to stop at 1025 handles because there is no way of knowing if the function would crash. Please keep in mind that exceeding 1000 handles is not recommended. Therefore, it is best practice to store only a few hundred handles per address to avoid issues, even though 1000+ handles was capable during the stress test.


---

# 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://studybitcoin.gitbook.io/hndl-bitcoin-handle-naming-system/4.1-limitations.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.
