Skip Navigation LinksRegister NFTs

​​​​Non-Fungible Tokens

So-called Non-Fungible Tokens (NFTs) have become popular in the last time. When you have two 1 dollar coins in your pocket, it doesn't matter whether you pay for your coffee with one coin or the other. The coins only represent a value and are interchangeable against each other or fungible. Non-fungible tokens, however, are representing one specific asset and are thus unique. Mostly, these tokens represent digital art, with the binary data of the particular file stored as the value of the NFT record. For larger objects, even if they are not of a digital nature, all identifying information can be stored as an NFT to prove owner- and authorship. For digital files, a hash of the file can be taken as the value, with MD5 being the most common hash algorithm used to verify digital files. Other algorithms such as SHA-1 are popular as well. With the first confirmation on the blockchain, your NFT gets an immutable timestamp, so you can prove that you were the first one who published the file in question.

​It has to be taken in consideration that the records on the Namecoin blockchain will expire after 36,000 blocks. Even though the timestamp itself will be preserved even on an expired NFT record, you will have to take care of a regular renewal in time to avoid any abuse of your NFT.

Definition of NFTs

On December 2, 2013, Vitalik Buterin published the Ethereum whitepaper, introducing the term “non-fungible assets“, referring explicitely to domain names on the Namecoin blockchain. On January 24, 2018, Ethereum introduced the Non-Fungible Token Standard (EIP-721). Since then, the term NFT has been used as a synonym for all types of assets secured on blockchains.

Technically, an NFT is a unique cryptographic asset (also called primary asset) that represents the secondary asset, which can be image data written directly to the blockchain or an external image linked by a URL. On Namecoin, the cryptographic asset is the key/value pair of the asset's name and its data value (the payload data of the secondary asset). On the back-end, this asset is assigned to a cryptographic token, represented by the assigned NMC address and its private key. Due to the concept of Namecoin’s expiration, this cryptographic token will change after each name update, including renewals, transfers or re-registrations. With so called custom raw transactions, it is possible to renew the asset on the existing address.

However, the cryptographic asset is unique and exists forever since its creation, all historical data values are immutably attached. For more details, see chapter Data structure and integrity as well as section Sortable tables of the connected auction platform.

Namecoin is a decentralized Domain Name System and crypto currency based on and secured by Bitcoin technology

Namecoin is a decentralized Domain Name System and crypto currency based on and secured by Bitcoin technology

Searching for NFTs

To search for existing NFTs on the blockchain the implemented console of the Namecoin Core wallet can be taken. For Core version 0.13.99 the first ten results would be shown with the following command:

name_filter nft/ 36000 0 10

Please refer to section Searching for names for further details.

Registering NFTs

For registering an NFT on the Namecoin blockchain the nft/ namespace is used. Since this namespace is dedicated for file names and their metadata, no TLD (Top Level Domain) is assigned to it. While the filename is represented by the key of your record the value shows the hash and additional info such as author and URL. With the same procedure as domains are registered, the value of the first update operation would look like the example of our video intro:

{"MD5":"93443567f2268d8826172d4df1d4d841","author":"Uwe Martens","url":""}

The hash can be generated easily with different tools. Using the Windows command line interface (CMD) the command looks like:

certutil -hashfile "C:\Users\Administrator\Desktop\Namecoin_has_impact.mp4" MD5

The hash is then displayed in the console. The same command is used to verify a digital file. The resulting hash needs then just to be compared with the value on the blockchain.

Verifying ownership

In addition to the data specified in the value data, such as the origin URL, you can verify the ownership of an NFT via the unique cryptographic signature of the corresponding Namecoin address. To generate and verify the signature, a text string specified by the requestor is signed by the owner using his NFT's private key. Any preferred text string can be used, but it is strongly recommended to use a unique string, for example, containing the current date and time. For instance, if you consider to buy an NFT or just verify the authorship, you can ask the owner to sign the string "verify 2021-12-22 18:00:00 CET" with his NFT.

To sign and verify, you need first to request the Namecoin address to which the NFT is assigned on the blockchain. If you didn't get the address via a blockchain explorer, you can request it via the debug window e.g. of the Namecoin Core wallet, in most wallets: ➞ Window, ➞ Console, with the following command, for example:

name_show nft/Namecoin_has_impact.mp4

As the owner of the NFT, highlight and copy the address between the quotation marks of the result to the clipboard.

Namecoin is a decentralized Domain Name System and crypto currency based on and secured by Bitcoin technology

Namecoin is a decentralized Domain Name System and crypto currency based on and secured by Bitcoin technology

Please note that the wallet has to be unlocked to generate the signature! The following command is used to create a signature for the desired text string, in our example:

signmessage NCBYAqq96N9vURmdcNFsHzkSvJuUnkSZkc "verify 2021-12-22 20:12:59 CET"

You may also sign the string via the wallet menu ➞ File, ➞ Sign message (e.g. of the Core wallet). The generated signature is a Base64 encoded string with 88 characters and needs to be submitted to the requestor, e.g. by e-mail. As the requestor of the verification, you can use the menu ➞ File, ➞ Verify message to check easily the given signature for the defined text string, or go the debug window and use the command verifymessage followed by the Namecoin address, the signature and the text string, in our example:

verifymessage NCBYAqq96N9vURmdcNFsHzkSvJuUnkSZkc H2DiycV8ns9oFIOiYVhSHYFa3TKMMYB1WD0967Sp/0T9SqFR76655aexbOj+Nz8XszIB/N35MmmRCbuTsCR0xyI= "verify 2021-12-22 20:12:59 CET"

If the verification is done via the menu, "Message verified" is displayed in the window if the verification succeeded. In the debug window the result "true" is returned.

Last but not least, it has to be mentioned that the process of signing and verifying is not limited to the nft/ namespace and can be performed with all records on the blockchain, so of course with domains as well, which are technically also a type of NFTs.

Software compatibility

The example above was generated with Namecoin Core version 0.19. Please make sure that both the verifying requestor and the signing owner of the NFT use the same software wallet in the latest version. Both Namecoin Core and Electrum light wallet are capable of signing and verification. However, if you sign a verification string in, let's say, Namecoin Core version 0.13.99 (with the additional name tab), the verification will fail in Core version 0.19 and vice versa. If the verification fails, either the owner of the NFT or the requestor would have to change their software version.

Please note further that the signing and verification process is enabled for records assigned to P2PKH legacy addresses (pay-to-public-key hash) in Base58 format only. Bech32 addresses (starting with nc1...) aren't supported for now. This issue comes from the underlying Bitcoin code and will be fixed with BIP 322.

Under all circumstances, please note the section Upgrades, Backup & Restore on the Downloads page!

Namecoin is a decentralized Domain Name System and crypto currency based on and secured by Bitcoin technology