# Overview

An In-depth Tour of SPACE ID

## SPACE ID Mission[​](https://docs.space.id/docs/Overview/An%20In-depth%20Tour%20of%20SPACE%20ID#space-id-mission) <a href="#space-id-mission" id="space-id-mission"></a>

SPACE ID is building a universal name service network with a one-stop identity platform to discover, register, trade, manage web3 domains. It also includes a Web3 Name SDK & API for developers across blockchains and provides a multi-chain name service for everyone to easily build and create a web3 identity.

## One Place for Digital Identities

As the world moves further into the web3 age, decentralized identities have become an increasingly crucial aspect of any web3 presence; a vast number of domain name providers have emerged in a short period of time, and owning multiple identities became nothing new. However, no matter what domains you own, it’s always a headache to search, register, and manage different domains, and the existing NFT marketplaces are not built for trading domain NFTs; ENS users have to set their primary names or controller on ENS App, while .bnb owners need to find a BNB Chain marketplace to list the .bnb domains they want to sell…

Enough of that! SPACE ID 2.0 thus offers a **one-stop web3 domain & identity platform** to discover, register, trade, and manage web3 domains. It also includes a **web3 name SDK & API** for developers across blockchains and provides a **multi-chain name service** for everyone to easily build and create a web3 identity.

### One-stop Web3 Domain & Identity Platform <a href="#id-1c62" id="id-1c62"></a>

The SPACE ID one-stop web3 domain & identity platform is exactly what it sounds like — an innovative infrastructure that allows you to manage all aspects of your domains in one place. No more using multiple products for different domains. Everything you need is over here, in the palm of your hand at the same time.

It mainly arms the following four actions:

* **Discover:** A central hub for users to search desired names in all supported TLDs, as well as discover trending domain collections. It supports functions like auto-suggesting and the quick check on the domain registration status

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

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

* **Register:** Users can now register for all web3 domains on the SPACE ID Mainnet. The .bnb and .eth domains will be the first two TLDs to be supported in our first version of Mainnet.

<figure><img src="/files/9VhOdhwBaoL3Ed7J1OTN" alt=""><figcaption></figcaption></figure>

* **Trade:** A marketplace that is specifically designed for trading web3 domains, with aggregated liquidity from other marketplaces such as OpenSea

<figure><img src="/files/0fXH8idGA5lpFFPOq5ON" alt=""><figcaption></figcaption></figure>

* **Manage:** One single integrated portal to manage the renewal, record, and ownership of all your web3 domains

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

### Multi-chain Name Service <a href="#id-1111" id="id-1111"></a>

SPACE ID introduced .bnb Name Service on BNB Chain and built a community of 168K unique domain holders within 6 months, and we are now bringing the multi-chain name service. As mentioned in previous posts, supporting more TLDs and blockchains is always one of the priorities of SPACE ID. In the upcoming SPACE ID 2.0, we will not only continue focusing on .bnb Name Service, but also see some significant progress in terms of the support for more Top Level Domains. This includes but is not limited to the new TLDs that will be launched by the SPACE ID team, plus we are expecting to see other domain providers joining us with this ground-breaking multi-chain name service feature.

SPACE ID has already come in contact with many industry partners on various blockchains, and we are confident to share with you that the SPACE ID ecosystem will expand exponentially in no time. Stay tuned for more announcements in the following weeks.

### Web3 Name SDK & API <a href="#id-9ce3" id="id-9ce3"></a>

One SDK for all has always been one of the main features of SPACE ID to support all web3 dApps. It is ultimately designed to be a unified and streamlined approach that greatly simplifies the integration of web3 services, eliminating the need for developers to work with multiple protocols, saving time and reducing the risk of compatibility issues.

Moreover, equipped with all the other upgrades in SPACE ID 2.0, our Web3 Name SDK has gained more horsepower than ever, and aims to empower communities and partners to grow and better engage with users by leveraging custom domain names. We’ve added an all-in-one API on top of the SDK, which helps provide a much more comprehensive platform for integrating web3 services into any application. With its significantly improved versatility, scalability, and future-proof design, it is poised to become a game-changer in this web3 age, and our 100+ integrated and future partners only need to integrate this one Web3 Name SDK to connect to all naming data owned by users.

## SPACE ID Vision: Universal Name Service <a href="#id-81c8" id="id-81c8"></a>

The objective of SPACE ID is simple; the vision of a **universal name service network** has been the driving force behind our work. At SPACE ID, we believe that the core of Web3 is to become the gateway between decentralized identities and the physical/digital world, and the key is finding solutions to the challenges that all the current Domain Services are facing. Although the current version of SPACE ID already marks an essential step towards making this objective a reality and serves as a strong foundation for future developments and advancements in the web3 identity space, ultimately getting there is not easy. But Keep in mind, with each new step, SPACE ID is moving closer to becoming an all-in-one universal digital identity solution.

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

## Join SPACE ID Community[​](https://docs.space.id/docs/Overview/An%20In-depth%20Tour%20of%20SPACE%20ID#join-space-id-community) <a href="#join-space-id-community" id="join-space-id-community"></a>

* Website: [http://space.id](http://space.id/)
* Twitter: <https://twitter.com/SpaceIDProtocol>
* Medium: <https://medium.com/@SpaceID>
* Discord: <http://discord.gg/spaceid>
* Telegram: <https://t.me/spaceid_news>


# .bnb Name Service

## What is .bnb Name Service?

The .bnb Name Service is a SPACE ID Name Service that provides the first BNB Chain name.With .bnb names, everyone can experience the following features in the BNB Chain ecosystem:

* Register for .bnb domains to level up the traditional BNB Chain addresses.
* Users will have the domain NFTs which represent the ownership of the domain name.
* Set custom records to your .bnb domains to enjoy an easier user experience with thousands of dApps in the BNB Chain ecosystem.

## The Standard BNB Chain Domain Identifier <a href="#f985" id="f985"></a>

We take the word "standard" seriously.

It's important for your ID to be easily recognizable throughout the space, and the .bnb Domain Name Service accomplishes just that. It has integrated with over 100 leading projects and protocols, including BSCScan and Trust Wallet. With support from these partners, you can use your .bnb names to send funds, swap tokens, or buy NFTs across applications.

## A Fundamental Optimization for Registration Process <a href="#id-4865" id="id-4865"></a>

The BNB Domain Name Service is built on the foundation of ENS. ENS is cool and all, but all of the technical design on ENS is based on the condition of Ethereum MainNet. SPACE ID, regarding this aspect, has taken a huge leap with the user experience. The search and registration process for the end-users is much more simplified and intuitive. With the multi-chain oracle of SPACE ID and EIP712 signature distributor, users can register a BNB Domain Name with only one click. There will be no more one-minute wait time during the registration process. From the name search to a successful registration on the BNB chain, it will take less than 1 minute and less than $10 on average.


# .arb Name Service

## What is .arb Name Service?

.arb Name Service is a [SPACE ID](https://space.id) name service. It is building the .arb Domain Name Service on Arbitrum. It is a decentralized name system and the go-to solution to replace Arbitrum wallet and contract addresses.

Since .arb Name Service is built upon Arbitrum network, a layer-2 solution for the Ethereum blockchain, it inherits many of its advantages over the traditional DNS systems:

* .arb Name Service will become an essential piece in the Web3 realm on considerably the most EVM-compatible chain.
* .arb Name Service will soon be integrated into every corner of the powerful Arbitrum ecosystem.
* The registration process and user experience have been significantly enhanced on a systematic level; it’s faster, much more efficient, and reliable.

## .arb Vision: Scale Web3 with Arbitrum

It’s no secret that Web3 is still in its early stages of development. While there has been significant progress in recent years, Web3 still has a long (but destined) way to mainstream adoption, and a number of challenges need to be addressed during this journey. These include technical aspects such as scalability, where Arbitrum centers at. It greatly elevates the scalability of Web3 and has quickly achieved its name as one of the **Layer 2 leaders**.

.arb Name Service thus aims to **scale Web3 with Arbitrum** and facilitate it during this process. Most people are familiar with what ENS brings to the Ethereum ecosystem, and that’s what .arb is to Arbitrum. Undoubtedly domain names are becoming a critical infrastructure for the adoption of any platform, including Arbitrum in this case. It helps resolve the domain names of dApps built on the Arbitrum protocol and allows users to easily access it with a **human-readable** version of an IP/blockchain address, which significantly improves user experience and efficiency.

In addition to its user-friendly aspect, .arb Domain Name Service offers funnels of branding and marketing, as well as various use cases by establishing **user-owned identities and credibility**. Moreover, as Arbitrum directs the gaming and social focus with the Arbitrum Nova, it’s undeniable that a decentralized identity will be pushed to the center of this grand stage.

To say the least, SPACE ID .arb Name Service is an essential puzzle for Arbitrum in its mission of scaling Web3, and we welcome everyone to witness the vision.


# SPACE ID Token (ID)

## The ID Token <a href="#id-139b" id="id-139b"></a>

**ID** is the governance token of SPACE ID. It is designed to play a critical role in the decision-making process of the project, allowing users to have a say in the direction and future of SPACE ID. The ID token serves as an essential part in the growth and sustainability of the SPACE ID ecosystem, incentivizing users to engage with the project and contribute to its success. With the launch of ID, SPACE ID is poised to become a leader in the Web3 industry, providing users with even more well-rounded platform for managing their digital identities.

**ID is the native token of the SPACE ID ecosystem, with the following functions:**

* ***Staking:** Stake ID tokens to receive discounts in the* [*SPACE ID domain NFT marketplace*](https://space.id/collection) *trading fees and Web3 domain registration discounts on SPACE ID.*
* ***Payments:** Used as a means of payment within the SPACE ID ecosystem and for Web3 Name SDK Integration.*
* ***Governance:** ID token holders can participate and vote on SPACE ID DAO proposals.*

## ID Token Contract Address <a href="#c5a0" id="c5a0"></a>

{% hint style="info" %}
**0x2dfF88A56767223A5529eA5960Da7A3F5f766406**&#x20;
{% endhint %}

Available on **Ethereum** ([id.spaceid.eth](https://etherscan.io/token/0x2dfF88A56767223A5529eA5960Da7A3F5f766406), [add to Metamask](https://bit.ly/3yUl4i8)) and **BNB Chain** ([id.bnb](https://bscscan.com/token/0x2dfF88A56767223A5529eA5960Da7A3F5f766406), [add to Metamask](https://bit.ly/40du4L0))&#x20;

Do NOT transfer any assets to the token smart contract address.

[**Download ID token brand assets here**](https://drive.google.com/drive/folders/1d7G20JZVdTjYQLDzwn77-9nSbJx2IpLO?usp=share_link)

## Token Distribution <a href="#b7ec" id="b7ec"></a>

ID Max Supply: 2,000,000,000.

* Data API for the lastest total supply (reflecting tokens burned): <https://nameapi.space.id/idsupply/total>
* Data API for the lastest circulating supply (reflecting token unlocks): <https://nameapi.space.id/idsupply/circulating>

[**See full Token Release Schedule here** ](https://go.space.id/token-table)

ID token initial distribution:&#x20;

<table data-view="cards"><thead><tr><th>Category</th><th>Amount</th><th>Percentage</th><th>Vesting Schedule</th><th>Custody Address of Unvested Tokens</th></tr></thead><tbody><tr><td><strong>Binance Launchpad</strong></td><td>100,000,000.00</td><td>5.00%</td><td>Fully unlocked at TGE</td><td>Fully released</td></tr><tr><td><strong>Advisors</strong></td><td>140,000,000.00</td><td>7.00%</td><td>1-year cliff, then 3-year quarterly vesting</td><td>0x4A80E1403Ea5c6aEA72e2679922F05D335225932, <br>0x48a69038CB2f9Df0AB111a69fB2e2BABf9740454, <br>0x45885e5cC1AE594BaDD1123C5C4fF98a1b108e3b, <br>0x706A585393ee819A630cb8dc9d79AbaA80896aB3 </td></tr><tr><td><strong>Strategic Sale</strong></td><td>160,000,000.00</td><td>8.00%</td><td>1-year cliff, then 3-year quarterly vesting, on each three-monthly anniversary of the TGE date</td><td>0x3d4f2eb94c8bf1179a54c378df32a42c42f6a5b2 </td></tr><tr><td><strong>Seed Sale</strong></td><td>400,000,000.00</td><td>20.00%</td><td>1-year cliff, then 5-year quarterly vesting, on each three-monthly anniversary of the TGE date</td><td>0x45885e5cC1AE594BaDD1123C5C4fF98a1b108e3b, <br>0x706A585393ee819A630cb8dc9d79AbaA80896aB3 </td></tr><tr><td><strong>Core Team</strong></td><td>300,000,000.00</td><td>15.00%</td><td>1-year cliff, then 5-year quarterly vesting, on each three-monthly anniversary of the TGE date</td><td>0x4A80E1403Ea5c6aEA72e2679922F05D335225932, <br>0x48a69038CB2f9Df0AB111a69fB2e2BABf9740454 </td></tr><tr><td><strong>Ecosystem</strong></td><td>200,000,000.00</td><td>10.00%</td><td>50% unlocked at TGE, then 3-year monthly vesting</td><td>0x08c1e993394eDc23D9431E1a624dD2ed7934cd3E, <br>0x42968B4aBB74Cd78cCb2C600e5400731323A31F7 </td></tr><tr><td><strong>Marketing</strong></td><td>260,000,000.00</td><td>13.00%</td><td>10% unlocked at TGE, then 4-year monthly vesting</td><td>0x08c1e993394eDc23D9431E1a624dD2ed7934cd3E, <br>0x42968B4aBB74Cd78cCb2C600e5400731323A31F7 </td></tr><tr><td><strong>Foundation</strong></td><td>240,000,000.00</td><td>12.00%</td><td>0% unlocked at TGE, then 4-year monthly vesting</td><td>0x08c1e993394eDc23D9431E1a624dD2ed7934cd3E, <br>0x42968B4aBB74Cd78cCb2C600e5400731323A31F7 </td></tr><tr><td><strong>Community Airdrop</strong></td><td>200,000,000.00</td><td>10.00%</td><td>30% unlocked at TGE, then 2-year monthly vesting</td><td>0xc000956Bb65342c50D91ECE50a8a98bc77430618, <br>0x5A01c27B9fB95b8d18EDa6fDFd5689171eA562Ac </td></tr></tbody></table>

## Binance Launchpad Release <a href="#id-655a" id="id-655a"></a>

The ID token will be available on Binance Launchpad for public subscription, with trading to start shortly thereafter. This means that our community will have an opportunity to buy, sell, and trade the ID tokens on one of the most reputable exchanges in the industry. 5% of the total supply is allocated to Binance Launchpad participants.

[Learn more on Binance announcement](https://www.binance.com/en/support/announcement/introducing-the-space-id-id-token-sale-on-binance-launchpad-81e9da9067c847dfa3afd959e521c32a)

[SPACE ID Introduction on Binance Research](https://research.binance.com/en/projects/space-id)

## Early Adopters Airdrop <a href="#id-636a" id="id-636a"></a>

* Total Allocation of the Early Adopters and Ecosystem Contributors Airdrop for Claiming: 47,600,000 ID tokens, \~2.38% of total ID token supply, which is 23.8% of the Airdrop pool (10% of total supply)
* Eligible Users: **\~271,000 addresses that hold .bnb or .arb domain at snapshot time**
* Snapshot Time: March 10th, 2PM UTC, the corresponding BNB Chain block number is 26345570, and the corresponding Arbitrum One block number is 68550223
* The rest of the Airdrop allocation is reserved for contributors in future campaigns and will be released gradually.

You can visit [space.id/voyage](http://space.id/voyage) now to check your eligibility and claimable amount, while the claiming process will be live from March 22nd to April 22nd, 2023 (one-month window) on BNB Chain, after which any unclaimed tokens will be sent back to the airdrop pool for future rewards.

## Eligibility of Early Adopter Airdrop <a href="#id-13a9" id="id-13a9"></a>

The basis for this retroactive airdrop is per address, not per domain name. Each eligible address (**hold .bnb or .arb domain at snapshot time**) will be able to claim ID tokens airdrop, and the claimable amount is calculated by a number of factors below:

* Holding days — If an address holds multiple domains, only the one with the longest holding days is taken into the account
* Days to expiry — If an address holds multiple domains, only the one with the longest days to expiry is taken into the account
* If having a valid primary name (.bnb or .arb)
* If having Voyage: Prime NFT
* If having Voyage: Legacy NFT
* If having Voyage: Awakening NFT
* If having all Voyage Prime/Legacy/Awakening NFT
* Number of [other OATs](https://galxe.com/spaceid/campaigns) held (issued by SPACE ID on Galxe)
* If holding a 3/4/5(+) character .bnb
* If holding a 3/4/5(+) character .arb
* If holding both .bnb and .arb

See more details on airdrop calculations and address list at <https://github.com/Space-ID/airdrop-season1>

## How to Claim My Retroactive Early Adopter Airdrop <a href="#fe46" id="fe46"></a>

Visit [space.id/voyage](http://space.id/voyage), click on **Voyage Season 1** to see your achievements and claimable amount!

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

Claiming will be live on March 22nd, and the start claim time will be the same as the token listing time.

## Airdrop Allocation to SPACE ID Ecosystem Contributors <a href="#id-2bff" id="id-2bff"></a>

* 200,000 ID tokens will be distributed to [Steven Lei](https://twitter.com/stevenkin), an outstanding developer and contributor, who has developed a suite of applications to support the community including [Domain Explorer](https://spaceid.stevenlei.com/), [bnb.me](http://bnb.me), [bnb.fam,](https://bnbfam.com/) etc.
* 200,000 ID tokens will be distributed to Space Auroras, Space Novas, and Cosmic Astras who have been incredibly helpful in our Discord.
* Additional ID tokens will be distributed to 100+ integration partners, who have contributed to the adoption of SPACE ID domains.

## Discover More ID Tokens in Voyage Season 2 <a href="#ed65" id="ed65"></a>

If you missed the snapshot time for the retroactive Early Adopter Airdrop, don’t worry, all the .bnb/.arb registrations after the snapshot will be counted in Voyage Season 2 — Calling. The rest of the airdrop allocation is reserved for Voyage Season 2 and future campaigns.

We are extremely excited to announce Voyage Season 2 — Get started now at [space.id/voyage/season-2](http://space.id/voyage/season-2)

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

Check out the detailed rules & tutorial in <https://docs.space.id/getting-started/programs/space-id-voyage-season-2-calling>


# Roadmap

**Stage 1 - .bnb Domain for BNB Chain (Since 2022)**

Developing domain registration, NFT marketpalce, and BNB Chain integrations for .bnb domain.

**Stage 2 - Web3 Domains for Multi-chain Eco-systems (Since 2023)**

Expanding to offer 20+ TLD (Top-level-domain) name services to multi-chain eco-systems.

**Stage 3 - AI Agents Domains  (Since 2025)**

Exploring new name services for AI Agents.


# Domain Tutorials


# Set Up a Wallet

On SPACE ID Mainnet, we currently support **Metamask** Wallet and **WalletConnect**.

### Metamask Wallet <a href="#metamask-wallet" id="metamask-wallet"></a>

#### What is a Metamask Wallet? <a href="#what-is-a-metamask-wallet" id="what-is-a-metamask-wallet"></a>

**MetaMask** is a digital wallet that is specific to Ethereum. There are other wallets available, and SPACE ID supports bunch of them as well, but MetaMask is still the most popular one. It’s connected to your web browser as an extension where you can hold and spend ETH. You’ll need to connect your wallet to Foundation in order to participate in the marketplace.

#### **How do I set up a Metamask wallet?** <a href="#how-do-i-set-up-a-metamask-wallet" id="how-do-i-set-up-a-metamask-wallet"></a>

* Download and install the [MetaMask browser extension](https://metamask.io/download.html) through their website.
* Select “Create a Wallet.”
* Create a username and password.
* Pay close attention to your uniquely assigned Secret Recovery Phrase, and store it somewhere safe. If you lose this series of words or forget what order they’re in, you *will* lose access to your wallet and it will be unrecoverable. We recommend writing the phrase on a piece of paper and storing it in a memorable, safe, and secure spot.
* Confirm the phrase by placing all of the words in the correct order as they were assigned.
* Now, MetaMask is set up and should appear in your browser extensions.
* If you have any trouble, visit [MetaMask Support](https://metamask.zendesk.com/hc/en-us).


# Discover

Searching for the perfect domain name can be a daunting task, but with SPACE ID 2.0, it's never been easier. Our Discover features offers a range of utilities as well as a intuitive approach to help you navigate the world of Web3 domains.

In the search bar, you can enter your desired words and receive a list of related and recommended results. This means that you won't just see the single result for your exact search term, but a comprehensive list of similar options to choose from.

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

Additionally, the search results include both registered and unregistered domain names. You can make an offer to purchase a registered name directly if it is listed on the marketplae, or make an offer of not. The search results also provide you with other similar alternatives. With SPACE ID 2.0, you have access to the full range of available options.

Furthermore, SPACE ID 2.0 supports various TLDs (currently .eth, .bnb, .arb name service) and provides the option to filter results by specific TLDs, registered or unregistered names, and even domain length or expiration date.

<div><figure><img src="/files/TazURg3exvTDsArZjINJ" alt=""><figcaption></figcaption></figure> <figure><img src="/files/yIcsSvLxKKi2A2r3aKSh" alt=""><figcaption></figcaption></figure></div>

Besides, SPACE ID 2.0 also displays a range of collections on different TLDs. These collections provide a fun and playful method for users to discover a variety of Web3 names without having to search one by one.

<figure><img src="/files/7hxvBoDHi3rwmWVQH0n3" alt=""><figcaption></figcaption></figure>


# Register

Looking to register a new Web3 domain name with ease? Look no further than SPACE ID 2.0. The platform offers a simple and efficient way to register domain names across all TLDs supported by the SPACE ID 2.0 ecosystem (Currently .eth, .bnb, .arb name service).

To register for an unregistered Web3 Domain, first make sure your connected wallet is on the same chain as the domain you want to register, and click on the name. You can then start your registration process right away by clicking the “Register” button on top right corner of the pop-up window, or click “View in full page” to be redirected to the detailed info page of the domain.

In the domain info page, all the related information will be displayed, such as past activities, character set, etc. Click “Register now” to start your registration.

The registrar requires two transactions (Request and Register) to register a name. Once you're in the 'Request' stage, select the number of years you want to register this domain for. The price will change based on how many registration years you want to add to this domain, and the total estimated price will also include the gas fee. The minimum duration for the registration period is 1 year.

Click the 'Request' button, which will prompt a transaction. It takes couple secons to get the request confirmed. Once the request is confirmed, you can go to the registration window.

On the registration window, click on the 'Register' button to proceed. You will be prompted to pay the fee to register your domain. After the 'Register' transaction is complete, you have successfully register for a Web3 domain on SPACE ID 2.0!

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

![](/files/tBSswfve5shvIzo5Utor)

To streamline the registration process, SPACE ID 2.0 also features a convenient shopping cart system. This allows you to add multiple domains to your cart and register them all at once, with the least amount of effort!

The shopping cart system is flexible enough to accommodate different TLDs from different chains. However, keep in mind that you can only register domains on the same chain at a time. If you need to register domains from a different chain, simply switch it by clicking the blockchain sign next to the shopping cart button.


# Trade

## Purchase domain with fixed prices

You can now purchase any listed Web3 domain directly from SPACE ID 2.0. The platform have aggregated Web3 domains listed on OpenSea, Element, and ENSVision, making it easy for you to find and purchase the perfect domain.

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

## Bulk purchasing

At SPACE ID 2.0, we understand the importance of efficiency. That's why we offer bulk purchasing options for Web3 domains. Users can add multiple domains from different chains to their cart, but can only purchase domains based on the same chain. To do so, switch to the desired network and finalize your purchase. You will only have to carry out a single transaction, reducing gas fees, and streamlining the process.

![](/files/Mjjo5K7oeQ5POSvh7qae)

## Listing

Selling Web3 domains has never been easier! You can list your domain at a fixed price, choose the duration of the sale, and set the price. Once you've entered the necessary information, click "List" to complete your listing.

We normally charge a small 1.5% service fee for our services, but currently we are offering zero transaction fees for a limited time.

<figure><img src="/files/2ZTqBd5jtoI0HrdJC7Qv" alt=""><figcaption></figcaption></figure>

## Edit your listing

Need to make a change to your listing? No problem! You can easily edit your listing by navigating to the item and clicking "Edit listing." You can lower or increase the fixed price of your listing, or cancel the listing altogether.

<figure><img src="/files/84xSUWLilqes7k7Efljp" alt=""><figcaption></figcaption></figure>

## Make offer

At SPACE ID 2.0, we make it simple to make an offer for Web3 domains. You can input the amount of WETH or WBNB (wrapped token) you wish to offer, and select the duration of the offer. It's important to note that you can only make an offer using WETH or WBNB.

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

## Accept offer

When someone makes an offer on your listing, you can view the list of offers that have been made. To accept an offer, simply click "Accept" on the offer you wish to accept. We remind you that you can only receive payment with WETH or WBNB (wrapped token), not ETH or BNB.

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

## Cancel offer

Made an offer, but changed your mind? No worries! You can cancel your offer anytime by clicking "cancel the offer."

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


# Manage

Once you've secured your Web3 name on SPACE ID 2.0, managing it is a breeze. Simply click on your profile image in the top right corner, and select "My Domains" to access and edit all your registered domain names. Note that SPACE ID 2.0 currently supports .eth, .bnb, and .arb names.

In the "My Domains" page, you can sort your registered domains by specific TLDs, status, domain length, expiration date, and more. Select a domain, change to the corresponding network, and click "View in Full Page" to access the domain info page. From there, you can transfer ownership, edit the record address, and extend your domain registration.

## Set Primary SPACE ID name

On SPACE ID2.0, your account address can serve as the record address for one or multiple Web3 domains. You can use one of these domains as your primary name on the corresponding blockchain network. You can only have one primary name per network, but you can change it at any time.

To change your primary name, simply go to "My Domains" and click the edit buttons in the "Primary Names" section located in the top right corner.

**You must set the record address for your domain before you can make it your primary domain.**

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

![](/files/FSsQPFdBusHQ7Y4micHG)

## **Transfer**

Every domain has a registrant. Registrant indicates the owner of a Web3 name registration. Only the registrant can transfer the ownership of a domain registration.

To transfer ownership, access the domain info page, click "View Details / Records," and select "Transfer" to fill in the address of the new owner.

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

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

### Edit record address

The traditional address in the record is the corresponding address after a Web3 name is resolved by the resolver. It is also the address that you actually interact with when you use it with our partners that have integrated with the supported name services.

For example, when you transfer assets to arton.bnb on Trust Wallet, the assets are transferred to the traditional address in the record.

To edit the record address, access the domain info page, click "View Details / Records," and select "On" in the Records section to edit the record address on the corresponding network for your domain name registration.

<div><figure><img src="/files/tjzI0HmhY3GQit9J2bUs" alt=""><figcaption></figcaption></figure> <figure><img src="/files/wHQOJffTfKT5c6z6tkQJ" alt=""><figcaption></figcaption></figure></div>

### Extend

You can extend your domain registration anytime during the registration period and within 90 days after it expires, which is 90-day grace period. During the grace period, the domain name will be reserved only for its previous registrant to expand its registration. After the grace period, the name will not be reserved and will be open to the public to register.

To extend your domain registration, access the domain info page, click "View Details / Records," and select "Extend" to make the change.

<figure><img src="/files/5pTR4m7ZmKiZNUgV4izR" alt=""><figcaption></figcaption></figure>


# Domain Programs


# SPACE ID Premier Club

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

There is no doubt that Web3 represents deeper decentralization, empowerment, and inclusivity. The world can feel this radical shift, and so does SPACE ID. As pioneers in this wave, we understand the importance of fostering a strong and vibrant community to bring out the best in Web3. The revolution is ultimately led by the dedication and passion of individuals sticking to the game plan. With this in mind, we are delighted to announce that, here comes the dawn of the Web3 Alpha community — introducing [SPACE ID Premier Club](https://space.id/premier-club)! The vision is to unite holders of premium domains under SPACE ID, creating a collective force where ideas flourish, opportunities abound, and each member embodies the essence of Web3 and digital identities.

Are you the proud owner of premium domains (3/4-character .bnb/.arb domains) under SPACE ID? If so, you are now officially a part of our Web3 Alpha community, and we need your passion to become the representation of the face for Web3 and digital identities. In return, we have prepared some special airdrops for you, with more exclusive benefits to come in collaboration with SPACE ID ecosystem partners in the future, as well as the $ID staking feature to unlock further rewards.

See you in the Web3 Alpha Community, AKA SPACE ID Premier Club!

## Eligibility for SPACE ID Premier Club

Users that own one or more 3-character or 4-character .bnb/.arb domains will  automatically gain the membership of SPACE ID Premier Club.

Check out SPACE ID Premier Club: <https://space.id/premier-club>

## Premium Domain Holding: Your Ticket to Premier Club Rewards <a href="#a2c3" id="a2c3"></a>

Your premium domain holdings (3/4-char .bnb/.arb) are the key to accessing future Premier Club Rewards. The value of your premium domains is the primary factor determining your allocation. The more valuable your domains are — determined by their registration cost and time to expiration — the higher your rewards will be.

## $ID Staking to Boost your Premier Club Benefits

By staking $ID tokens, members can further unlock Boosters that amplify your Premier Club Rewards.

The Booster system comes in three tiers, each unlocking a higher Booster Value:

* Tier 1: Activate by staking 100 $ID
* Tier 2: Unlocked by staking 500 $ID
* Tier 3: Reach the top by staking 2,000 $ID

Note that you need to stake at least 100 $ID to unlock the Tier 1 Booster, and staking more than 2,000 $ID won’t give you additional benefits.

$ID staking is now enabled on the BNB Chain. You can stake and withdraw at any time without any lock-up, while your staking amount over time will be tracked by future snapshots.


# SPACE ID DAO

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

Introducing SPACE ID DAO, a community-driven platform where amazing happens.

SPACE ID DAO is not just a facilitator of decentralization, it embodies our vision at its core. Our DAO is governed by $ID token holders and controls the funds held in the DAO Treasury. It will ultimately provide a framework for our community to collaborate on projects, share resources, and work together towards common goals, all within a much more transparent, secure, and decentralized environment.

Together with the establishment of the DAO Treasury, we are also thrilled to announce the new implementation of SPACE ID platform’s revenue distribution, with a **buyback-and-burn mechanism**, which will include all registration proceeds accumulated since the TGE date and be executed quarterly moving forward.

* **50% of the total net revenue generated on the SPACE ID platform (including revenue from domain registrations, renewals, Gift Card purchases, and SPACE ID marketplace fees) will be allocated for the purchase and burning of $ID tokens.**
* **The remaining 50% of the total net revenue will be added to the DAO Treasury, which will be held in stable coins, and governed by all eligible $ID token holders.**

## &#x20;<a href="#id-9008" id="id-9008"></a>

## The Overall Governance Process <a href="#id-9008" id="id-9008"></a>

In the coming weeks, we will be launching the SPACE ID DAO, along with its dedicated $ID token governance space on our website. Upon completion of the development phase, the following rules will be implemented:

* All proposals will undergo a two-step process. Firstly, a draft proposal must be submitted on the [**SPACE ID governance forum**](https://forum.space.id/). After the community has reviewed and discussed the proposal, if the proposal is ready, please collaborate with our community manager to schedule a [**snapshot vote**](https://snapshot.org/#/dao.spaceid.eth), which will serve as the second and final step.
* For a DAO proposal to pass, it needs to receive a minimum of 50% passing votes from wallet addresses holding a total of at least 5,000,000 ID tokens.
* Once a proposal is passed, it will be executed by the core team, with funding distribution (if required) authorized by the multi-sig signers elected by the DAO.

You can find more details in the [**Governance Process**](https://forum.space.id/t/space-id-dao-governance-process/21) and [**Proposal Template**](https://forum.space.id/t/proposal-template/19) threads in the forum.

## &#x20;<a href="#d53a" id="d53a"></a>

## The Delegation Process <a href="#d53a" id="d53a"></a>

**Phase 1**: Delegate Application Submission

* If you’re interested in becoming a delegate and contributing to DAO governance, please submit a statement in our governance forum using the template provided: [**delegate application template**](https://forum.space.id/t/delegate-application-template/17) (submit by replying in this thread).
* **Submission deadline: April 28th, 2023, at 2PM UTC.**

**Phase 2**: Delegate Portal Opens — Token Holders Can Delegate

* After the delegate application submission phase, a dedicated delegation portal will be available on our website. $ID token holders can view a list of delegates and select their preferred delegates to entrust their votes.
* Note that $ID token holders who delegated their votes can revoke and reclaim voting power at any time.

We deeply value the initiative of $ID token holders who choose to self-delegate and vote independently, but we also recognize the importance of giving everyone the opportunity to delegate their votes to our dynamic community members. This approach contributes to a stronger and more effective governance system. Therefore, we invite all potential delegates to join us in shaping the future of decentralized identity.

## &#x20;<a href="#ddb1" id="ddb1"></a>

## Submit Your Application to Be a Delegate <a href="#ddb1" id="ddb1"></a>

Can’t wait to become a delegate for SPACE ID DAO? Submit your applications [here](https://forum.space.id/t/delegate-application-template/17) (submit by replying in this thread), with your .bnb / .arb names in hand. Don’t hesitate to let us know your experiences and brilliant ideas to push SPACE ID forward.

Moreover, for every applicant, claim an exclusive OAT Badge on Galxe. We’re honored to have you to facilitate us along the future adventure: <https://galxe.com/spaceid/campaign/GC4xNU6s4V>.


# SPACE ID Grant Program

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

The blockchain realm thrives on innovation. That’s why we’re excited to introduce the SPACE ID Grant Program, a long-term funding initiative designed to support and enrich the blockchain community. Our goal is to empower developers and entrepreneurs to launch innovative projects and spread your visions with us. Through this program, we aim to facilitate the growth of the blockchain community and advance the frontier of blockchain technology.

This will be a long-term program for eligible projects. Project selection and grant distribution will occur every two to four weeks, providing developers and entrepreneurs with the flexibility they need to concentrate on their projects. Read on to learn more details about the program.

## Eligibility Criteria <a href="#id-52bc" id="id-52bc"></a>

To qualify for the program, all participating projects must meet the following criteria:

* Be based on / supports either BNB Chain, Arbitrum One / Nova, Sei or Injective Network
* Have integrated SPACE ID Web3 Name SDK, domains (.bnb / .arb / .sei / .inj / .manta) powered by SPACE ID, other forthcoming TLDs empowered by our infrastructure, or build on top of SPACE ID ecosystem
* Have a fully functional mainnet version that is publicly available for everyone to use

## &#x20;<a href="#e693" id="e693"></a>

## Categories and Tracks <a href="#e693" id="e693"></a>

The SPACE ID Grant Program has two categories for projects:

1. Domain integration: Integrate Web3 Name SDK, Web3 domains with SPACE ID SDK / API.
2. Building on top of the SPACE ID Ecosystem: Launch innovative DApps that support SPACE ID web3 domains (including .bnb, .arb, .sei, .inj, .manta, and other forthcoming TLDs empowered by our infrastructure), deploy deeper DID integrations, improve domain utilities and find new use cases, etc.

There are five tracks available for applicants to apply:

* Wallet Track: Improves asset transfer & account UX through domains. MPC or smart contract wallets with Account Abstraction capabilities are especially encouraged.
* DApps Track: A decentralized web or cross-chain application that supports the use of memorable Web3 domains instead of wallet addresses.
* Gaming Track: An entertaining application that integrates domains to improve UX.
* Tooling Track: Web3 tools or infrastructure related to domains (e.g. search on-chain data via domains).
* CEX Track: Support asset deposit / withdrawal through domains.

## &#x20;<a href="#id-72a7" id="id-72a7"></a>

## Process of Application <a href="#id-72a7" id="id-72a7"></a>

The 1st season of project submission: May 9th — July 31st, 2023

The 2nd season of project submission: August 2nd — September 30, 2023

The 3rd season of project submission: October 16th — December 31st, 2023

The 4th season of project submission: January 5th — July 5th, 2024

The 5th season of project submission: August 1st — Dec 31st, 2024

The 6th season of project submission: January 1st — March 31st, 2025

The 7th season of project submission: April 20th — August 31st, 2025

The 8th season of project submission: September 20th — December 31st, 2025

**The 9th season of project submission: January 15th — July 15th, 2026**

The application process for the SPACE ID Grant Program is simple and straightforward. Once developers have completed the integration or launched a project on top of the SPACE ID ecosystem, you can submit an application for review. The applicants need to prepare all the relevant information and data about their project and fill out the [submission form](https://forms.gle/97rATaV8gHo4BCPE7). If you encounter any issues during the process, you can contact our CM *@nilah\_double* on Telegram.

*Note: If you plan to build a DApp specific to SPACE ID domain users, and your project is not yet live, please make sure that your product plan is fully developed and that you have prepared the necessary materials before submitting the project via the form.*

## &#x20;<a href="#f196" id="f196"></a>

## Integration Process Guide / Support <a href="#f196" id="f196"></a>

The SPACE ID Grant Program provides complete developer documentation and technical support to help developers integrate with the SPACE ID Protocol. [Technical documentation](https://docs.space.id/developer-guide/web3-name-sdk) is available to guide developers in integrating with the SPACE ID Web3 domains using SDK / API. If you are facing any technical problems, feel free to contact SPACE ID team on telegram: *@nilah\_double*, we’d be glad to offer technical support from SPACE ID dev team. We are excellent at helping teams with techniques to improve design, originality, and user experience.

Moreover, the SPACE ID Grant Program offers a monthly Mentor AMA session, featuring experts who provide valuable insights and tips on SPACE ID domain implementation and deployment in web3 DApps.

## &#x20;<a href="#id-6c86" id="id-6c86"></a>

## Assessment Criteria and Judging <a href="#id-6c86" id="id-6c86"></a>

Submitted projects will be evaluated by the SPACE ID core team based on the following criteria:

* **Daily Active Users:** The number of users who actively engage with the project on a daily basis.
* **Integration Utility:** The usefulness of the integration to users, with a focus on applications in gaming, wallet, social, DeFi, and other relevant areas.
* **Integration Strength:** The level of integration with SPACE ID, including its ability to resolve, reverse-resolve, support embedded registration, appear on leaderboards, provide chat functions, and display on marketplaces, among other features.

The SPACE ID Grant Program uses the above metrics to evaluate projects based on their respective tracks. For instance, for wallets, the program considers the number of unique total wallets created and the total wallet downloads, while for gaming DApps, it considers the number of users registered and daily active users.

## &#x20;<a href="#f7c9" id="f7c9"></a>

## Grant Allocation <a href="#f7c9" id="f7c9"></a>

**SPACE ID Grant Program Season 3 is happening right now**, and it provides a wide range of grant, which depends on the project’s popularity and the kind of utility it provides for SPACE ID domain holders. After the integration or the project is complete, the program evaluates each submission on a case-by-case basis, allowing a more personalized and thorough evaluation process for each submission.

The funding mechanism for the Grant Program will go through the SPACE ID DAO governance process.

No more waiting! Submit your application today: <https://forms.gle/97rATaV8gHo4BCPE7>


# SPACE ID Referral Program

## What is .bnb referral program？

SPACE ID Referral program is a comprehensive system dedicated to leading our community to the next level: when your friends or your community register for .bnb domains using your referral link, you can now receive up to 15% of the invitees’ registration fees.

The commission rate is affected by the quantity of invitees.

See below for the detailed referral rules.

<figure><img src="/files/0Uj6GBakeP6dklJ0fWXQ" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Set primary name is a prerequisite for getting the referral link.
{% endhint %}

Besides, we’re offering an exclusive referral rate to projects, communities and integration partners. If interested, please dm the SPACE ID team on Telegram (@Arton07 and @Nilah\_double)

## Referral Program Rules (MUST READ）

* **Setting primary name is a prerequisite**. If users haven’t set the primary name, they can not generate referral links or receive any referral commissions.
* The record addresses of the inviters’ .bnb Domains will receive the commissions after the invitees complete the domain registrations.
* The number of invitations **is permanently** **recorded on the domain name and is on-chain**, regardless of the owners, sales or expirations.
  * Example 1: User A previously had allen.bnb with 700 domain invitations completed, and User B bought it from the marketplace and set allen.bnb as the primary name, then User B could get the 15% as the commission from each registration with allen.bnb referral link. However, User A starts to use allen123.bnb as the primary name which has 0 domain invitations, then User A gets 5% as the commission from each registration by allen123.bnb referral link.
  * Example 2: User A previously owned arton.bnb with 700 domain invitations. User B bought it from the marketplace and did NOT set arton.bnb as the primary name (the record address of arton.bnb is still user A’s address), then User B can NOT get the 15% commission from each registration by the arton.bnb referral link, while User A can still receive 15% as the commission if the record address of arton.bnb hasn’t been changed.
* Commission = Commission rate \* Registration fees paid with BNB. If the invitee registers the domain using gift cards, the part of the registration fees paid with SPACE ID Points will not be counted into the commission.

## Get your referral links

Step 1:

Go to [space.id](https://space.id) and connect with your wallet. You can access your referral page by clicking “Referral” after clicking on your profile picture in the top right corner.

![Untitled](/files/LRX0c7JcQ8gn0IrE1UjT)

Step 2:

Your referral link will be generated automatically only after you set your primary name. You can share this link with invitees directly or on Twitter.

You can also invite friends by sharing the QR code image by clicking the “QR” button.

![Untitled](/files/T38iR5vfoeiDUCCF0AIQ)

![Untitled](/files/hrhLbpP2ob70gNupjrRB)

**If you haven’t set your primary name, you will NOT be able to get the referral links.**

To set your primary name:

* Click on your profile image, and select "My Domains" from the dropdown menu.
* Click the edit buttons in the "Primary Names" section located in the top right corner and set it up.

![Untitled](/files/9GbUqdhAVwChNQ2zx5jm)

##

## Understand your referral profile

![Untitled](/files/TgOqyxKsAdVNO6ACXTQu)

#### Referral stats

Referral stats are on the right side of the referral profile. It indicates the referral level and the corresponding commission rate.

#### Commission

You will receive a certain percentage of the invitees’ registration fees when the invitees register for domains using your referral link as the commission.

The commission rate is correlated to the number of invitees (The number of users that a .bnb Domain holder invites and complete the registration). Your commission rate is shown next to the “Inviter’s earning”.

At the bottom of the referral profile page, you can see your total commission that hasn’t been withdrawn.

#### Referral link

Your Referral link will be generated automatically and can be copied, shared with a QR code, or shared directly on Twitter.

#### Withdraw

You can withdraw your commission to your wallet anytime.

You can also view the “withdrawal history” by clicking the icon beside the “withdraw” button.

##

## Register for a .bnb Domain with a referral link

For new users, once you clicked other people’s referral links, you will be redirected to this page.

Every new user will receive a locked Voyage Box. To unlock it, please register a .bnb/.arb name and set it as the primary name. Click "Register".

Follow this [tutorial](https://docs.space.id/user-tutorials/register-for-a-.bnb-domain) to learn how to register for a web3 Domain.

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


# SPACE ID Gift Card

Gift cards are always considered as a versatile means of conveying a great deal of warm concern to others, and now we present you the SPACE ID Gift Card feature.

We know it’s always a nuisance when trying to gift your close one a domain: you have to ask for their preference, check its availability, mint & finally get to transfer it.

Well, how about buying an Gift Card to cover the cost and just simply transfer it!

###

### SPACE ID Gift Card & SID Point

SPACE ID Gift Card is an NFT, which means that it can be listed and transferred. At the same, it contains values that can be redeemed into SID Point.

SID Point can be used exclusively on the SPACE ID Mainnet for the purchase purpose. It can be redeemed through the gift cards you have purchased or received from events or giveaways.

SID Point is 1:1 to USD.

We currently offer 3 kinds of SPACE ID Gift Cards with different values: $650, $160, and $5, which can be redeemed into 650, 160, and 5 SID Points.

###

### How to Purchase Gift Card

Step 1:

Go to <https://space.id/profile/domains> and connect to your wallet.

In your SPACE ID profile page, you can select different Gift card sessions on the top left parts besides the “.bnb Primary Name” or “.arb Primary Name”, and the page for managing SPACE ID Gift Card will show up.

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

Step 2:

Select “Mint”&#x20;

You can select Gift Cards with different face values and select the amount of corresponding Gift Cards you want to purchase by clicking “+” or “-”.&#x20;

After selecting the quantities for different gift cards, you can see the corresponding estimated total fees.&#x20;

By clicking “Mint” button, you may request for the wallet sign and the payment transaction. This may take a few minutes.

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

<figure><img src="/files/3sEzi6eDyralxoHt80GF" alt=""><figcaption></figcaption></figure>

Step 3:

After the transaction is completed, “Successfully Minted” will show up and you can click “ok” to go back to your profile page.&#x20;

Your purchased gift card will be minted to your address, which can be viewed, redeemed, and transferred on the SPACE ID Mainnet.

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

###

### How to Redeem SPACE ID Gift Card

Step 1:

Go to<https://space.id/profile/domains> and connect to your wallet.

In your SPACE ID profile page, you can select different Gift card sessions on the top left parts besides the “.bnb Primary Name” or “.arb Primary Name”,and the page for managing SPACE ID Gift Card will show up.

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

Step 2:

Select “Redeem”

To redeem your Gift Card to SID Points, select the type and the numbers of Gift Cards by clicking “+” or “-”. You will see the corresponding SID Points below.

Click the “Redeem” button to finish redeeming Gift Cards.

> ⚠️ you will only see the available gift cards on that page.

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

Step 3:

After the transaction is completed, “Successfully Redeem” will show up and you can click “ok” to go back to your profile page.

> ⚠️ SID Point is not refundable or transferrable.

![](/files/GlvZziDd3rTXF2jTAYHJ)

### How to Transfer Gift Card

Step 1:

Go to <https://space.id/profile/domains> and connect to your wallet.

In your SPACE ID profile page, you can select different Gift card sessions on the top left corner besides the “.bnb Primary Name” or “.arb Primary Name”, and the page for managing SPACE ID Gift Card will show up.

![](/files/luEPXrMhIaUOLvpi7D0u)

Step 2:

Select “Transfer”

To transfer gift cards to someone else, select the value and the amount of gift cards by clicking “+” or “-”.

Enter the recipient’s .bnb domain/.arb domain or traditional address, and click “Transfer”.

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

> ⚠️ An error message “Address not found” means that the recipient has not set up the SPACE ID primary name, and you will not be able to transfer the gift card via domain name you entered. In this case, you have to enter the recipient’s traditional address instead.

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

Step 3: After the transaction is completed, “successfully Transfer” will be shown and you can click “ok” yo go back to your profile page.

###

### How to Register Domain with SID Points

After redeeming SPACE ID Gift Cards for SID Points, you are ready to put those points into work!&#x20;

During the domain registration process, there is a step that you can can select you registration period and see the corresponding estimated fees, and right now you will be able to select “SID Point” and use it to cover the registration fees.

![](/files/Pdv8qLfV4zKiyvRblcFZ)

By select “.bnb credits” button or “.arb credits” button, you can view the the updated estimated cost after using your SID Points.

> ⚠️ If your SID Points are enough to cover the total cost of registration, you will only need to pay the gas fee. If the SID Point cannot cover the total cost of the registration, you will need to pay the rest of registration fees and the gas fee.

###

### How to Extend Domain with SID Point

When extending the registration of your .bnb/.arb Domain, you now have the option to use “.bnb credits” or “.arb credits” to cover the cost of your registration extension.&#x20;

In the “Extend” pop up window, click select “.bnb credits” button or “.arb credits” button, and you will be able to view the updated estimated payment cost.

![](/files/U8EuWD1sqHKxErJevbbh)

> ⚠️ If your SID Points are enough to cover the total cost of the registration extension, you will only need to pay the gas fee. If the SID Point cannot cover the total cost of the registration extension, you will need to pay the rest of registration fees and the gas fee.


# SPACE ID Cosmic Council

Introducing **Cosmic Council**, a contributor program for the SPACE ID community.

If you’re passionate about contributing to the advancement of SPACE ID and the Web3 industry, or have a unique skill set in Web3, marketing, development, language, or other relevant areas, we want you be a part of Cosmic Council!

At SPACE ID, we value collaboration and community building. That’s why we’re excited to announce the launch of this program, which is now open to everyone. As a contributor, you’ll be able to streamline your experience stepping into the SPACE ID community and shine with a bigger role.

## Who You Are <a href="#b095" id="b095"></a>

As a contributor, you are an individual who is passionate about SPACE ID and eager to get more involved with the development of the SPACE ID ecosystem. You are currently engaging and networking with others in the Web3 community and have a unique skill set in Web3, community building, marketing, development, languages, or other relevant areas.

But more importantly, you do not need to submit an application or form to join the contributor program. You are free to join and start anytime in our Discord.

## What You’ll Do <a href="#c8b3" id="c8b3"></a>

To become a contributor, simply react on an emoji in the ‘get-roles’ channel to get a new role called “**Cosmic Recruit**” and access the contributor program category on SPACE ID discord. Once you are in, you will see three different guilds in the program:

* **Community Guild**: for onboarding newcomers, helping fellow members, community events.
* **Marketing Guild**: for external brand promotion, informative social media content.
* **Research Guild**: for keeping the community educated, sharing exciting Web3 happenings.

You don’t need to assign yourself to any task, just submit your contribution on the specific and corresponding channel. In time, we will be manually selecting members who continuously contribute to SPACE ID in a high quality manner, and reward them with the Tier II contributor role called ‘**Cosmic Astra**’.

The selection process for Cosmic Astra depends entirely on the SPACE ID team, and there is no specific timeline in which a role may be given.

## What You’ll Earn <a href="#id-9e6d" id="id-9e6d"></a>

As a SPACE ID contributor, you’ll have access to a wide range of resources and benefits, including:

* Unique opportunity to become a Space Nova for support, guidance, and opportunities in SPACE ID.
* Kickstart your Web3 career with hands-on experience and make your name known in the SPACE ID and Web3 industry.
* Opportunities to connect with creators, developers, and key members of our community.
* Official support or funds from the SPACE ID team when organizing online or offline events.
* Limited, unique badges and SPACE ID swag.

## How You Can Contribute <a href="#id-1b81" id="id-1b81"></a>

Depending on the different guilds, we will share general contribution directions as to how you can contribute. The possibilities are endless, depending on your background and skills. We’ll also listen and support initiatives that you think can benefit the SPACE ID community.

You do not need to pick a specific guild you can contribute to. You are able to contribute to all of the guilds if you wish to do so!

At SPACE ID, we believe that collaboration and community building are key to building a better future. Join our contributor program today and help us shape the future of the Web3 industry!


# SPACE ID Voyage Season 2 - Calling

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

It’s about time for us to embark on a new Voyage journey. In the SPACE ID Voyage Season 2, we're excited to have even more SPACE ID enthusiasts and elites in the search for even greater treasures.

So what are we doing exactly in the second season? In short, start by inviting new friends, opening mystery boxes, and claiming points… Let’s break it down for y’all!

## Event Timeline

The SPACE ID Voyage Season 2 Calling will begin on March 19th at [space.id/voyage/season-2](http://space.id/voyage/season-2).

You can start claiming your Voyage boxes starting from March 19th, 2023. Then, starting from March 23rd, 2023, all participants can open the Voyage boxes and begin tracking points.

The end time of the Voyage Season 2 event will be announced at a later time.

## How to participate?

**Voyage Season 2** is open to all new and existing users.

* A new user is defined as someone who registers a .bnb or .arb domain after March 10th, 2PM UTC (which is the snapshot time for Early Adopter Airdrop).
* An existing user is defined as someone who was eligible for the Retroactive Early Adopter Airdrop, and who held a .bnb or .arb domain before March 10th, 2PM UTC.

While some may compare this campaign to SPACE ID's Referral Program, it takes the concept to the next level by offering even more rewards and excitement:

* Every new user will receive a locked Voyage Box to get started. The starting box may be different for everyone based on the user’s past on-chain activities.
* If a user joins Voyage Season 2 from another user's referral link, the inviter will also receive a Voyage Box in addition to their regular commission. The rarity of the Voyage Box received by the inviter will be the same as the invitee's.
* There are three types of Voyage Boxes of varying rarity, each containing random points that can be claimed after it is unlocked. The box with the higher rarity will give you more points:
  * Voyage Uncommon Box,
  * Voyage Rare Box, and
  * Voyage Legendary Box.
* The previous Referral Program records of existing users will be converted into an equivalent number of Voyage Uncommon Boxes, which will be airdropped to their corresponding addresses.
* Please note that any Voyage Box received before March 23rd can only be unlocked for points on March 23rd. After March 23rd, all boxes can be unlocked for points immediately.
* The top 100 users with the highest total points will also receive additional boosts based on their rankings. The ID token rewards will be distributed at the end of Season 2.

## Voyage **Boxes Explained**

### Voyage Legendary Box

*Which new users are eligible?*

The holders of blue chip NFTs and ENS.

* NFT collections are selected by their historical trading volume, including for example BAYC, Azuki, ENS, etc., and the snapshot of those NFT holders was taken on March 16th, 2PM UTC.
* Check the eligible addresses and collections here: <https://docs.google.com/spreadsheets/d/1s3NbdWmLbn91a-8ncBOt33p1kh6Z4SzZVJCAAphxkpM/edit?usp=sharing>

### Voyage Rare Box

*Which new users are eligible?*

* The new user has held a certain number of native tokens (ETH, BNB, ARB) across blockchains
* or the address holds Galxe Passport

### Voyage Uncommon Box

*Which new users are eligible?*

If you are not eligible for the Legendary and Rare Box, you will receive an Uncommon Box instead.

## Get started with your Voyage Season 2 now!

### For new users

Step 1: Begin your journey by connecting your wallet on [space.id/voyage/season-2](http://space.id/voyage/season-2)

Step 2: For every new user, you will receive a locked Voyage Box. To unlock it, please register a .bnb/.arb name and set it as the primary name.

Step 3: If someone invites you to SPACE ID, fill in the inviter's domain!

Step 4: Generate your own referral link. Earn more boxes by inviting new users to register a .bnb or .arb domain via your referral link and make sure they unlock their first Voyage Box.

![Screenshot 2023-03-19 at 21.11.57.png](/files/iS5g9bfoCcQTwWJQ1TxL)

💡 Please note that failing to claim your first Voyage Box will not affect your referral stats, but it will make all your Voyage Boxes invisible on the Voyage page. We recommend that you unlock & claim your first Voyage Box ASAP in order to unlock the rest of them

### For existing users

Step 1: Begin your journey by connecting your wallet on [space.id/voyage/season-2](http://space.id/voyage/season-2)

Step 2: Copy your referral link and share it with your friends

Step 3: Earn more boxes by inviting new users to register a .bnb or .arb domain via your referral link and make sure they unlock their first Voyage Box.

Have fun and enjoy your Voyage journey!


# Using Domain on MetaMask Snap


# Knowledge Base

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

**How to resolve domain name to address? Is it safe to transfer assets by directly entering a domain name?**

The domain-to-address resolution works like this:

1. **Domain Registration:** A user registers a Web3 domain on SPACE ID, which is linked to their wallet address. This mapping is stored on the blockchain.
2. **Resolution Protocol:** SPACE ID use smart contracts to manage the link between domains and addresses, ensuring the data is secure and tamper-proof.
3. **Query Process:** When someone enters a Web3 domain (e.g., `alice.bnb`), a query is sent to the blockchain to retrieve the corresponding wallet address.
4. **Return Address:** The system returns the wallet address tied to the domain, allowing users to interact with that address for transactions, etc.

This ensures a decentralized, secure way to resolve domain names to wallet addresses.

**Do I need to set a primary name to enable SPACE ID Web3 Domain Snap?**

Setting the primary name on each chain ensures the uniqueness of the reverse resolution process, where an address is resolved to its associated domain name. However, the SPACE ID Web3 Domain Snap performs resolution from the domain name to the wallet address, and this does not require setting a primary name.

**If my domain expires, will the resolution of the domain name and address become automatically invalid?**

Yes, once a domain expires, the resolution between the domain and the address will be invalid, meaning that entering the domain will no longer point to your wallet address. If someone else registers the domain, it will be directed to the new registered address.

For domains registered on SPACE ID, once the registration period ends, the domain will automatically enter a 90-day Grace Period. During the grace period, the domain name will be reserved only for its previous registrant to expand its registration. After the grace period, the name will not be reserved and will be open to the public to register, and once registered, it will resolve to the new address.

We recommend that you renew your domain in a timely manner and double-check the address when sending assets using a domain to prevent any errors due to domain expiration.

**How can I renew my domain?**

You can extend your domain registration anytime during the registration period and within 90 days after it expires, which is 90-day grace period. During the grace period, the domain name will be reserved only for its previous registrant to expand its registration. After the grace period, the name will not be reserved and will be open to the public to register.

To renew your domain, access the domain info page on SPACE ID, click "Extend" to make the change.

**Is SPACE ID Web3 Domain Snap applicable on non-EVM chains?**

Currently, although SPACE ID has provided domain services on non-EVM chains such as Sei Name Service and Injective Name Service, the .sei and .inj domains cannot yet be resolved to their associated non-EVM chain addresses through the SPACE ID Web3 Domain Snap. We are working towards integration of these non-EVM chain domain services in future updates.


# General FAQ

1. **What is the SPACE ID Web3 Domain Snap?**
   * Snaps are modular extensions for MetaMask that allow developers to add custom features while enhancing the wallet's functionality in a secure, permissioned environment. The **SPACE ID Web3 Domain Snap** is an extension for MetaMask that allows users to integrate and interact with SPACE ID's Web3 domain services and Payment IDs directly within the MetaMask wallet.
2. **How does the SPACE ID Web3 Domain Snap work?**
   * The **SPACE ID Web3 Domain Snap** allows domain names across all EVM chains and Payment IDs registered on SPACE ID to be resolved into addresses within the MetaMask wallet. This enables users to transfer assets simply by entering a domain name (e.g., jerry.bnb) or a Payment ID (e.g., jerry\@binance).
3. **Which Name Services are supported by the SPACE ID Web3 Domain Snap?**
   * All name services issued by SPACE ID and deployed on EVM-compatible chains are supported by SPACE ID Web3 Domain Snap, meaning that all registered domains can be resolved to addresses within MetaMask and used for direct transfers. Currently, we support 22 name services, including .eth, .bnb, .arb, .taiko, .mint, .mode, .floki, .zeta, .zkf, .tomo, .burger, .gno, .ail, .cake, .merlin, .alien, .manta, .ll, .mph, .g, .duck, .ip. More TLDs are coming soon! Check out all the name services powered by SPACE ID at [https://space.id/tld,](https://space.id/tld) and register your own unique domain name!
4. **What is the Payment ID and how does it work?**
   * Powered by SPACE ID, **Payment ID** is a feature designed to simplify crypto deposits and payments across web3 wallets and centralized exchanges (CEXs). This initiative aims to establish SPACE ID as the leading Web3 solution for streamlined crypto transactions and the SPACE ID MetaMask Snap as the leading web3 plugin for streamlined crypto payments.
   * In wallets integrated with Payment ID resolution, such as MetaMask, users can simply enter a Payment ID, like jerry\@binance, to transfer assets to Jerry's Binance address on the current chain. Similarly, jerry\@okx will direct to his OKX deposit address, and so on.
5. **How do I enable the SPACE ID Web3 Domain Snap?**
   * To use Snap, you’ll need a MetaMask wallet. If you haven’t downloaded MetaMask yet, please refer to this [tutorial](https://docs.space.id/getting-started/tutorials/set-up-a-wallet).
   * Please note that this Snap is only compatible with MetaMask Extension version 12.4.2 and up. Make sure you are on the latest version of the MetaMask Extension before adding this Snap to MetaMask. Check the [detailed tutorial](https://support.metamask.io/managing-my-wallet/using-metamask/how-to-update-the-version-of-metamask/) to update your MetaMask Extension.
   * To enable the SPACE ID Web3 Domain Snap, visit the SPACE ID MetaMask Snap [landing page](https://space.id/metamask) or install it directly on [Metamask Snap directory](https://snaps.metamask.io/). By doing so, you'll be prompted to install the Snap as a plugin to your existing MetaMask wallet.
   * The method to upgrade the Snap is the same as downloading it. Simply reconnect your wallet and sign again on SPACE ID, or click "Upgrade" in the [MetaMask Snap directory](https://snaps.metamask.io/snap/npm/web3-name-sdk/snap/).
6. **Is the SPACE ID Web3 Domain Snap free to use?**
   * Yes, the SPACE ID Web3 Domain Snap is free to use. What users need to pay is the domain registration fee and the gas fee for transferring assets in the MetaMask wallet. SPACE ID does not charge any fees for the functionality of SPACE ID Web3 Domain Snap.
7. **Regarding the potential data tracking during SPACE ID Snap usage.**
   * Users can choose whether to share the address used to download the Snap, along with the domain name or Payment ID resolved by Snap, with SPACE ID during the pop-up signature process. User data will not be disclosed externally and will only be recorded on SPACE ID’s Google Analytics, used internally by SPACE ID to analyze Snap usage for product optimization, or for tracking download addresses and distributing rewards in Snap-related campaigns.
8. **Did the SPACE ID Web3 Domain Snap pass any security audits?**
   * Yes, it has been audited by [Slowmist](https://github.com/slowmist/Knowledge-Base/blob/master/open-report-V2/blockchain-application/SlowMist%20Audit%20Report%20-%20web3-name-snap_en-us.pdf).
9. **How do I reach out for Snap support?**
   * Currently, Snaps are only available in the MetaMask browser extension v12.4.2 and up, and they’re not supported on Mobile App. You can contact support by joining [SPACE ID’s Discord](https://discord.com/invite/spaceid).


# Payment ID

## Payment ID Introduction

Payment ID is an innovative solution that simplifies crypto transactions across different exchanges and chains by using a human-readable identifier. Inspired by the domain name system, Payment ID allows users to register their own identifier (like jerry\@binance) that maps to various wallet addresses across different blockchains. The system enables Web2 users to interact with blockchain applications through their familiar email addresses, while EOA and contract users can interact directly with the system on-chain.

### Why ZK Email?

ZK Email provides a privacy-preserving way for Web2 users to experience our system using just their email. Through zero-knowledge proofs (ZKPs), users can verify ownership of their email addresses without revealing the actual email content or address on-chain. This creates a seamless bridge between familiar Web2 identity (email) and Web3 functionality, while maintaining user privacy.

ZK Email authentication enables:

* Privacy-preserving identity verification
* Familiar Web2 UX for Web3 interactions
* Trustless ZKP verification without revealing sensitive information

***

### The Problem

The current cryptocurrency landscape presents several challenges for users:

* **Address Complexity**: Wallet addresses are lengthy, random strings that are impossible to memorize
* **Cross-Chain Confusion**: Different blockchains use different address formats
* **Exchange-Specific Addresses**: Each exchange generates unique deposit addresses for users
* **Error Risk**: Sending to incorrect addresses often results in permanent fund loss
* **Poor User Experience**: Managing multiple addresses across platforms is cumbersome

### The Solution

Payment ID solves these problems by creating a unified, human-readable identifier system:

* **Simple Identifiers**: Use meaningful names like `jerry@binance` instead of complex addresses
* **Cross-Chain Compatibility**: A single identifier resolves to the correct address regardless of blockchain
* **Contextual Resolution**: The system automatically determines the appropriate address based on the network you're using
* **Error Prevention**: Transactions only proceed when properly resolved to valid addresses
* **Easy Management**: Control all your addresses across exchanges and wallets from one interface

With Payment ID, users only need to remember a single, customizable string that can be resolved to the appropriate wallet address on any supported blockchain or exchange.

<figure><img src="/files/y99iAloFEGVjrKq86jfg" alt=""><figcaption><p>Payment ID mapping example</p></figcaption></figure>


# Architecture

### Overview

The Payment ID system with OAuth integration provides a seamless way for users to register and manage human-readable identifiers across blockchain networks using only their email. The architecture leverages ZK Email OAuth for authentication and ephemeral key management, eliminating the need for users to manage private keys or interact directly with the blockchain.

### Key Components

| Component               | Description                                                                                    |
| ----------------------- | ---------------------------------------------------------------------------------------------- |
| ZK Email OAuth SDK      | Provides email-based authentication and ephemeral key generation for seamless user onboarding. |
| Registration Controller | Manages the registration process for Payment IDs and initializes resolver records.             |
| PID Contract            | ERC-721 token contract representing ownership of Payment IDs as transferable NFTs.             |
| PID Registry            | Core registry maintaining relationships between token IDs, owners, and resolvers.              |
| Public Resolver         | Resolves Payment IDs to blockchain addresses across different networks.                        |
| Email Wallet Core       | Underlying infrastructure handling email verification and transaction execution.               |
| Wallet                  | Singleton wallet for email users                                                               |

### Login Flow

1. **Email Sign-In**: User provides their email address to sign in or sign up through the dApp.
2. **OAuth Request**: The `OauthClient` sends a request to the relayer to initiate the email-based authentication.
3. **One-Time Email Reply**: User receives an email and authenticates by simply replying to it.
4. **Ephemeral Key Generation**: The OAuth SDK generates an ephemeral ECDSA key for the browser session.
5. **Key Activation**: The ephemeral key is activated on-chain once the email proof is verified.

### Registration Flow

1. **Payment ID Registration**: User selects a Payment ID to register (e.g., `alice@binance`).
2. **Transaction Construction**: The dApp constructs a transaction to the Registration Controller.
3. **OAuth Execution**: The transaction is executed via the ephemeral key using `oauthExecuteTx`.
4. **PID Minting**: The Registration Controller mints a new PID token to the user's Email Wallet address.
5. **Record Setup**: The PID Registry and Resolver are updated with the appropriate records.

<figure><img src="/files/28NA5FlAO64mhFxV8AFf" alt=""><figcaption><p>Workflow</p></figcaption></figure>

### Contract Functions

Registration Controller

| Function    | Description                                                                  |
| ----------- | ---------------------------------------------------------------------------- |
| `register`  | Registers a new Payment ID, minting a token and setting up resolver records. |
| `available` | Checks if a Payment ID is available for registration.                        |

PID Contract

| Function       | Description                                                     |
| -------------- | --------------------------------------------------------------- |
| `register`     | Mints a new token representing the Payment ID.                  |
| `transferFrom` | Transfers ownership of a Payment ID, updating registry records. |

PID Registry

| Function      | Description                                   |
| ------------- | --------------------------------------------- |
| `setRecord`   | Sets both owner and resolver for a token ID.  |
| `setOwner`    | Updates ownership information for a token ID. |
| `setResolver` | Updates resolver information for a token ID.  |

Public Resolver

| Function  | Description                                                     |
| --------- | --------------------------------------------------------------- |
| `setAddr` | Sets address records for different chains and source types.     |
| `addr`    | Retrieves address records for specific chains and source types. |

### Security Considerations

| Consideration           | Description                                                                           |
| ----------------------- | ------------------------------------------------------------------------------------- |
| Email Privacy           | User email addresses remain private through ZK proofs, never exposed on-chain.        |
| Key Management          | Ephemeral keys are generated per session, reducing risks of permanent key compromise. |
| Transaction Limitations | Ephemeral keys can be configured with expiration times and token allowances.          |
| Session Integrity       | The OAuth system ensures that only authenticated users can perform operations.        |


# ZK Email Oauth Login

### Overview

[ZK Email OAuth](https://docs.zk.email/login-with-zk-email-oauth-api) is a revolutionary technology that combines email authentication with zero-knowledge proofs to enable secure, privacy-preserving user authentication on blockchains. This system leverages existing email infrastructure, particularly DKIM (DomainKeys Identified Mail) signatures, to create a trustless bridge between Web2 and Web3, while offering a simple OAuth-like user experience.

### Oauth SDK

The OAuth SDK is a specialized component of the ZK Email ecosystem that enables users to authenticate with their email and execute blockchain transactions through ephemeral keys. It simplifies user onboarding and interaction with blockchain applications without requiring private key management.

### Key Features

| Feature                | Description                                                                                                             |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| **Single Email Reply** | Users only need to reply to one email to authenticate, unlike Email Wallet which requires replies for each transaction. |
| **Ephemeral Keys**     | Generates session-based keys that allow for multiple transactions after initial authentication.                         |
| **Token Allowances**   | Configurable limits on what the ephemeral key can access or transfer.                                                   |
| **Natural Usernames**  | Supports registration and authentication with human-readable usernames.                                                 |
| **Expiry Controls**    | Optional time limitations for ephemeral key validity.                                                                   |
| **Singleton Wallet**   | Creates a deterministic wallet address for each unique email user.                                                      |

### Authentication Flow

1. **Initial Request**: User enters their email address in the dApp interface
2. **Email Sending**: Relayer sends an authentication email to the user
3. **Email Reply**: User simply replies to the email to verify ownership
4. **ZK Proof Generation**: Relayer generates a zero-knowledge proof of the email verification
5. **Ephemeral Key Activation**: Upon verification, an ephemeral key is activated on-chain
6. **Transaction Execution**: User can now execute multiple transactions using the ephemeral key
7. Integration with Payment ID

In the Payment ID system, the OAuth SDK enables users to:

* Authenticate with just their email address
* Register Payment IDs without managing private keys
* Execute transactions through ephemeral session keys
* Manage their Payment ID settings through the dApp interface


# Key Terms

* **Payment ID:** A human-readable identifier (like alice\@binance) that maps to multiple blockchain addresses across different sources and networks.
* **ZK Email:** A privacy-preserving technology that uses zero-knowledge proofs to verify email ownership and content without revealing the actual email address on-chain, serving as the identity layer for Payment ID.
* **Wallet:** A deterministic smart contract wallet derived from a user's email address using zero-knowledge proofs. Each email maps to exactly one wallet, providing a consistent on-chain identity while keeping the email private and enabling transaction execution through ephemeral session keys.
* **PID Token:** An ERC-721 non-fungible token that represents ownership of a Payment ID, allowing for transfers and delegated management.
* **Resolver:** A smart contract that maps Payment IDs to blockchain addresses based on the source context (exchange/wallet/anything) and blockchain network.
* **Source Type:** An identifier for different sources of funds (exchanges, wallets, anything) that allows a single Payment ID to have different addresses for different contexts (e.g., @binance, @metamask, @mytopaccount).


# Core Contracts

### PID

`PID` is the core NFT contract that represents Payment ID ownership as ERC-721 tokens. It handles token registration, transfers, and delegates ownership and resolver management to the PIDRegistry contract. This contract implements the tokenized representation of Payment IDs, allowing them to be transferred, approved, and managed like standard NFTs.

### PIDRegistry

`PIDRegistry` is a core contract in the Payment ID system that manages the mapping between tokenIds and their respective owners and resolvers. It serves as the central registry for all Payment ID records, maintaining ownership information and resolver configurations for each tokenId.

### RegistrationController

`RegistrationController` is a contract that manages the registration process for Payment ID tokens. The contract allows users to register new Payment IDs and configure their address records across different source types and chains. It enforces registration rules and ensures proper initialization of associated resolver records.

### AddrResolver

AddrResolver is an abstract contract responsible for managing address records associated with Payment ID tokens, supporting both direct updates and signature-based authorization.

### PublicResolver

`PublicResolver` is a contract that provides additional functionality for managing operator approvals and registration controllers for Payment ID tokens. The contract supports both direct and signature-based authorization.


# PID

### Overview

`PID` is the core NFT contract that represents Payment ID ownership as ERC-721 tokens. It handles token registration, transfers, and delegates ownership and resolver management to the PIDRegistry contract. This contract implements the tokenized representation of Payment IDs, allowing them to be transferred, approved, and managed like standard NFTs.

### Key Concepts

| Concept              | Description                                                                           |
| -------------------- | ------------------------------------------------------------------------------------- |
| NFT Representation   | Each Payment ID is represented as a unique ERC-721 token.                             |
| Registry Integration | Maintains synchronization with PIDRegistry when tokens are transferred or registered. |
| Controller Pattern   | Only authorized controller contracts can register new Payment IDs.                    |
| Ownership Management | Extends OpenZeppelin's Ownable2Step for secure contract ownership management.         |

### Data Structures

State Variables

| Name        | Type         | Description                                                        |
| ----------- | ------------ | ------------------------------------------------------------------ |
| registry    | IPIDRegistry | Reference to the PID Registry contract.                            |
| totalAmount | uint256      | Counter for the total number of minted Payment IDs.                |
| controller  | address      | Address of the authorized controller that can register new tokens. |

### Functions

Constructor

```solidity
constructor(address _initialOwner) public
```

| Input Parameter | Type    | Description                            |
| --------------- | ------- | -------------------------------------- |
| \_initialOwner  | address | Address of the initial contract owner. |

Initialization

init

```solidity
function init(address _registry, address _controller) external onlyOwner
```

| Input Parameter | Type    | Description                           |
| --------------- | ------- | ------------------------------------- |
| \_registry      | address | Address of the PID Registry contract. |
| \_controller    | address | Address of the controller contract.   |

| Reverts                   | Description                                            |
| ------------------------- | ------------------------------------------------------ |
| PID\_\_AlreadyInitialized | Thrown when the contract has already been initialized. |
| PID\_\_InvalidRegistry    | Thrown when the registry address is zero.              |
| PID\_\_InvalidController  | Thrown when the controller address is zero.            |

Token Registration

register

```solidity
function register(uint256 id, address owner, address resolver) external onlyController returns (uint256)
```

| Input Parameter | Type    | Description                          |
| --------------- | ------- | ------------------------------------ |
| id              | uint256 | The token ID to register.            |
| owner           | address | The address that will own the token. |
| resolver        | address | The resolver address for the token.  |

| Returns | Description              |
| ------- | ------------------------ |
| uint256 | The registered token ID. |

| Reverts                 | Description                                     |
| ----------------------- | ----------------------------------------------- |
| PID\_\_NameAlreadyTaken | Thrown when the token ID is already registered. |
| PID\_\_OnlyController   | Thrown when caller is not the controller.       |

Token Transfers

transferFrom

```solidity
function transferFrom(address from, address to, uint256 tokenId) public override(ERC721, IERC721)
```

| Input Parameter | Type    | Description                   |
| --------------- | ------- | ----------------------------- |
| from            | address | Current owner of the token.   |
| to              | address | Address to receive the token. |
| tokenId         | uint256 | ID of the token to transfer.  |

| Reverts                   | Description                                        |
| ------------------------- | -------------------------------------------------- |
| PID\_\_NotApprovedOrOwner | Thrown when caller is not token owner or approved. |

safeTransferFrom

```solidity
function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public override(ERC721, IERC721)
```

| Input Parameter | Type    | Description                               |
| --------------- | ------- | ----------------------------------------- |
| from            | address | Current owner of the token.               |
| to              | address | Address to receive the token.             |
| tokenId         | uint256 | ID of the token to transfer.              |
| \_data          | bytes   | Additional data with no specified format. |

| Reverts                   | Description                                        |
| ------------------------- | -------------------------------------------------- |
| PID\_\_NotApprovedOrOwner | Thrown when caller is not token owner or approved. |

Availability Check

available

```solidity
function available(uint256 id) public view returns (bool)
```

| Input Parameter | Type    | Description                         |
| --------------- | ------- | ----------------------------------- |
| id              | uint256 | Token ID to check availability for. |

| Returns | Description                                             |
| ------- | ------------------------------------------------------- |
| bool    | `true` if the token ID is available, `false` otherwise. |

Internal Functions

\_isApprovedOrOwner

```solidity
function _isApprovedOrOwner(address spender, uint256 tokenId) internal view returns (bool)
```

| Input Parameter | Type    | Description                    |
| --------------- | ------- | ------------------------------ |
| spender         | address | Address to check for approval. |
| tokenId         | uint256 | Token ID to check.             |

| Returns | Description                                                |
| ------- | ---------------------------------------------------------- |
| bool    | `true` if spender is owner or approved, `false` otherwise. |

\_safeMint

```solidity
function _safeMint(address _to, uint256 _tokenId, bytes memory _data) internal virtual override(ERC721)
```

| Input Parameter | Type    | Description                               |
| --------------- | ------- | ----------------------------------------- |
| \_to            | address | Address receiving the token.              |
| \_tokenId       | uint256 | ID of token to mint.                      |
| \_data          | bytes   | Additional data with no specified format. |

### Events

| Event             | Parameters                                     | Description                                     |
| ----------------- | ---------------------------------------------- | ----------------------------------------------- |
| RegistryUpdated   | (address oldRegistry, address newRegistry)     | Emitted when the registry address is updated.   |
| ControllerUpdated | (address oldController, address newController) | Emitted when the controller address is updated. |
| NameRegistered    | (uint256 id, address owner, address resolver)  | Emitted when a new Payment ID is registered.    |

### Errors

| Error                     | Description                                                            |
| ------------------------- | ---------------------------------------------------------------------- |
| PID\_\_AlreadyInitialized | Thrown when attempting to initialize an already initialized contract.  |
| PID\_\_InvalidRegistry    | Thrown when providing a zero address for the registry.                 |
| PID\_\_InvalidController  | Thrown when providing a zero address for the controller.               |
| PID\_\_OnlyController     | Thrown when a non-controller address calls a controller-only function. |
| PID\_\_NameAlreadyTaken   | Thrown when attempting to register an ID that is already taken.        |
| PID\_\_NotApprovedOrOwner | Thrown when an unauthorized address attempts to transfer a token.      |


# PIDRegistry

### Overview

`PIDRegistry` is a core contract in the Payment ID system that manages the mapping between tokenIds and their respective owners and resolvers. It serves as the central registry for all Payment ID records, maintaining ownership information and resolver configurations for each tokenId.

### Key Concepts

| Concept               | Description                                                                       |
| --------------------- | --------------------------------------------------------------------------------- |
| Record Management     | Stores and manages owner and resolver information for each tokenId.               |
| Authorization Control | Ensures only authorized parties (token owner or PID contract) can modify records. |
| Ownership Tracking    | Maintains a record of who owns each tokenId.                                      |
| Resolver Assignment   | Associates each tokenId with a resolver contract that handles address resolution. |

### Data Structures

State Variables

| Name    | Type                       | Description                                                                  |
| ------- | -------------------------- | ---------------------------------------------------------------------------- |
| records | mapping(uint256 => Record) | Private mapping that stores owner and resolver information for each tokenId. |
| pid     | address                    | Address of the PID token contract that is authorized to modify records.      |

Custom Types

| Type   | Structure                          | Description                                                        |
| ------ | ---------------------------------- | ------------------------------------------------------------------ |
| Record | {address owner; address resolver;} | Structure containing owner and resolver information for a tokenId. |

### Functions

Constructor

```solidity
constructor(address _pid) public
```

| Input Parameter | Type    | Description                        |
| --------------- | ------- | ---------------------------------- |
| \_pid           | address | Address of the PID token contract. |

| Reverts                          | Description                                   |
| -------------------------------- | --------------------------------------------- |
| PIDRegistry\_\_InvalidPIDAddress | Thrown when the provided PID address is zero. |

Record Management

setRecord

```solidity
function setRecord(uint256 _tokenId, address _owner, address _resolver) external
```

| Input Parameter | Type    | Description                            |
| --------------- | ------- | -------------------------------------- |
| \_tokenId       | uint256 | The token ID to update the record for. |
| \_owner         | address | The new owner address.                 |
| \_resolver      | address | The new resolver address.              |

setResolver

```solidity
function setResolver(uint256 _tokenId, address _resolver) public authorised(_tokenId)
```

| Input Parameter | Type    | Description                              |
| --------------- | ------- | ---------------------------------------- |
| \_tokenId       | uint256 | The token ID to update the resolver for. |
| \_resolver      | address | The new resolver address.                |

| Reverts                      | Description                                                 |
| ---------------------------- | ----------------------------------------------------------- |
| PIDRegistry\_\_NotAuthorized | Thrown when caller is not the record owner or PID contract. |

setOwner

```solidity
function setOwner(uint256 _tokenId, address _owner) public authorised(_tokenId)
```

| Input Parameter | Type    | Description                           |
| --------------- | ------- | ------------------------------------- |
| \_tokenId       | uint256 | The token ID to update the owner for. |
| \_owner         | address | The new owner address.                |

| Reverts                      | Description                                                 |
| ---------------------------- | ----------------------------------------------------------- |
| PIDRegistry\_\_NotAuthorized | Thrown when caller is not the record owner or PID contract. |

Getter Functions

owner

```solidity
function owner(uint256 tokenId) external view returns (address)
```

| Input Parameter | Type    | Description                        |
| --------------- | ------- | ---------------------------------- |
| tokenId         | uint256 | The token ID to get the owner for. |

| Returns | Description                         |
| ------- | ----------------------------------- |
| address | The owner of the specified tokenId. |

resolver

```solidity
function resolver(uint256 tokenId) external view returns (address)
```

| Input Parameter | Type    | Description                           |
| --------------- | ------- | ------------------------------------- |
| tokenId         | uint256 | The token ID to get the resolver for. |

| Returns | Description                                     |
| ------- | ----------------------------------------------- |
| address | The resolver address for the specified tokenId. |

recordExists

```solidity
function recordExists(uint256 tokenId) external view returns (bool)
```

| Input Parameter | Type    | Description                          |
| --------------- | ------- | ------------------------------------ |
| tokenId         | uint256 | The token ID to check existence for. |

| Returns | Description                                                   |
| ------- | ------------------------------------------------------------- |
| bool    | `true` if a record exists for the tokenId, `false` otherwise. |

### Events

| Event       | Parameters                                  | Description                                         |
| ----------- | ------------------------------------------- | --------------------------------------------------- |
| NewResolver | (uint256 indexed tokenId, address resolver) | Emitted when a resolver is set for a tokenId.       |
| Transfer    | (uint256 indexed tokenId, address owner)    | Emitted when ownership of a tokenId is transferred. |

### Errors

| Error                            | Description                                                        |
| -------------------------------- | ------------------------------------------------------------------ |
| PIDRegistry\_\_NotAuthorized     | Thrown when a caller attempts to modify a record they don't own.   |
| PIDRegistry\_\_InvalidPIDAddress | Thrown when initializing with a zero address for the PID contract. |


# RegistrationController

### Overview

`RegistrationController` is a contract that manages the registration process for Payment ID tokens. The contract allows users to register new Payment IDs and configure their address records across different source types and chains. It enforces registration rules and ensures proper initialization of associated resolver records.

### Key Concepts

| Concept               | Description                                                                                    |
| --------------------- | ---------------------------------------------------------------------------------------------- |
| Name Registration     | Handles the process of registering a unique Payment ID name and creating the associated token. |
| Address Configuration | Sets up initial address records for newly registered Payment IDs.                              |
| Availability Check    | Verifies that a Payment ID name is available before allowing registration.                     |
| Token ID Generation   | Creates a deterministic token ID by hashing the requested name.                                |

### Data Structures

State Variables

| Name        | Type           | Description                                |
| ----------- | -------------- | ------------------------------------------ |
| pidRegistry | IPIDRegistry   | Reference to the PID Registry contract.    |
| resolver    | PublicResolver | Reference to the Public Resolver contract. |
| pid         | IPID           | Reference to the PID token contract.       |

### Functions

Constructor

```solidity
function constructor(
    address _pidRegistry,
    address _resolver,
    address _pid
) public
```

| Input Parameter | Type    | Description                              |
| --------------- | ------- | ---------------------------------------- |
| \_pidRegistry   | address | Address of the PID Registry contract.    |
| \_resolver      | address | Address of the Public Resolver contract. |
| \_pid           | address | Address of the PID token contract.       |

Registration

register

```solidity
function register(
    string calldata name,
    uint256[] calldata sourceTypes,
    uint256[] calldata addrTypes,
    bytes[] calldata destAddress
) external
```

| Input Parameter | Type       | Description                                                       |
| --------------- | ---------- | ----------------------------------------------------------------- |
| name            | string     | The Payment ID name to register.                                  |
| sourceTypes     | uint256\[] | Array of source types (e.g., exchange, wallet).                   |
| addrTypes       | uint256\[] | Array of address types (e.g., blockchain identifiers).            |
| destAddress     | bytes\[]   | Array of destination addresses for each source/address type pair. |

| Reverts                                     | Description                                           |
| ------------------------------------------- | ----------------------------------------------------- |
| RegistrationController\_\_InvalidInput      | Thrown when input arrays have mismatched lengths.     |
| RegistrationController\_\_AlreadyRegistered | Thrown when sender already owns a Payment ID.         |
| RegistrationController\_\_NameAlreadyTaken  | Thrown when the requested name is already registered. |

available

```solidity
function available(uint256 _tokenId) public view returns (bool)
```

| Input Parameter | Type    | Description                         |
| --------------- | ------- | ----------------------------------- |
| \_tokenId       | uint256 | Token ID to check availability for. |

| Returns | Description                                             |
| ------- | ------------------------------------------------------- |
| bool    | `true` if the token ID is available, `false` otherwise. |

Internal Functions

\_setAddresses

```solidity
function _setAddresses(
    uint256 tokenId,
    uint256[] calldata sourceTypes,
    uint256[] calldata addrTypes,
    bytes[] calldata destAddress
) internal
```

| Input Parameter | Type       | Description                                                       |
| --------------- | ---------- | ----------------------------------------------------------------- |
| tokenId         | uint256    | The token ID to set addresses for.                                |
| sourceTypes     | uint256\[] | Array of source types (e.g., exchange, wallet).                   |
| addrTypes       | uint256\[] | Array of address types (e.g., blockchain identifiers).            |
| destAddress     | bytes\[]   | Array of destination addresses for each source/address type pair. |

### Errors

| Error                                       | Description                                           |
| ------------------------------------------- | ----------------------------------------------------- |
| RegistrationController\_\_InvalidInput      | Thrown when input arrays have mismatched lengths.     |
| RegistrationController\_\_AlreadyRegistered | Thrown when sender already owns a Payment ID.         |
| RegistrationController\_\_NameAlreadyTaken  | Thrown when the requested name is already registered. |


# AddrResolver

### Overview

AddrResolver is an abstract contract responsible for managing address records associated with Payment ID tokens, supporting both direct updates and signature-based authorization.

### Key Concepts

| Concept                             | Description                                                                                                                     |
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| **Address Resolution**              | Stores address mappings for Payment ID tokens, allowing structured lookup and updates.                                          |
| **EIP-712 Signature-Based Updates** | Enables gasless transactions using off-chain signatures, ensuring security through nonce management and signature verification. |
| **Public Key Registry Integration** | Ensures ownership validation by linking public keys to addresses.                                                               |

### Data Structures

#### Immutable Components

| Name                | Type                 | Description                                               |
| ------------------- | -------------------- | --------------------------------------------------------- |
| `publicKeyRegistry` | `IPublicKeyRegistry` | Stores the reference to the public key registry contract. |

#### State Variables

| Name     | Type                                                                | Description                                                                        |
| -------- | ------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| `_addrs` | `mapping(uint256 => mapping(uint256 => mapping(uint256 => bytes)))` | Nested mapping storing addresses for different source and address types per token. |
| `nonces` | `mapping(address => uint256)`                                       | Tracks the nonce for each address to prevent replay attacks.                       |

#### Type Hashes

| Name                      | Type      | Description                                             |
| ------------------------- | --------- | ------------------------------------------------------- |
| `SET_ADDR_TYPEHASH`       | `bytes32` | Type hash for setting a single address via signature.   |
| `BATCH_SET_ADDR_TYPEHASH` | `bytes32` | Type hash for setting multiple addresses via signature. |

### Functions

#### Initialization

**Constructor**

```solidity
constructor(address _publicKeyRegistry)
```

| Input Parameter      | Type      | Description                                  |
| -------------------- | --------- | -------------------------------------------- |
| `_publicKeyRegistry` | `address` | Address of the public key registry contract. |

#### Address Management

**addr**

```solidity
function addr(uint256 tokenId, uint256 sourceType, uint256 addrType) external view returns (bytes memory)
```

| Input Parameter | Type           | Description                     |
| --------------- | -------------- | ------------------------------- |
| `tokenId`       | `uint256`      | ID of the token.                |
| `sourceType`    | `uint256`      | Type of source for the address. |
| `addrType`      | `uint256`      | Type of address to retrieve.    |
| **Returns**     | `bytes memory` | The stored address record.      |

**setAddr**

```solidity
function setAddr(uint256 tokenId, uint256 sourceType, uint256 addrType, bytes memory newAddr) external
```

| Input Parameter | Type           | Description                     |
| --------------- | -------------- | ------------------------------- |
| `tokenId`       | `uint256`      | ID of the token.                |
| `sourceType`    | `uint256`      | Type of source for the address. |
| `addrType`      | `uint256`      | Type of address to set.         |
| `newAddr`       | `bytes memory` | The new address value.          |

#### Signature-Based Address Management

**setAddrWithSig**

```solidity
function setAddrWithSig(uint256 tokenId, uint256 sourceType, uint256 addrType, bytes memory newAddr, address owner, bytes calldata signature) external
```

| Input Parameter | Type             | Description                       |
| --------------- | ---------------- | --------------------------------- |
| `tokenId`       | `uint256`        | ID of the token.                  |
| `sourceType`    | `uint256`        | Type of source for the address.   |
| `addrType`      | `uint256`        | Type of address to set.           |
| `newAddr`       | `bytes memory`   | The new address value.            |
| `owner`         | `address`        | The owner authorizing the change. |
| `signature`     | `bytes calldata` | The EIP-712 signature.            |

**batchSetAddrWithSig**

```solidity
function batchSetAddrWithSig(uint256 tokenId, uint256[] calldata sourceTypes, uint256[] calldata addrTypes, bytes[] calldata newAddrs, address owner, bytes calldata signature) external
```

| Input Parameter | Type             | Description                       |
| --------------- | ---------------- | --------------------------------- |
| `tokenId`       | `uint256`        | ID of the token.                  |
| `sourceTypes`   | `uint256[]`      | Array of source types.            |
| `addrTypes`     | `uint256[]`      | Array of address types.           |
| `newAddrs`      | `bytes[]`        | Array of new address values.      |
| `owner`         | `address`        | The owner authorizing the change. |
| `signature`     | `bytes calldata` | The EIP-712 signature.            |

#### Nonce Management

**getNonce**

```solidity
function getNonce(address owner) external view returns (uint256)
```

| Input Parameter | Type      | Description                       |
| --------------- | --------- | --------------------------------- |
| `owner`         | `address` | The address to get the nonce for. |
| **Returns**     | `uint256` | The current nonce value.          |

### Events

| Event                        | Parameters                                                                              | Description                                                    |
| ---------------------------- | --------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| `AddressChanged`             | `(uint256 tokenId, uint256 sourceType, uint256 addrType, bytes newAddr)`                | Emitted when an address record is updated.                     |
| `AddressChangedWithSig`      | `(uint256 tokenId, uint256 sourceType, uint256 addrType, bytes newAddr, uint256 nonce)` | Emitted when an address is updated using a signature.          |
| `BatchAddressChangedWithSig` | `(uint256 tokenId, uint256 nonce)`                                                      | Emitted when multiple addresses are updated using a signature. |

### Errors

| Error                               | Description                                                           |
| ----------------------------------- | --------------------------------------------------------------------- |
| `AddrResolver__InvalidSignature`    | Thrown when a signature is invalid.                                   |
| `AddrResolver__InvalidPublicKey`    | Thrown when the recovered public key is not associated with an owner. |
| `AddrResolver__ArrayLengthMismatch` | Thrown when input arrays have different lengths.                      |


# PublicResolver

### Overview

`PublicResolver` is a contract that provides additional functionality for managing operator approvals and registration controllers for Payment ID tokens. The contract supports both direct and signature-based authorization.

### Key Concepts

| Concept                       | Description                                                                           |
| ----------------------------- | ------------------------------------------------------------------------------------- |
| **Operator Approvals**        | Allows owners to authorize operators to manage their Payment ID tokens.               |
| **Signature-Based Approvals** | Enables gasless approvals using EIP-712 signatures.                                   |
| **Registration Controller**   | Manages centralized registration operations and is initialized once.                  |
| **PID Registry Integration**  | Ensures authorization consistency by verifying token ownership with the PID registry. |

### Data Structures

#### Immutable Components

| Name                        | Type      | Description                                    |
| --------------------------- | --------- | ---------------------------------------------- |
| `APPROVAL_FOR_ALL_TYPEHASH` | `bytes32` | Type hash for operator approval via signature. |

#### State Variables

| Name                     | Type                                           | Description                                        |
| ------------------------ | ---------------------------------------------- | -------------------------------------------------- |
| `pidRegistry`            | `IPIDRegistry`                                 | Stores the reference to the PID registry contract. |
| `registrationController` | `address`                                      | Stores the address of the registration controller. |
| `_operatorApprovals`     | `mapping(address => mapping(address => bool))` | Mapping tracking operator approvals for owners.    |

### Functions

#### Initialization

**Constructor**

```solidity
constructor(address _pidRegistry, address _publicKeyRegistry)
```

| Input Parameter      | Type      | Description                                  |
| -------------------- | --------- | -------------------------------------------- |
| `_pidRegistry`       | `address` | Address of the PID registry contract.        |
| `_publicKeyRegistry` | `address` | Address of the public key registry contract. |

**init**

```solidity
function init(address _registrationController) external
```

| Input Parameter           | Type      | Description                             |
| ------------------------- | --------- | --------------------------------------- |
| `_registrationController` | `address` | Address of the registration controller. |

#### Operator Management

**setApprovalForAll**

```solidity
function setApprovalForAll(address operator, bool approved) external
```

| Input Parameter | Type      | Description                           |
| --------------- | --------- | ------------------------------------- |
| `operator`      | `address` | Address to be approved or revoked.    |
| `approved`      | `bool`    | `true` to approve, `false` to revoke. |

**setApprovalForAllWithSig**

```solidity
function setApprovalForAllWithSig(address owner, address operator, bool approved, bytes calldata signature) external
```

| Input Parameter | Type             | Description                                 |
| --------------- | ---------------- | ------------------------------------------- |
| `owner`         | `address`        | Address of the token owner.                 |
| `operator`      | `address`        | Address to be approved or revoked.          |
| `approved`      | `bool`           | `true` to approve, `false` to revoke.       |
| `signature`     | `bytes calldata` | EIP-712 signature authorizing the approval. |

**isApprovedForAll**

```solidity
function isApprovedForAll(address account, address operator) public view returns (bool)
```

| Input Parameter | Type      | Description                                    |
| --------------- | --------- | ---------------------------------------------- |
| `account`       | `address` | Owner account to check for operator approvals. |
| `operator`      | `address` | Address to check.                              |
| **Returns**     | `bool`    | `true` if approved, `false` otherwise.         |

#### Authorization Check

**isAuthorised**

```solidity
function isAuthorised(uint256 tokenId) internal view override returns (bool)
```

| Input Parameter | Type      | Description                              |
| --------------- | --------- | ---------------------------------------- |
| `tokenId`       | `uint256` | Token ID to verify authorization for.    |
| **Returns**     | `bool`    | `true` if authorized, `false` otherwise. |

### Events

| Event                           | Parameters                                         | Description                                          |
| ------------------------------- | -------------------------------------------------- | ---------------------------------------------------- |
| `ApprovalForAll`                | `(address owner, address operator, bool approved)` | Emitted when operator approval status is updated.    |
| `RegistrationControllerUpdated` | `(address oldController, address newController)`   | Emitted when the registration controller is updated. |

### Errors

| Error                                           | Description                                                         |
| ----------------------------------------------- | ------------------------------------------------------------------- |
| `PublicResolver__InvalidOperator`               | Thrown when an operator action is invalid.                          |
| `PublicResolver__AlreadyInitialized`            | Thrown when trying to reinitialize the registration controller.     |
| `PublicResolver__InvalidRegistrationController` | Thrown when an invalid registration controller address is provided. |


# Contract Addresses

<table><thead><tr><th width="249">Name</th><th>Address</th><th>Chains</th></tr></thead><tbody><tr><td>PID</td><td>0xeD4ee325B1Bbf7d7DD3FCf13ab2A61dfdBB71050</td><td>Gravity (1625)</td></tr><tr><td>PIDRegistry</td><td>0xBd7Af8f145f8552A89a84106444Efa754c91B1b4</td><td>Gravity (1625)</td></tr><tr><td>RegistrationController</td><td>0x94124792020DCEa0fb01caaBD3f891247ce4863d</td><td>Gravity (1625)</td></tr><tr><td>PublicResolver</td><td>0x6084977e5e06B39d7bE1dd9647c0EB4aE4Dcd7a1</td><td>Gravity (1625)</td></tr></tbody></table>


# Overview

Welcome to SPACE ID 3.0: A Permissionless Name Service Protocol for All Web3 Communities! This section is tailored for developers and communities eager to launch their personalized Top-Level Domains (TLDs) using the SPACE ID 3.0 infrastructure. We're here to guide you every step of the way, providing demonstrations, comprehensive instructions, and supplementary information.

This section consists of the following sub-section:

* [**Step by Step Guide**](/launch-your-tlds-with-space-id/step-by-step-guide)**:** Our step-by-step guide will walk you through all the prerequisites for the SPACE ID team to facilitate the launch of your domains.
* [**Demos of One-Stop Domain Issuance Toolkit**](/launch-your-tlds-with-space-id/demos-of-one-stop-domain-issuance-toolkit)**:** These demonstrations will offer a complete preview of what the TLD products will look like after the domains are launched.

Before we dive into the specific sections, keep this general process in mind:

1. **Familiarize with the Features:** Begin by exploring the features available in our One-Stop Domain Issuance Toolkit, which covers domain registration, the marketplace, management, and SDK/API.
2. **Information Collection:** We will provide you with a form to gather all the necessary details, parameters, and media files for your domains.
3. **TLD Launched:** With these steps completed, your TLD is officially launched!

And now a recap of the new feature highlights of SPACE ID 3.0, spotlighting Genome:

### **Web3 Domain Creation is Easier Than Ever**

<figure><img src="/files/9d2BkuyZ3ykFeoUKl8TS" alt=""><figcaption></figcaption></figure>

Domain creation has long been a complex and time-consuming endeavor, from contract deployment to the launch process, it involved numerous intricate and trivial steps. But now, with the infrastructure of SPACE ID 3.0, the process of creating a Web3 domain has been streamlined, ensuring accessibility for all.

### **Built-in NFT Marketplace**

<figure><img src="/files/5Jh8mGeEbejJr7z4mjPR" alt=""><figcaption></figcaption></figure>

All Top-Level Domains (TLDs) powered by SPACE ID 3.0 will gain access to a dedicated domain NFT marketplace for seamless domain name trading. It provides a consolidated hub where Web3 domains from various sources, including OpenSea, Element, ENSVision, and more, are readily available for discovery, acquisition, and listing.

### **Enhanced Domain Management**

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

Users have the freedom to set up an array of records, including avatars, social information, and multi-chain addresses to their domain name. This newfound flexibility makes managing domain names across different chains and TLDs a straightforward task.

### **Web3 Name SDK/API**

<figure><img src="/files/9Nm2SJqngXey1muslM38" alt=""><figcaption></figcaption></figure>

The Web3 Name SDK is equipped to support various TLDs like .eth, .lens, .crypto, .bnb, .arb, and the verified domains that are launched through the SPACE ID Toolkit. Additionally, it dynamically supports new TLDs as they are verified, ensuring seamless integration for domain name resolution and reverse resolution.

If you have any questions about the overall process or need assistance with any minor details, please don't hesitate to contact us in the dedicated group chat or in Discord. Otherwise, let's embark on this exciting journey! 🚀


# Step by Step Guide

After having a general idea of Web3 domain and the core SPACE ID 3.0 features, let’s get it started step by step if you are ready for this journey!

## **Step 1: Prepare Branding & Design**

* **Project Name & Description**
* **TLD (Top-Level Domain):** Decide on the TLD you wish to use for your domain, ensuring it aligns with your project's goals and identity.
* **Logo Image:** Design a logo image that represents your project and will be associated with your Web3 domain.
* **Domain NFT Image:** Create an image that will be used as the NFT representing your domain. This image should be unique and eye-catching.
* **Banner Image:** Prepare a banner image that will be displayed on your domain service's landing page, providing a visual introduction to your project.
* **Social Links:** Include links to your project's social media profiles and other relevant web presences to foster online engagement.
* **Landing Page (optional)**: Design a landing page to better present the feature highlight and value proposition of your domain.

## **Step 2: Set Up Domain Parameters**

* **Pricing:** Determine the pricing structure for your domain, including the initial registration cost, renewal fees, and any other associated costs & discounts.
* **Choice of Blockchain:** Specify which blockchain network your web3 domain will operate on. Note that this decision may affect factors such as transaction cost.
* **Registration Rules:** Define the rules for registering your domain, including eligibility criteria (e.g. minimum length of the name, etc.) and any restrictions.
* **Renewal Rules:** Outline the rules for renewing your domain, including renewal periods and fees.

## **Step 3: Set Up Go-To-Market Parameters**

* **Pre-Registration:** Decide whether your launch will have a pre-registration period. If so, outline the process and requirements for the early access.
* **Auction:** Determine if an auction mechanism will be used for pre-registration. If so, describe the auction rules and processes.

## **Step 4: Fulfill Launch Requirements**&#x20;

* **Provide Reserved Name List**\
  Submit the list of reserved domain names prior to the domain launch. All reserved domains will be held for a period of one year.
* **Provide Whitelist Addresses List (If Applicable)**\
  If pre-registration parameters are in place, submit the list of whitelist addresses before the domain launch. Additionally, include the registration quota per whitelisted address.
  * **Note:** If pre-registration parameters are not applicable and the domain proceeds directly to public registration, there is no need to provide a whitelist addresses list.

Ensure all required information is submitted in a timely manner to avoid delays in the launch process.

## **Step 5: Launch Your Domain**

After completing all the necessary preparations, you are almost there to launch your Web3 domain. This involves making your domain available for registration or pre-registration, according to the parameters you've set. Ensure that your branding and design elements are in place and that your project is ready to engage with users who wish to register Web3 domains associated with your project. Keep a close eye on the launch process to address any inquiries or issues that may arise during this exciting phase of your Web3 domain project.

To go over all the details, feel free to connect with us in the dedicated telegram group chat!


# Demos of One-Stop Domain Issuance Toolkit

In the Demo Section, we will demonstrate a complete preview of what products will look like after using the SPACE ID One-Stop Domain Issuance Toolkit. Please read this carefully before proceeding so that you can provide the exact parameters and info for your domain launch. Various details are customizable in this demo.

The demos include how users will interact with domain registration, how to trade, manage domains, and how to use SDK / API to let other dApp integrate your domain.

## Domain Registration

### Pre-registration

Domain pre-registration usually means early access for the whitelisted participants to secure their desired domains first. This strategic approach not only rewards the most engaged members of your community but also serves as a vital initial phase for your domain launch.

At SPACE ID, we've invested significant effort in refining the pre-registration process to ensure the best user experience. We've observed instances where bots swiftly swoop in to snatch up all the popular domain names, a frustrating experience for users.

To combat this, we're introducing two key features to enhance your domain pre-registration experience: the **Auction** system and **First-Come-First-Serve Registration**. These features empower you to take control of your domain pre-registration process, ensuring fairness and accessibility for all users.

#### Auction Demo

1. After entering the pre-registration website, whitelisted users will connect their wallets to the designated network to get started.

![](/files/dp6xj9wR5o80bFDP0IqQ)

2. During the auction, there's a maximum number of domains a user can bid on (you can customize this number), indicated by the "Bid Quota" on the home page. Users can also Track their bids at the bottom of the page and the top bids throughout the auction.

![](/files/3eJTyNxxV6xdwKAcUQRe)

3. In the search bar, users can enter their desired domain name and it’ll show its status as “Available” or “Registered”. Click to see the domain details page, where users can enter the price they aim to bid. Per common auction rules, a new bid must be at least 105% of the previous bid.

![](/files/EoYV0Stj4vpQu2VgFW25)

4. If other users outbid on any name, one can choose to continue bidding on that name (which won’t consume any Bid Quota), or get refunded right away. If one chooses to get refunded, the action of having bid on this name still has reduced the Bid Quota, and one cannot recover this quota to bid on another name in the auction phase.

![](/files/QXJuSDpqwPjxXBIOcIS1)

Some other common auction rules worth noting:

1. In the last 10 minutes of the auction, every new bid made will reset the time to 10 minutes.
2. Winning bids in the auction phase secure winners the right to register the domains in the next First-come-first-serve Registration, for which the 1st year registration will be free (as that cost is already embedded in the auction starting price).

#### First-Come-First-Serve (FCFS) Registration Demo

1. As TLD issuer, you can choose to run the Pre-registration process via a combination of Auction and FCFS phase, or skip Auction and launch via FCFS directly.

![](/files/TINviK8XYHY2qw77fz8t)

2. If doing both Auction + FCFS, users’ “Register Quota” will come in 2 parts: 1) the bids they won + 2) FCFS registration quota, and the sum of which is their total domain quota (again, you can customize the number for the quota).
3. Fill in a domain name that they want to register, and its availability will show up. Only when the "Available" message is shown, the registration could proceed. Any other “Registered” or error message indicates that they could not register for that name at the moment.

![](/files/B5yAIbpXXK0JJjo1zn2O)

4. Click on the available domain name, and users will be prompted to select the number of years and pay the fee to register the domain. After the 'Register' transaction is complete, users will see their domain NFT image, Registrant address, Expiration Date, and Record addresses!

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

<figure><img src="/files/9DudlBBbXYZoKszKE2CW" alt=""><figcaption></figcaption></figure>

### Public Registration

The public registration process for domains is similar to a First-come-first-serve Registration during the pre-registration, with the key distinctions of not having a registration quota, and being open to all (vs. whitelists only).

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

## Marketplace

With the deployment of the SPACE ID 3.0 infrastructure, all Top-Level Domains (TLDs) gain access to our dedicated domain marketplace for seamless domain name trading.

To check out step-by-step demonstrations of how to engage in domain trading within the SPACE ID ecosystem, we invite you to explore our comprehensive [tutorial](https://docs.space.id/getting-started/tutorials/trade).

![](/files/OzXGKhjo1fLlU9TkCciJ)

## Domain Management

After registering for domains, users can hover on the wallet on the top right corner and click “My Account” to see and edit all the domain registrations. SPACE ID 3.0 currently offer the following features for domain management:

![](/files/9PoRh9WIE0qKBOl5zg7P)

**Set TLD Primary Name**

Every address is able to set TLD Primary Name to configure a reverse resolution domain for each Top-Level Domain, regardless of whether it has been verified or not on SPACE ID. Examples include setting "allen.eth" as TLD Primary Name for .eth, "allen.bnb" for .bnb, "allen.cake" for .cake. To change your primary name, click “set” and sign on your wallet.

Note that these domain configurations will be recorded on the blockchain.

#### Set Chain Primary Name

Each address is permitted to have only one unique Chain Primary Name for each blockchain or network. Specifically, when multiple TLDs verified on a single chain exist, only one domain name can be chosen as such reverse resolution domain for that particular chain. For instance, "allen.eth" could serve as Chain Primary Name for Ethereum, and "allen.cake" might function as the primary name for BNB Chain.

![](/files/VqzpxoovHnxhFg975Xr9)

**Transfer**

Every domain has a registrant. Registrant indicates the owner of a Domain Name registration. Only the registrant can transfer the ownership of a domain registration.

Users can click “Transfer” and fill the address that they want to transfer the ownership to.

#### **Edit Record Address**

The traditional address in the record is the corresponding address after a domain name is resolved by the resolver. It is also the address that users actually interact with when they use it with partners that have integrated with the respective domain service.

For example, when users transfer assets to svensen.arb on Math Wallet, the assets are transferred to the traditional address in the record.

Click “Edit” to edit the record address.

#### **Extend**

Users can extend their domain registration anytime during the registration period and within 90 days after it expires, which is a 90-day grace period. During the grace period, the domain name will be reserved only for its previous registrant to expand its registration. After the grace period, the name will not be reserved and will be open to the public to register.

To expand the registration, click “Extend” to make the change.

## Your Domain SDK/API

SPACE ID can provide the Web3 Name SDK and Domain API to every name service launched with SPACE ID 3.0

* Web3 Name SDK: It is specifically designed to support TLDs that have undergone the verification process, which is conducted through SID DAO. Once a TLD is successfully verified, it will be integrated into the official SDK. This integration allows all DApps that have already incorporated Web3 Name SDK to seamlessly support the verified TLD. In essence, Web3 Name SDK simplifies the process of adding and utilizing web3 domains with verified TLDs, offering a standardized and efficient solution for developers.
* Domain API: In addition to Web3 Name SDK, we also offer an API for each TLD. This API is intended to facilitate both resolution and reverse resolution, empowering project developers to proactively seek out and engage with DApps for integration purposes. With this API, project teams gain the flexibility to independently connect their TLDs to various DApps, enabling two-way communication between their domains and the DApps they choose to integrate. This approach ensures greater adaptability and customization for projects seeking to leverage Web3 within their ecosystems.

## **Community Management Through Domain Fee Models**

You can generate revenue and manage the community by establishing registration and renewal fees for domain names. It's important to note that SPACE ID collects a 15% protocol-level commission on these fees, which is a key aspect to consider in your revenue strategy. Here are some key points regarding this:

* **Setting Registration Fees:** Design a pricing structure that outlines the cost for users to register domain names within your ecosystem.
* **Renewal Fees:** Define the fees associated with renewing domain registrations, which may vary from the initial registration cost.
* **Revenue Management:** Utilize the revenue generated from registration and renewal fees to support and enhance the community associated with your domain ecosystem. This income can be used for community development, maintenance, and other community-related activities.


# Web3 Name API & SDK

Streamline digital identity integration with SPACE ID's all-in-one Web3 Name API & SDK, empowering developers with simplicity, scalability, and game-changing potential.\
\
One API & SDK for all has always been one of the main features of SPACE ID to support all web3 dApps. It is ultimately designed to be a unified and streamlined approach that greatly simplifies the integration of web3 services, eliminating the need for developers to work with multiple protocols, saving time and reducing the risk of compatibility issues.\
\
Web3 Name API & SDK includes a suite of features and functionalities designed to facilitate domain name resolution and reverse resolution. This comprehensive SDK is equipped to support various top-level domains (TLDs) like .eth, .bnb, .sol, .arb, and the verified domains that are launched through the SPACE ID Toolkit. Additionally, it dynamically supports new TLDs as they are verified, ensuring seamless integration for domain name resolution and reverse resolution.

For example, suppose you have integrated Web3 Name API / SDK, allowing it to support .bnb domain resolution on BNB Chain. When a new TLD, such as .allen, is launched on SPACE ID and subsequently verified, the SDK will automatically extend its capabilities to include .allen domain name resolution. This process requires no additional upgrades or development costs, streamlining domain management for developers and users.

Notably, the Web3 Name API & SDK also accommodates domain names associated with blockchains outside the EVM, such as .sei, .inj, and .sol.


# Web3 Name API

SPACE ID provides a free HTTP API to help dApps integrate domain resolutions with ease. All data is  queried on-chain securely in real time.

The primary capabilities of the SPACE ID Web3 Name API include:

1. Domain Name -> Address resolution: Retrieve the crypto address uniquely bound to the domain name by entering the domain name.
2. Address -> Domain Name resolution: Retrieve the domain name associated with the address via inputs: 1) the crypto address, and 2) the chain id.
   * Given one crypto address could own multiple domain names, users can set a primary name such that their address can be 1-to-1 mapped to this primary name&#x20;

## 1. Resolve Domain Name -> Address

<mark style="color:blue;">`GET`</mark> `https://nameapi.space.id/getAddress?domain=`&#x20;

**Request URL Example:**&#x20;

* Domain to be resolved: spaceid.bnb
* <https://nameapi.space.id/getAddress?domain=spaceid.bnb>&#x20;

```json
Status Code: 200 OK
{
"address":"0xb5932a6B7d50A966AEC6C74C97385412Fb497540"
"code":0
"msg":"success"
}
```

**Return Field Description**

<table><thead><tr><th width="148">Name</th><th>Description</th></tr></thead><tbody><tr><td>address </td><td>Returns the resolved address. If no domain records are found, the address field will not be returned</td></tr><tr><td>code</td><td>0: address found, 1: no address found, -1: error</td></tr><tr><td>msg</td><td>result status and error message</td></tr></tbody></table>

\*Get Address API now supports .four token CA resolving, sample query is provided for testing and integration.

[https://nameapi.space.id/getAddress?domain=tst.four ](https://nameapi.space.id/getAddress?domain=tst.four)

```
Status Code: 200 OK
{
"address":"0x86Bb94DdD16Efc8bc58e6b056e8df71D9e666429"
"code":0
"msg":"success"
}
```

## 2. Resolve Address -> Domain Name

<mark style="color:blue;">`GET`</mark> `https://nameapi.space.id/getName?chainid=&address=`

#### Query Parameters

<table><thead><tr><th width="195">Name</th><th>Description</th></tr></thead><tbody><tr><td>chainid</td><td>The Chain ID that tells which chain the app is on (e.g. Ethereum: 1, BNB Chain: 56, Solana: 900)</td></tr><tr><td>address</td><td>The crypto address that can be resolved to a primary domain name</td></tr></tbody></table>

**Request URL Example (single chain query):**&#x20;

* BNB Chain (Chain ID: 56) Address to be resolved: 0xb5932a6B7d50A966AEC6C74C97385412Fb497540
* <https://nameapi.space.id/getName?chainid=56&address=0xb5932a6B7d50A966AEC6C74C97385412Fb497540>
* Return:&#x20;

```json
Status Code: 200 OK
{
  "code": 0,
  "data": {
    "name": "spaceid.bnb",
    "chainID": 56,
    "errMsg": ""
  },
  "msg": "success"
}
```

\*GetName API now support four meme token domain retrieval

<https://nameapi.space.id/getName?chainid=56&address=0x86Bb94DdD16Efc8bc58e6b056e8df71D9e666429>

```
Status Code: 200 OK
{
  "code": 0,
  "data": {
    "name": "tst.four",
    "chainID": 56,
    "errMsg": ""
  },
  "msg": "success"
}
```

**Request URL Example (multi-chain query):**

* Address 0xb5932a6B7d50A966AEC6C74C97385412Fb497540, to be resolved for names on Arbitrum, BNB Chain, and Mint.&#x20;
* <https://nameapi.space.id/getDomainNamesByChainIdList?chainlist=42161,56,101,185&address=0x2e552E3aD9f7446e9caB378c008315E0C26c0398>
* Return:&#x20;

<pre class="language-json"><code class="lang-json"><strong>Status Code: 200 OK
</strong>{
   "code": 0,
   "data": [
       {
           "name": "0x5206.arb",
           "chainID": 42161,
           "errMsg": ""
       },
       {
           "name": "allen.bnb",
           "chainID": 56,
           "errMsg": ""
       },
       {
           "name": "",
           "chainID": 0,
           "errMsg": "unsupported chain id: 101"
       },
       {
           "name": "",
           "chainID": 185,
           "errMsg": "corresponding domain not found"
       }
   ],
   "msg": "success"
}

</code></pre>

**Return Field Description**

<table><thead><tr><th width="134">Name</th><th>Description</th></tr></thead><tbody><tr><td>name</td><td>Returns the resolved domain name. If no record is found, the name field will not be returned</td></tr><tr><td>code</td><td>0: name found, 1: name not found, -1: error </td></tr><tr><td>msg</td><td>result status and error message</td></tr></tbody></table>

## 3. Resolve Payment ID -> Address

<mark style="color:blue;">`GET`</mark> `https://nameapi.space.id/getPaymentIdName/”paymentID”/”chaintype”`&#x20;

#### Query Parameters

<table><thead><tr><th width="195">Name</th><th>Description</th></tr></thead><tbody><tr><td>paymentID</td><td>The payment ID name that needs to be resolved (e.g. jerry@binance)</td></tr><tr><td>chaintype</td><td>The chain address to be resolved, from btc, evm, sol, tron, aptos, sui</td></tr></tbody></table>

**Request URL Example:**&#x20;

* Payment ID to be resolved: jerry\@binance, chaintype: evm
* <https://nameapi.space.id/getPaymentIdName/jerry@binance/evm>
* Return:

<pre class="language-json"><code class="lang-json"><strong>Status Code: 200 OK
</strong>{
  "address": "0x5bcb636853ab70b873adaf2d9759ca1489669cce",
  "code": 0,
  "msg": "success"
}
</code></pre>

## Appendix for Supported Domains & Chains

| Chain                     | Chain ID | Domain  |
| ------------------------- | -------- | ------- |
| Ethereum Mainnet          | 1        | .eth    |
| BNB Chain                 | 56       | .bnb    |
| BNB Chain                 | 56       | .four   |
| Solana                    | 900      | .sol    |
| Arbitrum One              | 42161    | .arb    |
| Manta Pacific Mainnet     | 169      | .manta  |
| Mode                      | 34443    | .mode   |
| ZKFair Mainnet            | 42766    | .zfk    |
| Lightlink Phoenix Mainnet | 1890     | .ll     |
| ZetaChain Mainnet         | 7000     | .zeta   |
| Merlin Mainnet            | 4200     | .merlin |
| Gnosis                    | 100      | .gno    |
| Taiko Alethia             | 167000   | .taiko  |
| AlienX Mainnet            | 10241024 | .alien  |
| Mint Mainnet              | 185      | .mint   |
| AILayer Mainnet           | 2649     | .ail    |
| Morph                     | 2818     | .mph    |
| DuckChain Mainnet         | 5545     | .duck   |
| Gravity Alpha Mainnet     | 1625     | .g      |
| Story                     | 1514     | .ip     |
| Injective                 | 901      | .inj    |
| Sei                       | 902      | .sei    |
| .lens on Polygon          | 903      | .lens   |
| .crypto on Polygon        | 904      | .crypto |


# Web3 Name SDK

## Overview

The primary capabilities of the SDK include:

1. Domain Name Resolution: It resolves Domain Names and Payment IDs to obtain essential information about the domain, including its associated crypto address, various records (such as avatars, IPFS links, social data), and metadata, etc.
2. Reverse Resolution: The SDK facilitates reverse address resolution. This feature makes it possible to determine the Primary Domain Name associated with a given crypto address, across different blockchains or TLDs.

By default, all EVM-based Domain Names are supported for domain resolution in the Web3 Name SDK. Reverse resolution returns a Chain Primary Name for each EVM chain. Project administrators have the flexibility to choose whether to integrate support for all or only specific chains and TLDs. They can also configure custom settings for reverse resolution as needed. This adaptability allows projects to tailor the SDK's functionality to their specific requirements.

## Get Started

Developers can integrate the resolution of web3 domain name <> crypto address using the Web3 Name SDK with zero configuration.

### Install

`npm install @web3-name-sdk/core viem@^2.23.12`

If you are using `next.js`, please add the following configuration in your `next.config.js` in order to transpile commonjs dependencies:

```javascript
const nextConfig = {
  transpilePackages: ['@web3-name-sdk/core'],
}
```

### 1. Setup client

```jsx
import { createWeb3Name } from '@web3-name-sdk/core'

const web3name = createWeb3Name()
```

### 2. Resolve a domain name

You can get address from domain name with a single request:

```jsx
const address = await web3name.getAddress('spaceid.bnb')
// expect: '0xb5932a6b7d50a966aec6c74c97385412fb497540'

const address = await web3name.getAddress('vitalik.eth')
// expect: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'

const address = await web3name.getAddress('beresnev.crypto')
// expect: '0x6ec0deed30605bcd19342f3c30201db263291589'

const address = await web3name.getAddress('bts_official.lens')
// expect: '0xd80efa68b50d21e548b9cdb092ebc6e5bca113e7'
```

#### Multichain address resolution

Domain resolution for other chains can be provided by adding `coinType` param to `getAddress()`.

```jsx
import { convertEVMChainIdToCoinType } from '@ensdomains/address-encoder'
const address = await web3name.getAddress('gnome.gno', {coinType: convertEVMChainIdToCoinType(1)})
// expect: 0x4348d45967552d0176d465170b7375ed22dc627b
```

### 3. Resolve an address

There are optional parameters in the method to select your target chain or TLD (top-level Domain).

By providing chain IDs, you can resolve addresses on selected chains and get an available domain name from all TLDs deployed on these chains.

```jsx
// Resolve an address from BNB Chain
const name = await web3name.getDomainName({
  address: '0xb5932a6b7d50a966aec6c74c97385412fb497540',
  queryChainIdList: [56],
})
// expect: spaceid.bnb
```

By providing TLDs, address can be resolved from the selected TLDs and get an available TLD primary name.

```jsx
// Resolve an address from .bnb TLD
const name = await web3name.getDomainName({
  address: '0xb5932a6b7d50a966aec6c74c97385412fb497540',
  queryTldList: ['bnb'],
})
// expect: spaceid.bnb
```

### 4. Batch resolve addresses

You need to provide your target chain client and then provide optional parameters in the method. The method returns a list containing the address and its corresponding domain.

```jsx
const res = await web3Name.batchGetDomainNameByTld({
  addressList: ['0x2886d6792503e04b19640c1f1430d23219af177f', '0xb5932a6b7d50a966aec6c74c97385412fb497540'],
  queryTld: 'bnb',
})
// expect: [{address: '0x2886d6792503e04b19640c1f1430d23219af177f', domain: 'goodh.bnb'}, {address: '0xb5932a6b7d50a966aec6c74c97385412fb497540', domain: 'spaceid.bnb'}]
const res = await web3Name.batchGetDomainNameByChainId({
  addressList: ['0x77777775b611f0f3d90ccb69ef425a62b35afa7c', '0x3506fbe85e19bf025b228ec58f143ba342c3c608'],
  queryChainId: 42_161,
})
// expect: [{address: '0x77777775b611f0f3d90ccb69ef425a62b35afa7c', domain: 'megantrhopus.arb'}, {address: '0x3506fbe85e19bf025b228ec58f143ba342c3c608', domain: 'idgue.arb'}]
```

### 5. Record

Domain text records can be fetched by providing domain name and the key. For example, the avatar record of `spaceid.bnb` is returned from this method given key name `avatar`:

```jsx
const record = await sid.getDomainRecord({ name: 'spaceid.bnb', key: 'avatar' })
```

### 6. Metadata

Domain metadata can be fetched by SDK directly.

```jsx
// requesting
const metadata = await web3Name.getMetadata({ name: 'public.gno' })
```

## Payment ID Domains Support

Web3 Name SDK also supports the Payment ID domains (using *@tld* format) identifiers that map to  addresses across multiple networks. It can simplify transactions by allowing users to send funds to easy-to-remember names.

```typescript
const address = await web3name.getAddress('jerry@binance')
const ethereumAddress = await web3name.getAddress('jerry@binance', { chainId: 1 })
// Returns the EVM address (chain ID 1) 0xa8aa200ce9dfe97deadd7cc3f197c6d8c242f2ee associated with the PaymentID domain
```

**Chain ID Table for PaymentID Resolution**

When resolving PaymentID domains, you can specify a chainId parameter to get addresses for specific blockchains:

| Type    | ID |
| ------- | -- |
| Bitcoin | 0  |
| EVM     | 1  |
| Solana  | 2  |
| Tron    | 3  |
| Aptos   | 4  |
| Sui     | 5  |

```typescript
// Example: Get Bitcoin address from PaymentID domain
const bitcoinAddress = await web3name.getAddress('username@paymentid', { chainId: 0 })

// Example: Get Solana address from PaymentID domain
const solanaAddress = await web3name.getAddress('username@paymentid', { chainId: 2 })
```

##

## Non-EVM name services

As an all-in-one domain name SDK, non-EVM web3 domain name services are also included. Now we support SNS (Solana Name Service, .sol), Sei Name Service (.sei) and Injective Name Service (.inj).

### 1. Solana Name Service (.sol)

Install additional corresponding dependencies for the Solana environment:

```jsx
npm install @solana/web3.js@^1.75.0 @bonfida/spl-name-service@^3.0.10
```

Create client and query domains:

```jsx
import { createSolName } from '@web3-name-sdk/core/solName'

const web3Name = createSolName()
const domain = await web3Name.getDomainName({
  address: 'HKKp49qGWXd639QsuH7JiLijfVW5UtCVY4s1n2HANwEA',
}) // expect: bonfida.sol
```

### 2. Sei Name Service (.sei)

Install additional corresponding dependencies for the Sei environment:

```jsx
npm install @sei-js/core@^3.1.0 @siddomains/sei-sidjs@^0.0.4
```

Create client and query domains:

<pre class="language-jsx"><code class="lang-jsx">import { createSeiName } from '@web3-name-sdk/core/seiName'

<strong>const web3Name = createSeiName()
</strong>const domain = await web3Name.getDomainName({
  address: 'sei1tmew60aj394kdfff0t54lfaelu3p8j8lz93pmf',
}) // expect: allen.sei
</code></pre>

### 3. Injective Name Service (.inj)

Install additional corresponding dependencies for the Injective environment:

```jsx
npm install @siddomains/injective-sidjs@0.0.2-beta @injectivelabs/networks@1.14.6 @injectivelabs/ts-types@1.14.6
```

Create client and query domains:

```jsx
import { createInjName } from '@web3-name-sdk/core/injName'

const web3Name = createInjName()
const domain = await web3Name.getDomainName({
  address: 'inj10zvhv2a2mam8w7lhy96zgg2v8d800xcs7hf2tf',
}) // expect: testtest.inj
```

**Note: Next.js Configuration for INJ and SEI Name Services**

When using INJ or SEI name services with Next.js, you'll need additional webpack configuration to handle dynamic imports and polyfills. Due to the complexity of these dependencies, extra configuration is required.

Required dependencies:

```bash
npm install crypto-browserify stream-browserify buffer babel-loader @babel/preset-env @babel/plugin-transform-private-methods @babel/plugin-transform-private-property-in-object @babel/plugin-transform-runtime
```

View the complete Next.js configuration example: [next.config.example.js](https://github.com/Space-ID/web3-name-sdk/blob/main/next.config.example.js)

##

## Use your own RPC

We are using popular public RPC services by default to make it easier to use. But in some cases developers may prefer to use arbitrary RPC, so we provide optional parameter `rpcUrl` for each function that allows developers to use their own RPC to make requests.

For example, you can put custom rpcUrl as a parameter in `getAddress` function.

```typescript
// Use custom RPC url (https://arb1.arbitrum.io/rpc)
const address = await web3name.getAddress('registry.arb', {
  rpcUrl: 'https://arb1.arbitrum.io/rpc',
})
// expect: '0x8d27d6235d9d8EFc9Eef0505e745dB67D5cD2918'
```

For other functions, it's also possible to have a custom `rpcUrl` in the request.

```typescript
// Use custom RPC url (https://arb1.arbitrum.io/rpc)
const address = await web3name.getMetaData('registry.arb', {
  rpcUrl: 'https://arb1.arbitrum.io/rpc',
})
// expect: '0x8d27d6235d9d8EFc9Eef0505e745dB67D5cD2918'
```

#### Request Timeout Control

The SDK provides timeout control for all network requests. You can set timeouts in two ways:

**1. Global Timeout**

Set a global timeout when creating the client:

```typescript
// Set a 5-second timeout for all requests
const web3Name = createWeb3Name({ timeout: 5000 })
const solName = createSolName({ timeout: 5000 })
const seiName = createSeiName({ timeout: 5000 })
const injName = createInjName({ timeout: 5000 })
```

**2. Function Request Timeout**

Override the global timeout for specific requests:

```typescript
// Set a 10-second timeout for this specific request
const address = await web3name.getAddress('vitalik.eth', { timeout: 10000 })

// Timeout can be combined with other options
const address = await web3name.getAddress('registry.arb', {
  rpcUrl: 'https://arb1.arbitrum.io/rpc',
  timeout: 5000,
})

// Works with all methods
const name = await web3name.getDomainName({
  address: '0x2886D6792503e04b19640C1f1430d23219AF177F',
  queryChainIdList: [10200],
  timeout: 5000,
})

const metadata = await web3name.getMetadata({
  name: 'spaceid.bnb',
  timeout: 5000,
})
```

If a request exceeds the timeout duration, it will throw an error with a message indicating the timeout. The timeout applies to all network operations, including name resolution, reverse lookups, and metadata fetches.


# FAQ

### 1. What is the SPACE ID Web3 Name API?

The Web3 Name API is a free HTTP API that helps developers integrate Web3 domains to their apps, efficiently and securely. The API provides:

* Domain resolution: convert Web3 Domains into crypto addresses.
* Reverse resolution: retrieve the primary Web3 Domain uniquely linked to the crypto address.

### 2. How do I access the API?

You can access the API simply by sending requests to the endpoint URLs (as stated below) using the HTTP method GET.

### 3. How do I resolve a domain to an address using the API?

Send a GET request:&#x20;

`https://nameapi.space.id/getAddress?domain=spaceid.bnb`

Response: { "address": "0xb5932a6B7d50A966AEC6C74C97385412Fb497540"}

### 4. How do I reverse resolve an address to a domain?

Send a GET request:

`https://nameapi.space.id/getName?chainid=56&address=0xb5932a6B7d50A966AEC6C74C97385412Fb497540`

Response: {"name": "spaceid.bnb"}

### 5. What is the SPACE ID Web3 Name SDK, and what's the difference between SDK and API?

The SDK is a JavaScript/TypeScript library designed for client-side and backend integrations, allowing developers to directly query on-chain domain records inside their apps instead of handling API calls.

Conversely, the API is a RESTful service that enables developers to access SPACE ID’s domain name resolution via HTTP requests, making it ideal for server-side applications and large-scale integrations.

### 6. How do I install the SDK and resolve domain names?

Developers can install the Web3 Name SDK via:

`npm install @web3-name-sdk/core viem@^1.20`&#x20;

And check the complete SDK documents here:

<https://docs.space.id/developer-guide/web3-name-api-and-sdk/web3-name-sdk><br>

<br>


# Registration Integration

Currently, SPACE ID provides an easy way for partners to integrate **.bnb**, **.arb**, and **.eth**  domain name registrations. Partners can use our web3-name-sdk with their own designed front-end interfaces to allow their customers to smoothly own a unique web3 domain name. Additionally, qualified partners can also earn commission fees when users register .arb and .bnb domains on their own integrated registration portal.

## Installation

Use **npm** or **yarn** to install our web3-name-sdk along with ethers v5. Ethers v6 has breaking changes and it has not been widely adopted so far. Therefore, we choose to stick with ethers v5.

```
npm install @web3-name-sdk/register ethers@5.7.2
```

```
yarn add @web3-name-sdk/register ethers@5.7.2
```

If you are using `next.js`, please add the following configuration in your `next.config.js` in order to transpile commonjs dependencies:

```javascript
const nextConfig = {
  transpilePackages: ['@web3-name-sdk/register'],
}
```

## Registration Steps

Domain registration has 3 steps. The **first step** is to check the availability of a specific domain. If the domain is valid and available, the **second step** would be querying the registration fee of the domain. The fee depends on the length and registration duration of a domain. The **third step** is to let users call the registration function with all the necessary parameters and registration fees.

## Code Examples

### BNB Registration

```javascript
import SIDRegister from ‘@web3-name-sdk/register’
import { providers } from ‘ethers’

async function registerDomain(label: String) {
  // detect provider
  if (window.ethereum) {
    const provider = new providers.Web3Provider(window.ethereum)
    // switch to bsc
    await provider.send('wallet_switchEthereumChain', [{ chainId: '0x38' }])
    // connect wallet
    await provider.send('eth_requestAccounts', [])
    // get signer
    const signer = provider.getSigner()
    // get address
    const address = await signer.getAddress()
    // init SIDRegister
    const register = new SIDRegister({ signer, chainId: 56 })
    // check if available
    const available = await register.getAvailable(label)
    // get price. params:{label, duration}
    const price = await register.getRentPrice(label, 1)
    // register for one year. params:{label, address, duration, {setPrimaryName, referrer}}
    await register.register(label, address, 1, {
      setPrimaryName: true, // set as primary name, default is false,
      referrer: 'test.bnb' // referrer domain, default is null
    })
  }
}
```

### ARB Registration

```javascript
import SIDRegister from '@web3-name-sdk/register'
import { providers } from 'ethers'

async function registerDomain(label: String) {
  // detect provider
  if (window.ethereum) {
    const provider = new providers.Web3Provider(window.ethereum)
    // switch to arbitrum one
    await provider.send('wallet_switchEthereumChain', [{ chainId: '0xA4B1' }])
    // connect wallet
    await provider.send('eth_requestAccounts', [])
    // get signer
    const signer = provider.getSigner()
    // get address
    const address = await signer.getAddress()
    // init SIDRegister
    const register = new SIDRegister({ signer, chainId: 42161 })
    // check if available
    const available = await register.getAvailable(label)
    // get price
    const price = await register.getRentPrice(label, 1, {
      setPrimaryName: true, // set as primary name, default is false,
      referrer: 'test.bnb' // referrer domain, default is null
    })
    // register for one year
    await register.register(label, address, 1)
  }
}
```

**\*Notice:**&#x20;

* **Label** is the domain name without TLD subfix.(eg: test is the label of domain test.bnb)&#x20;
* **ARB** **chain id** is 42161, **BNB** **chain id** is 56.&#x20;
* **Primary Name** is the name that will be displayed on the front end for any dapp that integrates our name-resolving SDK. setPrimaryName can be passed as a parameter as new users register domain. Its default value should be set to false.
* **Referrer** is the referrer's domain name. The commission fee will be sent to the address that this domain name resolves to. Be sure to set up both the primary name and resolving address before using the domain as the referrer.

### ETH Registraion

```javascript
import SIDRegister from '@web3-name-sdk/register'
import { providers } from 'ethers'

async function registerEthDomain(label: String) {
  // detect provider
  if (window.ethereum) {
    const provider = new providers.Web3Provider(window.ethereum)
    // switch to bsc
    await provider.send('wallet_switchEthereumChain', [{ chainId: '0x1' }])
    // connect wallet
    await provider.send('eth_requestAccounts', [])
    // get signer
    const signer = provider.getSigner()
    // get address
    const address = await signer.getAddress()
    // init SIDRegister
    const register = new SIDRegister({ signer, chainId: 1 })
    // check if available
    const available = await register.getAvailable(label)
    // get price
    const price = await register.getRentPrice(label, 1)
    // register for one year
    await register.register(label, address, 1, {
      // wait for commit to be valid, waitTime = 60 in milliseconds
      onCommitSuccess: (waitTime) => {
        return new Promise(resolve => {
          setTimeout(resolve, waitTime * 1000)
        })
      }
    })
  }
}
```

**\*Notice:**&#x20;

* **Label** is the domain name without TLD subfix.(eg: test is the label of domain test.bnb).
* **ETH chain id** is 1.
* **Referrer** cannot be applied to eth registration and SetPrimaryName does not apply either.
* ETH Registration has one additional step. Users need to commit a message before registering domains. Our SDK has wrapped these two steps into a callback function. Once the first function call is successful, the function has to wait 60 seconds to make the callback.

More details can be referred from <https://www.npmjs.com/package/@web3-name-sdk/register>


# Integration Partners

## SPACE ID 3.0 Partner

<div><figure><img src="/files/Kh27LAOKMHWC3iRvxnRJ" alt=""><figcaption><p>.inj domain by Injective</p></figcaption></figure> <figure><img src="/files/v4YhkN1ewSv9AtR9P7cb" alt=""><figcaption><p>.manta domain by Manta Network </p></figcaption></figure> <figure><img src="/files/4jJgNk0i7zJGCTOKIw1Y" alt=""><figcaption><p>.cake domain by PancakeSwap</p></figcaption></figure></div>

<div><figure><img src="/files/0c8JQKc53XdO8eSx4GZb" alt=""><figcaption><p>.taiko domain by Taiko</p></figcaption></figure> <figure><img src="/files/OCYrRgVpl88lE5cvRFY3" alt=""><figcaption><p>.zkf domain by ZKFair</p></figcaption></figure> <figure><img src="/files/W3j4QsvsaGwE1n82AgiM" alt=""><figcaption><p>.mode domain by Mode</p></figcaption></figure></div>

<div><figure><img src="/files/2aZiBB5mILVBny8fkqYk" alt="" width="375"><figcaption><p>.sei Name Service</p></figcaption></figure> <figure><img src="/files/iAoOm8QSk3aogQaOLVyW" alt="" width="375"><figcaption><p>.gno by Genome</p></figcaption></figure> <figure><img src="/files/7W8NGPBSMPh2w8O47HBl" alt="" width="375"><figcaption><p>.zeta domain by Zeta Chain</p></figcaption></figure></div>

<div><figure><img src="/files/vrrhcZ3evqfTWs4S7CAX" alt=""><figcaption><p>.mint domain by Mint</p></figcaption></figure> <figure><img src="/files/VrXGEKrtzq9nCNTiNOfj" alt=""><figcaption><p>.merlin domain by Merlin</p></figcaption></figure> <figure><img src="/files/hwIG0JrwEbcaahZK84Tx" alt=""><figcaption><p>.floki domain by Floki</p></figcaption></figure></div>

<div><figure><img src="/files/xDXroxhEW2rEf0MOwAfT" alt=""><figcaption><p>.burger domain by BurgerCities</p></figcaption></figure> <figure><img src="/files/Sdgb8T8G5tpfQtue32aS" alt=""><figcaption><p>.alien domain by ALIENX</p></figcaption></figure> <figure><img src="/files/J5m3Pj3t5Kf63NLhXHbM" alt=""><figcaption><p>.ail domain by AILayer</p></figcaption></figure></div>

<div><figure><img src="/files/O6UObTz1oDEi0fzdMjpW" alt="" width="375"><figcaption><p>.ll domain by Lightlink</p></figcaption></figure> <figure><img src="/files/IzcKZMxqvO3fT42ooEep" alt="" width="375"><figcaption><p>.tomo domain by TOMO</p></figcaption></figure> <figure><img src="/files/09OT5aK6zuO3q984wui3" alt="" width="384"><figcaption><p>.four domain by FOUR.MEME</p></figcaption></figure></div>

## Strategic

<div><figure><img src="/files/x1cVvarBjyx6PeALOsRu" alt=""><figcaption><p>BNB Chain</p></figcaption></figure> <figure><img src="/files/PlvJp7mfti7JMlfxrGFN" alt=""><figcaption><p>BscScan</p></figcaption></figure> <figure><img src="/files/vFMrKuymR5gtPbVIrgR7" alt=""><figcaption><p>Chainlink</p></figcaption></figure> <figure><img src="/files/rSOFhEziLhg0rxZquaVI" alt=""><figcaption><p>NodeReal</p></figcaption></figure></div>

<div><figure><img src="/files/HNuTk3PAyR07PAhC0kiN" alt=""><figcaption><p>Trust Wallet</p></figcaption></figure> <figure><img src="/files/pPkVZUSHzOANF5IrTVv2" alt=""><figcaption><p>Galxe</p></figcaption></figure> <figure><img src="/files/4jJgNk0i7zJGCTOKIw1Y" alt=""><figcaption><p>PancakeSwap</p></figcaption></figure></div>

<div><figure><img src="/files/JfDCyxrsceUzYav03mCd" alt=""><figcaption><p>BAS</p></figcaption></figure> <figure><img src="/files/CPSY7IW98qG3dfOhuZsZ" alt=""><figcaption><p>Arkham</p></figcaption></figure> <figure><img src="/files/CdEkMcirtXKHY6L2V9SN" alt=""><figcaption><p>Axelar Network</p></figcaption></figure></div>

## Exchange

<div><figure><img src="/files/U2f71mBB4pBPGfATMYS2" alt=""><figcaption><p>Huobi Global</p></figcaption></figure> <figure><img src="/files/iw0jqmiK9lKDbhcC4E5y" alt=""><figcaption><p>BitMart</p></figcaption></figure> <figure><img src="/files/PpGItQMHRukkMQfeg2bb" alt=""><figcaption><p>AscendEX</p></figcaption></figure> <figure><img src="/files/bSyYIilch4xoRlKFi4s9" alt=""><figcaption><p>Biconomy</p></figcaption></figure></div>

<div><figure><img src="/files/ri8LqjaZPh5G7ZxwxGZt" alt=""><figcaption><p>Trubit</p></figcaption></figure> <figure><img src="/files/3z0dIudN1n03X1pHcFpV" alt=""><figcaption><p>Phemex</p></figcaption></figure> <figure><img src="/files/Y47KjL2dLws3Pjs63pFF" alt=""><figcaption><p>Bifinance</p></figcaption></figure> <figure><img src="/files/ozQ6Koy80lehUxhJCLp1" alt=""><figcaption><p>XT</p></figcaption></figure></div>

<div><figure><img src="/files/G8bCxlSMwC74y8gfhtUF" alt=""><figcaption><p>TapBit</p></figcaption></figure> <figure><img src="/files/JjqlYsnEmSwZuDLVCBBQ" alt=""><figcaption></figcaption></figure> <figure><img src="/files/JjqlYsnEmSwZuDLVCBBQ" alt=""><figcaption></figcaption></figure> <figure><img src="/files/JjqlYsnEmSwZuDLVCBBQ" alt=""><figcaption></figcaption></figure></div>

## Wallet

<div><figure><img src="/files/1kOz9e546dtCxew9ZrCa" alt=""><figcaption><p>Metamask</p></figcaption></figure> <figure><img src="/files/z7Y1ePfTszrMzuo7HXhb" alt=""><figcaption><p>Ninji Wallet</p></figcaption></figure> <figure><img src="/files/oNL0VQLtioaYY3u5sXKh" alt=""><figcaption><p>Gate Web3 Wallet</p></figcaption></figure> <figure><img src="/files/t20CrqyNCcrASrzJbq8d" alt=""><figcaption><p>MyEtherWallet</p></figcaption></figure></div>

<div><figure><img src="/files/HNuTk3PAyR07PAhC0kiN" alt=""><figcaption><p>Trust Wallet</p></figcaption></figure> <figure><img src="/files/upc4wOEfMdoKbIqsMA9E" alt=""><figcaption><p>Bitget</p></figcaption></figure> <figure><img src="/files/L8QUy3Y0u0D4m27PKXUl" alt=""><figcaption><p>SafePal</p></figcaption></figure> <figure><img src="/files/dqZlBXG9u5BAeHmU2FOv" alt=""><figcaption><p>Token Pocket</p></figcaption></figure></div>

<div><figure><img src="/files/HZDSlnzA3K8ExywXSezi" alt=""><figcaption><p>Math Wallet</p></figcaption></figure> <figure><img src="/files/Zr1Z3rrYAbWziFkxWoVY" alt=""><figcaption><p>OKX Wallet</p></figcaption></figure> <figure><img src="/files/5iVEODna0BC6IxxSAxv1" alt=""><figcaption><p>Halo Wallet</p></figcaption></figure> <figure><img src="/files/UV8V3zPKV0kT7e0iTA4h" alt=""><figcaption><p>OneKey</p></figcaption></figure></div>

<div><figure><img src="/files/3TQ7iSiqVia3gZi1KqMr" alt=""><figcaption><p>UniPass</p></figcaption></figure> <figure><img src="/files/3zqaFiQsZZXKenHaBaK2" alt=""><figcaption><p>OpenBlock</p></figcaption></figure> <figure><img src="/files/nNx5TLMPE3F5KBwgOZeB" alt=""><figcaption><p>Frontier</p></figcaption></figure> <figure><img src="/files/3DSXopIg19PigAUepHpf" alt=""><figcaption><p>Clover Wallet</p></figcaption></figure></div>

<div><figure><img src="/files/YQ8XFnXkqGuiSxCe9RFM" alt=""><figcaption><p>CWallet</p></figcaption></figure> <figure><img src="/files/XD8uCg55Z54JHyNvSd2O" alt=""><figcaption><p>Coinhub</p></figcaption></figure> <figure><img src="/files/eOnAJriQDK4kCg1xV3rz" alt=""><figcaption><p>Carbon</p></figcaption></figure> <figure><img src="/files/JqdfacCPExzWqWm4pglk" alt=""><figcaption><p>FoxWallet</p></figcaption></figure></div>

<div><figure><img src="/files/OTZkw8Kcy2M5MKvqQltz" alt=""><figcaption><p>Holdstation (UB Venture)</p></figcaption></figure> <figure><img src="/files/1iHLPkHgGHYvIVHxklc7" alt=""><figcaption><p>Infinity Wallet</p></figcaption></figure> <figure><img src="/files/PiMIcz5ZUOP9AeahTS7e" alt=""><figcaption><p>IoTeX Wallet</p></figcaption></figure> <figure><img src="/files/NdjIqUwXmPnwd7D3eGnB" alt=""><figcaption><p>Finx Wallet</p></figcaption></figure></div>

<div><figure><img src="/files/98PlY3bEL0adThDlwbbY" alt=""><figcaption><p>Oxalus</p></figcaption></figure> <figure><img src="/files/V1CtXyON2Z1QXkhp404m" alt=""><figcaption><p>Coin98</p></figcaption></figure> <figure><img src="/files/a5Xj3T2Ew2gyLtfzCcez" alt=""><figcaption><p>Fin Wallet</p></figcaption></figure> <figure><img src="/files/xN5KdLOQVr6dCcoCSHK3" alt=""><figcaption><p>Leap Wallet</p></figcaption></figure></div>

<div><figure><img src="/files/v2DGtKuYgJhVWpEN92JG" alt=""><figcaption><p>Nabox Wallet</p></figcaption></figure> <figure><img src="/files/2lV65U3L4llyf863w35q" alt=""><figcaption><p>O3 Wallet</p></figcaption></figure> <figure><img src="/files/PoQuc6Ns0oEwDLsTnsnk" alt=""><figcaption><p>Onto Wallet</p></figcaption></figure> <figure><img src="/files/mnAva9xPJkdQuRWzuJv5" alt=""><figcaption><p>Gem Wallet</p></figcaption></figure></div>

<div><figure><img src="/files/905OJuj6VteZu0ZLg6JI" alt="" width="563"><figcaption><p>A3S</p></figcaption></figure> <figure><img src="/files/AR8M6NYMYYZW4elNBzEC" alt="" width="563"><figcaption><p>Reunit Wallet</p></figcaption></figure> <figure><img src="/files/Tm7zTMky8BW8wrSoyjdE" alt=""><figcaption><p>Kucoin Wallet</p></figcaption></figure> <figure><img src="/files/Nl6TQut0xiuydOEjmoR3" alt=""><figcaption><p>Particle Wallet</p></figcaption></figure></div>

## Blockchain Explorer

<div><figure><img src="/files/PlvJp7mfti7JMlfxrGFN" alt=""><figcaption><p>BscScan</p></figcaption></figure> <figure><img src="/files/GfRHKnoJzUoBZz8NRJEA" alt=""><figcaption><p>NFTScan</p></figcaption></figure> <figure><img src="/files/ceU9H7e51IkLYQbQwxmt" alt=""><figcaption><p>Mises</p></figcaption></figure> <figure><img src="/files/UlrwkhhNEiXomecsGN9I" alt=""><figcaption><p>RSS3</p></figcaption></figure></div>

<div><figure><img src="/files/GpUdnfzfATlqlZ17sl5z" alt=""><figcaption><p>Alltoscan</p></figcaption></figure> <figure><img src="/files/CakU152vcK1qzuAc3EcN" alt=""><figcaption><p>Blockin.ai</p></figcaption></figure> <figure><img src="/files/mDuKrb5KXrOeVwk5RYz9" alt=""><figcaption><p>3XPL Explorer</p></figcaption></figure> <figure><img src="/files/8N9P1w1aLVG5qUxf3sg7" alt=""><figcaption><p>DexCheck</p></figcaption></figure></div>

<div align="left"><figure><img src="/files/pO5tNtu6iyX9fo2No5I7" alt="" width="188"><figcaption><p>Blockscout</p></figcaption></figure> <figure><img src="/files/CdEkMcirtXKHY6L2V9SN" alt="" width="188"><figcaption><p>Axelar Scan</p></figcaption></figure></div>

## Tools

<div><figure><img src="/files/7URvc7XkfvSyWdGoIMLC" alt=""><figcaption><p>Chainbase</p></figcaption></figure> <figure><img src="/files/8Bo8Q1OsZJQRReZi2y9s" alt=""><figcaption><p>PearDAO</p></figcaption></figure> <figure><img src="/files/hDe1iyrrlYxFs566OZwh" alt=""><figcaption><p>CryptoKit</p></figcaption></figure> <figure><img src="/files/LsgqVSLubPAD2Yb8xYZF" alt=""><figcaption><p>Dtools</p></figcaption></figure></div>

<div><figure><img src="/files/ug5lesqD81YL2J1GWiiA" alt="" width="563"><figcaption><p>TARS Protocol</p></figcaption></figure> <figure><img src="/files/q94AJz4Civm8LRFosNfm" alt="" width="563"><figcaption><p>Footprint Analytics</p></figcaption></figure> <figure><img src="/files/2XLsoj6s2GVBNRcYbZlb" alt="" width="563"><figcaption><p>Marlin</p></figcaption></figure> <figure><img src="/files/YJeHfqfzPMYFZGzcJHIj" alt="" width="563"><figcaption><p>Retro</p></figcaption></figure></div>

## GameFi

<div><figure><img src="/files/iMFUvDPR5bAlvKVSib62" alt=""><figcaption><p>BovineVerse</p></figcaption></figure> <figure><img src="/files/iB1nz7KWnLI9QddUDfau" alt=""><figcaption><p>Superhero NFT Wars</p></figcaption></figure> <figure><img src="/files/e4jkwds3wLcb1M0Bd98o" alt=""><figcaption><p>Superhero NFT Wars</p></figcaption></figure> <figure><img src="/files/5FpLnlIML2dU9G7VOODR" alt=""><figcaption><p>Metastrike</p></figcaption></figure></div>

<div><figure><img src="/files/TppAKyyq2aiDAPjkbg9U" alt=""><figcaption><p>Pandafarm</p></figcaption></figure> <figure><img src="/files/eId6IlVhaLkt8WPtos20" alt=""><figcaption><p>Read2N</p></figcaption></figure> <figure><img src="/files/T9YNweaMrurm7e89qqoS" alt=""><figcaption><p>Macondo Games</p></figcaption></figure> <figure><img src="/files/xLtWOkunW6Lr4qHX2sB5" alt=""><figcaption><p>Moonshot</p></figcaption></figure></div>

<div><figure><img src="/files/B1LDJewlMYYkzAbMCGZY" alt=""><figcaption><p>AMAKUNI</p></figcaption></figure> <figure><img src="/files/dAT3wg2sL4I5rKAuFf9o" alt=""><figcaption><p>TCG</p></figcaption></figure> <figure><img src="/files/rbeqi5GQLsXcqkZl921J" alt=""><figcaption><p>Archloot</p></figcaption></figure> <figure><img src="/files/jnuUWMCqKlIeEvNoXIuM" alt=""><figcaption><p>StarryNift</p></figcaption></figure></div>

<div><figure><img src="/files/WjixJiG8CgPdOmXJzQ5H" alt=""><figcaption><p>BurgerCities</p></figcaption></figure> <figure><img src="/files/bs7vpxwsbxbZqYFwbDAp" alt=""><figcaption><p>X-Metaverse</p></figcaption></figure> <figure><img src="/files/SluoMv6V4NswXUYAGdiA" alt=""><figcaption><p>Project12</p></figcaption></figure> <figure><img src="/files/aUfuPDgDKl2xDwLQlXaw" alt=""><figcaption><p>BattleCity</p></figcaption></figure></div>

<div><figure><img src="/files/165X36fuHbhhIzm36uhH" alt="" width="375"><figcaption><p>Tiny World</p></figcaption></figure> <figure><img src="/files/EeT0YlShBfcFHiQXOC5O" alt="" width="375"><figcaption><p>Big Player</p></figcaption></figure> <figure><img src="/files/2zR1DN23Ct7voR0AQjFP" alt="" width="375"><figcaption><p>World of Dypians</p></figcaption></figure> <figure><img src="/files/rZQ6rrnSVF5CRsicyJbZ" alt="" width="375"><figcaption><p>Meta Apes</p></figcaption></figure></div>

## Social

<div><figure><img src="/files/9I85e1oLmNMw5UpJN2SR" alt=""><figcaption><p>CyberConnect</p></figcaption></figure> <figure><img src="/files/Scgc6EkAktLiCa57MQgu" alt=""><figcaption><p>Mask Network</p></figcaption></figure> <figure><img src="/files/SyjwRAnYwNNb8S9kn69f" alt=""><figcaption><p>SecondLive</p></figcaption></figure> <figure><img src="/files/PjjAy19MeTLE4DbmsXhI" alt=""><figcaption><p>Script Network</p></figcaption></figure></div>

<div><figure><img src="/files/d8Qqfootu530CejQ5UhP" alt=""><figcaption><p>Relation Labs</p></figcaption></figure> <figure><img src="/files/YLNJgGGisUqpeWHvuGwp" alt=""><figcaption><p>Metopia</p></figcaption></figure> <figure><img src="/files/BstnayabProZ8wjAitrl" alt=""><figcaption><p>Atem</p></figcaption></figure> <figure><img src="/files/Odne6SWcKxYaF7DxHDBQ" alt=""><figcaption><p>Altverse</p></figcaption></figure></div>

<div><figure><img src="/files/FKRzw2WT3wDcB2UPmkPF" alt=""><figcaption><p>CARV</p></figcaption></figure> <figure><img src="/files/kk9506aHuvqS5FlRxk1y" alt=""><figcaption><p>DeBox</p></figcaption></figure> <figure><img src="/files/Oh9RTDAvQC6YrRl6yryY" alt=""><figcaption><p>Dmail</p></figcaption></figure> <figure><img src="/files/ieMVLyOKpuXyqnn86NaM" alt=""><figcaption><p>TaskOn</p></figcaption></figure></div>

<div><figure><img src="/files/swV7x7JXxeEO66s15xtl" alt=""><figcaption><p>WIW</p></figcaption></figure> <figure><img src="/files/ievSq4ZVlyZZEmSYXxFQ" alt=""><figcaption><p>TokTok</p></figcaption></figure> <figure><img src="/files/Aub9xAnJ9CWKwt1K2wze" alt=""><figcaption><p>DMTP</p></figcaption></figure> <figure><img src="/files/bUTZQDDjLNZNWDxemYqQ" alt=""><figcaption><p>Mail3</p></figcaption></figure></div>

<div align="left"><figure><img src="/files/WyCMCGKrIIxeXijz5H2U" alt="" width="188"><figcaption><p>Rese Social</p></figcaption></figure> <figure><img src="/files/Q8NEtUGip9obV8rBx4e3" alt="" width="188"><figcaption><p>Push Protocol</p></figcaption></figure> <figure><img src="/files/NUJbFBiqT2vR6CritK6y" alt="" width="188"><figcaption><p>BreadnButter</p></figcaption></figure></div>

## DeFi

<div><figure><img src="/files/D1Dn5hunCUd5jpbWcusx" alt=""><figcaption><p>Beefy</p></figcaption></figure> <figure><img src="/files/R1viUzbog411XXsAtgt3" alt=""><figcaption><p>DODO</p></figcaption></figure> <figure><img src="/files/4jJgNk0i7zJGCTOKIw1Y" alt=""><figcaption><p>PancakeSwap</p></figcaption></figure> <figure><img src="/files/2v46HdE5ms8tAxBZwD7q" alt=""><figcaption><p>BabySwao</p></figcaption></figure></div>

<div><figure><img src="/files/JhcqqUVFQHxCb2ExTdZc" alt=""><figcaption><p>BabyDoge</p></figcaption></figure> <figure><img src="/files/kYSYuIVdCEunyq8NlbPF" alt=""><figcaption><p>ApeSwap</p></figcaption></figure> <figure><img src="/files/5Klukwh96KSahI68so9u" alt=""><figcaption><p>ApolloX</p></figcaption></figure> <figure><img src="/files/LzG5sLsMzWm3KjEFHqb3" alt=""><figcaption><p>Helio Money</p></figcaption></figure></div>

<div><figure><img src="/files/cqM7ImULKcMFbcNz69JZ" alt=""><figcaption><p>Deri Trade</p></figcaption></figure> <figure><img src="/files/1ORAmx8LQokaG4DxkYLb" alt=""><figcaption><p>ROSEON</p></figcaption></figure> <figure><img src="/files/xzKcs17XCNdJUbDnkA2Q" alt=""><figcaption><p>Biswap</p></figcaption></figure> <figure><img src="/files/zYe4A4itSNwbTbxDT2ZC" alt=""><figcaption><p>OpenLeverage</p></figcaption></figure></div>

<div><figure><img src="/files/D87grD7JRInZ4BXFsaHd" alt=""><figcaption><p>DePocket</p></figcaption></figure> <figure><img src="/files/Z5q7fD3jnTCFHR4U2kHw" alt=""><figcaption><p>Magpie</p></figcaption></figure> <figure><img src="/files/aAveGIdSiDA6ooTxZDrT" alt=""><figcaption><p>Bolide</p></figcaption></figure> <figure><img src="/files/CgXQ076ppHcoiRVbSUv9" alt=""><figcaption><p>Solo.top</p></figcaption></figure></div>

<div><figure><img src="/files/AvkGGjlT4kPn7eYpzuoO" alt=""><figcaption><p>TEN Finance</p></figcaption></figure> <figure><img src="/files/pKf9JyUVNJkGRjOvJ5Q0" alt=""><figcaption><p>OpenMeta</p></figcaption></figure> <figure><img src="/files/11hMGbr2a6SG1to7DiQc" alt=""><figcaption><p>DAOStarter</p></figcaption></figure> <figure><img src="/files/jRK6Ot6JRBXfk11tJVbI" alt=""><figcaption><p>UrDEX</p></figcaption></figure></div>

<div><figure><img src="/files/NiOmhtaYOrostleyA0Dc" alt="" width="375"><figcaption><p>Stader</p></figcaption></figure> <figure><img src="/files/Ym5r2mf4OUJD1YQqutut" alt="" width="375"><figcaption><p>MixTrust</p></figcaption></figure> <figure><img src="/files/t5kIdaqu1QREblje32d1" alt="" width="375"><figcaption><p>JetPad</p></figcaption></figure> <figure><img src="/files/G14HyEcuFh2MNkG1N0bh" alt="" width="375"><figcaption><p>IceCreamSwap</p></figcaption></figure></div>

<div><figure><img src="/files/m8Qon0t9bwJejw57oV4v" alt=""><figcaption><p>THENA</p></figcaption></figure> <figure><img src="/files/x5IFQouGsEQsvZmJfOWX" alt=""><figcaption><p>Shoebill Finance</p></figcaption></figure> <figure><img src="/files/BWL3nc2S1l5gW6oGMcUB" alt=""><figcaption><p>Accumulated Finance</p></figcaption></figure> <figure><img src="/files/tdU935hAZ63K64WBLVBT" alt=""><figcaption><p>BunnyFi</p></figcaption></figure></div>

<div><figure><img src="/files/x6hZaUUrFil3NIkzpHLg" alt="" width="375"><figcaption><p>Anzen Finance</p></figcaption></figure> <figure><img src="/files/XYTqMdTEYwkfhRKndaZd" alt="" width="375"><figcaption><p>Lovely Swap</p></figcaption></figure> <figure><img src="/files/0rCtYf6uMGJK1p7SxXt5" alt="" width="375"><figcaption><p>Contrax Finance</p></figcaption></figure></div>

## Marketplace

<div><figure><img src="/files/m0YeDJPP5JicNLjj70bG" alt=""><figcaption><p>Element</p></figcaption></figure> <figure><img src="/files/Qeh5NMoBgAzdwPUDd5V1" alt=""><figcaption><p>Rareboard</p></figcaption></figure> <figure><img src="/files/gQYu9X6ROj81J1NYuHN7" alt=""><figcaption><p>Doaverse</p></figcaption></figure> <figure><img src="/files/tF3x0EWS5VbUe8aM3cqJ" alt=""><figcaption><p>TofuNFT</p></figcaption></figure></div>


# Terms of Use

Effecitve Date: Sept 11th, 2024

PLEASE READ THESE TERMS OF USE CAREFULLY. BY ACCESSING OR USING THIS WEBSITE, YOU AGREE TO BE BOUND BY THE TERMS DESCRIBED HEREIN AND ALL TERMS INCORPORATED BY REFERENCE. IF YOU DO NOT AGREE TO ALL OF THESE TERMS, DO NOT USE THIS WEBSITE.

Any person accessing the SPACE ID’s services accepts, without any limitation or qualification, the Terms of Use (the “Terms”) set forth below. These Terms apply to your access to, and use of, all or part of the website and any other websites operated by SPACE ID Labs ltd. (“SPACE ID”). These Terms do not alter in any way or conditions of any other agreement you may have with SPACE ID Labs ltd. for products, services or otherwise. If you are using the website on behalf of any entity, you represent and warrant that you are authorized to accept these Terms on such entity’s behalf, and that such entity agrees to indemnify you and SPACE ID Labs ltd. for violations of these Terms. These Terms contain disclaimers and other provisions that limit our liability to you, for which you agree to be bound.

1. Who we are

The SPACE ID platform offers a comprehensive name service network that serves as a unified identity solution for the discovery, registration, trading, and management of Web3 domains. Additionally, we provide a Web3 Name SDK and API, allowing developers to seamlessly incorporate Web3 names across various blockchain applications. Our platform facilitates the creation and management of Web3 identities in a centralized manner. SPACE ID's all-in-one Web3 domain and identity platform simplifies domain management, eliminating the need to use multiple products for different domain services. Everything required for domain management is easily accessible in one centralized location.

Our platform offers a variety of services, including but not limited to seamless domain listing capabilities. You can easily set a fixed price, select the duration, and determine the price for your Web3 domain. Once you've entered the necessary details, simply click "List" to make it available for sale. Service fees may apply for utilizing our platform's capabilities, please contact us for more details.

2. What are Web3 domains and how are they different from traditional DNS domains

Web3 domains are hosted on a public blockchain, providing users with ownership of their data. A major advantage of Web3 domains is the simplification of cryptocurrency transactions by replacing multiple wallet addresses with a single, easy-to-remember domain name. These domains also serve as identities and provide access to Web3 applications. Notably, when you purchase and register a Web3 domain from Unstoppable Domains, it's yours permanently without the need for renewal fees, unlike traditional DNS domains. Web3 domains differ significantly from traditional DNS domains in that they utilize a decentralized root zone instead of the centralized DNS root zone managed by ICANN. As a result, Web3 domains do not resolve like DNS domains and currently require special browser plugins or network configurations to function with websites on the DNS.

3. Access to the Site

Subject to these Terms. SPACE ID grants you a non-transferable, non-exclusive, revocable, limited license to access the Site solely for your own personal, noncommercial use.

Certain Restrictions. The rights approved to you in these Terms are subject to the following restrictions: (a) you shall not sell, rent, lease, transfer, assign, distribute, host, or otherwise commercially exploit the Site; (b) you shall not change, make derivative works of, disassemble, reverse compile or reverse engineer any part of the Site; (c) you shall not access the Site in order to build a similar or competitive website; and (d) except as expressly stated herein, no part of the Site may be copied, reproduced, distributed, republished, downloaded, displayed, posted or transmitted in any form or by any means unless otherwise indicated, any future release, update, or other addition to functionality of the Site shall be subject to these Terms.  All copyright and other proprietary notices on the Site must be retained on all copies thereof.

SPACE ID reserves the right to change, suspend, or cease the Site with or without notice to you.  You approved that SPACE ID will not be held liable to you or any third-party for any change, interruption, or termination of the Site or any part.

4. Accuracy of Information

While SPACE ID Labs ltd. has attempted to ensure the accuracy of the information, neither SPACE ID Labs ltd. nor its information contributors can be held responsible by you for the accuracy of the information found on the Website. All information on the website is provided “as is.” SPACE ID Labs ltd. makes no express or implied warranties as to the accuracy or merchantability of content or programming.

5. Communication with SPACE ID

Any communication through the website with SPACE ID Labs ltd. is for informational purposes only and to assist users in obtaining information about or related to our services. By submitting any information to SPACE ID, you expressly agree that (i) SPACE ID Labs ltd. or its partners, contractors and affiliates may send you emails regarding new information and update of our company; (ii) you are not obtaining any pre-registration rights, registration rights, or any other rights in any domain name; (iii) SPACE ID Labs ltd. makes no guarantee that any domain name will be available for registration through any party; and (iv) SPACE ID Labs ltd. makes no guarantee as to the content, sequence, accuracy, timeliness or completeness of the information or data provided by SPACE ID Labs ltd..

6. User Content

User Content. “User Content” means any and all information and content that a user submits to the Site. You are exclusively responsible for your User Content. You bear all risks associated with use of your User Content. You hereby certify that your User Content does not violate our Acceptable Use Policy. You may not represent or imply to others that your User Content is in any way provided, sponsored or endorsed by SPACE ID. Because you alone are responsible for your User Content, you may expose yourself to liability. SPACE ID is not obliged to backup any User Content that you post; also, your User Content may be deleted at any time without prior notice to you. You are solely responsible for making your own backup copies of your User Content if you desire.

You hereby grant SPACE ID an irreversible, nonexclusive, royalty-free and fully paid, worldwide license to reproduce, distribute, publicly display and perform, prepare derivative works of, incorporate into other works, and otherwise use and exploit your User Content, and to grant sublicenses of the foregoing rights, solely for the purposes of including your User Content in the Site. You hereby irreversibly waive any claims and assertions of moral rights or attribution with respect to your User Content. You agree not to use this site for registering domains to collect, upload, transmit, display, or distribute any content that (i) infringes on third-party or intellectual property rights; (ii) is unlawful, harassing, abusive, threatening, harmful, invasive of privacy, vulgar, defamatory, false, intentionally misleading, libelous, pornographic, obscene, offensive, or that incites racism, bigotry, hatred, or harm against groups or individuals; (iii) is harmful to minors; or (iv) violates any laws, regulations, or third-party obligations or restrictions.

In addition, you agree not to: (i) upload, transmit, or distribute to or through the Site any software intended to damage or alter a computer system or data; (ii) send through the Site unsolicited or unauthorized advertising, promotional materials, junk mail, spam, chain letters, pyramid schemes, or any other form of duplicative or unsolicited messages; (iii) use the Site to harvest, collect, gather or assemble information or data regarding other users without their consent; (iv) interfere with, disrupt, or create an undue burden on servers or networks connected to the Site, or violate the regulations, policies or procedures of such networks; (v) attempt to gain unauthorized access to the Site, whether through password mining or any other means; (vi) harass or interfere with any other user’s use and enjoyment of the Site; or (vi) use software or automated agents or scripts to produce multiple accounts on the Site, or to generate automated searches, requests, or queries to the Site.

You agree to indemnify and hold SPACE ID and its officers, employees, and agents harmless, including costs and attorneys’ fees, from any claim or demand made by any third-party due to or arising out of (a) your use of the Site, (b) your violation of these Terms, (c) your violation of applicable laws or regulations or (d) your User Content.  SPACE ID reserves the right to assume the exclusive defense and control of any matter for which you are required to indemnify us, and you agree to cooperate with our defense of these claims.  You agree not to settle any matter without the prior written consent of SPACE ID. SPACE ID will use reasonable efforts to notify you of any such claim, action or proceeding upon becoming aware of it.

7. Third-Party Links & Ads; Other Users

Third-Party Links & Ads. The Site may contain links to third-party websites and services, and/or display advertisements for third-parties.  Such Third-Party Links & Ads are not under the control of SPACE ID, and SPACE ID. is not responsible for any Third-Party Links & Ads.  SPACE ID. provides access to these Third-Party Links & Ads only as a convenience to you, and does not review, approve, monitor, endorse, warrant, or make any representations with respect to Third-Party Links & Ads.  You use all Third-Party Links & Ads at your own risk, and should apply a suitable level of caution and discretion in doing so. When you click on any of the Third-Party Links & Ads, the applicable third party’s terms and policies apply, including the third party’s privacy and data gathering practices.

Other Users. Each Site user is solely responsible for any and all of its own User Content. Because we do not control User Content, you acknowledge and agree that we are not responsible for any User Content, whether provided by you or by others.  You agree that the SPACE ID will not be responsible for any loss or damage incurred as the result of any such interactions.  If there is a dispute between you and any Site user, we are under no obligation to become involved. You hereby release and forever discharge SPACE ID and our officers, employees, agents, successors, and assigns from, and hereby waive and relinquish, each and every past, present and future dispute, claim, controversy, demand, right, obligation, liability, action and cause of action of every kind and nature, that has arisen or arises directly or indirectly out of, or that relates directly or indirectly to, the site.

8. Disclaimers

The site is provided on an “as-is” and “as available” basis, and SPACE ID and our suppliers expressly disclaim any and all warranties and conditions of any kind, whether express, implied, or statutory, including all warranties or conditions of merchantability, fitness for a particular purpose, title, quiet enjoyment, accuracy, or non-infringement.  We and our suppliers make not guarantee that the site will meet your requirements, will be available on an uninterrupted, timely, secure, or error-free basis, or will be accurate, reliable, free of viruses or other harmful code, complete, legal, or safe.  If applicable law requires any warranties with respect to the site, all such warranties are limited in duration to ninety (90) days from the date of first use.

9. Limitation on Liability

To the maximum extent permitted by law, in no event shall SPACE ID or our suppliers be liable to you or any third-party for any lost profits, lost data, costs of procurement of substitute products, or any indirect, consequential, exemplary, incidental, special or punitive damages arising from or relating to these terms or your use of, or incapability to use the site even if SPACE ID has been advised of the possibility of such damages.  Access to and use of the site is at your own discretion and risk, and you will be solely responsible for any damage to your device or computer system, or loss of data resulting therefrom.

To the maximum extent permitted by law, notwithstanding anything to the contrary contained herein, our liability to you for any damages arising from or related to this agreement, will at all times be limited to a maximum of fifty U.S. dollars (u.s. $50). The existence of more than one claim will not enlarge this limit.  You agree that our suppliers will have no liability of any kind arising from or relating to this agreement.

10. Term and Termination

Subject to this Section, these Terms will remain in full force and effect while you use the Site. We may suspend or terminate your rights to use the Site at any time for any reason at our sole discretion, including for any use of the Site in violation of these Terms. Upon termination of your rights under these Terms, your Account and right to access and use the Site will terminate immediately. You understand that any termination of your Account may involve deletion of your User Content associated with your Account from our live databases. SPACE ID will not have any liability whatsoever to you for any termination of your rights under these Terms.&#x20;

11. Copyright Policy.

SPACE ID respects the intellectual property of others and asks that users of our Site do the same.  In connection with our Site, we have adopted and implemented a policy respecting copyright law that provides for the removal of any infringing materials and for the termination of users of our online site who are repeat infringers of intellectual property rights, including copyrights.&#x20;

12. General

These Terms are subject to occasional revision, and if we make any substantial changes, we may notify you by sending you an e-mail to the last e-mail address you provided to us and/or by prominently posting notice of the changes on our Site. You are responsible for providing us with your most current email address.  In the event that the last e-mail address that you have provided us is not valid, our dispatch of the e-mail containing such notice will nonetheless constitute effective notice of the changes described in the notice.  Any changes to these Terms will be effective upon the earliest of thirty (30) calendar days following our dispatch of an email notice to you or thirty (30) calendar days following our posting of notice of the changes on our Site. These changes will be effective immediately for new users of our Site. Continued use of our Site following notice of such changes shall indicate your acknowledgement of such changes and agreement to be bound by the terms and conditions of such changes. Dispute Resolution. Please read this Arbitration Agreement carefully. It is part of your contract with SPACE ID and affects your rights. It contains procedures for MANDATORY BINDING ARBITRATION AND A CLASS ACTION WAIVER.

Applicability of Arbitration Agreement. All claims and disputes in connection with the Terms or the use of any product or service provided by SPACE ID that cannot be resolved informally or in small claims court shall be resolved by binding arbitration on an individual basis under the terms of this Arbitration Agreement.  Unless otherwise agreed to, all arbitration proceedings shall be held in English. This Arbitration Agreement applies to you and the SPACE ID, and to any subsidiaries, affiliates, agents, employees, predecessors in interest, successors, and assigns, as well as all authorized or unauthorized users or beneficiaries of services or goods provided under the Terms.

Waiver of Class or Consolidated Actions. All claims and disputes within the scope of this arbitration agreement must be arbitrated or litigated on an individual basis and not on a class basis, and claims of more than one customer or user cannot be arbitrated or litigated jointly or consolidated with those of any other customer or user.

Confidentiality. All aspects of the arbitration proceeding shall be strictly confidential. The parties agree to maintain confidentiality unless otherwise required by law.  This paragraph shall not prevent a party from submitting to a court of law any information necessary to enforce this Agreement, to enforce an arbitration award, or to seek injunctive or equitable relief.

Severability. If any part or parts of this Arbitration Agreement are found under the law to be invalid or unenforceable by a court of competent jurisdiction, then such specific part or parts shall be of no force and effect and shall be severed and the remainder of the Agreement shall continue in full force and effect.

Right to Waive. Any or all of the rights and limitations set forth in this Arbitration Agreement may be waived by the party against whom the claim is asserted.  Such waiver shall not waive or affect any other portion of this Arbitration Agreement.

Survival of Agreement. This Arbitration Agreement will survive the termination of your relationship with SPACE ID.

Small Claims Court. Nonetheless the foregoing, either you or the SPACE ID may bring an individual action in small claims court.

13. Entire Terms.&#x20;

These Terms constitute the entire agreement between you and us regarding the use of the Site. Our failure to exercise or enforce any right or provision of these Terms shall not operate as a waiver of such right or provision. The section titles in these Terms are for convenience only and have no legal or contractual effect. The word “including” means “including without limitation”. If any provision of these Terms is held to be invalid or unenforceable, the other provisions of these Terms will be unimpaired and the invalid or unenforceable provision will be deemed modified so that it is valid and enforceable to the maximum extent permitted by law.  Your relationship to SPACE ID is that of an independent contractor, and neither party is an agent or partner of the other. These Terms, and your rights and obligations herein, may not be assigned, subcontracted, delegated, or otherwise transferred by you without SPACE ID’s prior written consent, and any attempted assignment, subcontract, delegation, or transfer in violation of the foregoing will be null and void. SPACE ID may freely assign these Terms.  The terms and conditions set forth in these Terms shall be binding upon assignees.

***

Contact Us

If you have any questions, concerns, or suggestions regarding this Terms of Service, please feel free to contact us at

Email: <legal@space.id>\ <br>


