LNS as NFT
Last updated
Last updated
When LNS .bch registrar migrated in May 2019, the .bch registrar became an compliant non-fungible token contract, meaning that .bch registrations can be transferred in the same fashion as other NFTs.
The tokenId of LNS name is simply the uint256 representation of the hash of the label (vitalik
for vitalik.bch
).
In the example above, is the tokenId of vitalik.bch
Unlike deriving tokenId, deriving LNS name from tokenId is not as easy. This is because all LNS names are stored as fixed-length hash to allow registering infinite length of names. The downside of this architecture is that you cannot directly query LNS smart contracts to return LNS name using tokenId.
Our recommended way is to query via LNS subgraph. The graph decodes the hash to name as it indexes. The example code to query is as follows.
Currently, all the subdomains nor non .bch
domains are not NFT, unless the domain registrar itself supports NFT. If you want to turn all subdomains which you own, you have to create a registrar
Create a registrar contract as ERC721 compliant
Set LNS registry address (mostly when you deploy the registrar)
Create register
function which calls registry.setSubnodeOwner
then mint the token making the subdomain label hash as tokenId
Once deployed, then you have to transfer the controller address to the contract.
For non-technical users, we are currently working on upgrading our SubdomainRegistrar
which allows you to turn your subdomain into NFT without any coding.
.bch does not have .tokenURI
. However, we created a separate metadata service which NFT marketplaces like OpenSea can fetch metadata for LNS such as registration data, expiration date, name length, etc. For more detail, please refer to the metadata documentation site.
If you prefer not to rely on a third party like TheGraph, the team open-sourced containing a link to the original dataset (6GB with 133 million entities) so that you can host your own LNS name decoding service.