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
Since the discussions on whether Namecoin assets can be considered NFTs or not are regularly ongoing, a focus on the origin of the term “NFT” is needed. The term was introduced by Ethereum on January 24, 2018 with
EIP-721: Non-Fungible Token Standard. The term was then used as a synonym for all types of assets secured on blockchains. Generally, an NFT is considered an asset. The argument of people claiming to own the first NFTs ever they got on the Ethereum chain is:
"Your Namecoin assets can't be Non-Fungible Tokens because the cryptographic token changes after re-registration." However, this reasoning fails because an NFT is defined in the general sense by a unique asset, assigned to a cryptographic token, which in the case of Namecoin is the private key represented by the assigned NMC address.
Due to the concept of Namecoin’s expiration those cryptographic tokens change after each name update, including renewals, transfers or re-registrations. But the NFT standard introduced with EIP-721 didn’t introduce or even mention any expiration time. So a term created for another blockchain project can only be understood by analogy to the original intent. And that intent was to define a cryptographic representation (the NFT) of a unique asset, e.g. a graphic stored on an external server. A Namecoin asset, e.g. a so-called Twitter egg, is such a cryptographic representation, even and especially because the represented asset (in this case a Twitter avatar) is not the cryptographic asset. So there are two types of assets to consider here. It's clear, that the Namecoin asset (the name of the blockchain record) is a synonym for what is commonly referred to as NFT - even if that cryptographic asset is assigned to a temporary cryptographic token on the back-end.
For more details, see chapter
Data structure and integrity as well as section
Sortable tables of the connected auction platform.
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.
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:
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.
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: ➞
Console, with the following command, for example:
As the owner of the NFT, highlight and copy the address between the quotation marks of the result to the clipboard.
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:
NCBYAqq96N9vURmdcNFsHzkSvJuUnkSZkc "verify 2021-12-22 20:12:59 CET"
You may also sign the string via the wallet menu ➞
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 ➞
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:
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.
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
Under all circumstances, please note the section Upgrades, Backup & Restore on the Downloads page!