The Standard: EIP-3525

Computational NFTs are NFTs with computability.

Class Derivation

Computational NFT is a "Super NFT" that is compatible with ERC721 and combined with the advantages of both ERC20 and ERC721, thus making it a general description protocol for non-monetary digital assets.
Semi-fungible Token
vNFT is the implementation protocol for computational NFTs proposed by the Solv team.
Vouchers are computational NFTs that are implemented based on the standard of vNFT.
vNFT is a specific standard for computational NFTs. Its purpose is to add computability to NFTs, specifically to allow the mass production of a large number of NFTs of the same type based on vNFT. Back to the factory metaphor, now the vNFT factory can manufacture unique products and produce a large number of products as requested. This is the optimum condition of flexibility and efficiency for NFT creation.
The design of vNFT is based on basic ideas of the following three:
  1. 1.
    "Quantity" is the core attribute of vNFT;
  2. 2.
    A standard mechanism for abstraction and classification, named as SLOT;
  3. 3.
    vNFT is compatible with ERC721.

Refungible: Abstraction and Classification

No two leaves in the world are the same, nor are two apples the same. Once you fell into this level microcosmos, there just left one completely different thing after another in the world. We can never add one apple to another, nor come up with the concept of "two apples."
Fortunately, we humans have a remarkable cognitive ability of abstraction and classification. The abstraction is to purposefully neglect special features of an object and emphasize the commonality between it and other similar objects. Based on this commonality, we classify these objects under a certain concept as a group. This ability helps us develop concepts such as "apple", "leaf", "tiger", and "jujube", and allows the calculation of sums among the same group of objects under certain circumstances. When we say "two apples", we actually abstract two objects that are classified as the same group into the same thing, eliminate the differences between them, conduct a "re-fungible" process, and then execute an operation of one plus one equals two, to create the concept of "two apples."
The same logic applies to NFTs. Of course, two NFTs are different. But if we apply abstraction and categorization to NFTs and neglect the difference, we can "re-fungible" them and enable a variety of calculations, including addition and scalar multiplication.
However, as the major standard of NFTs, ERC721 is over-emphasizing the uniqueness of each NFT and fails to provide a standard way to abstract and classify NFTs. This is the root cause of the non-computability for ERC721 NFTs and the starting point of the innovation for computational NFTs.

The Implementation: vNFT Token Standard

VNFT is ERC-721 compatible, which means, as an ERC-721 token, each VNFT contains an ID property to identify itself as a universally unique entity. What empowers a VNFT is that it contains a 'units' property, representing the quantitative nature of the token. Thus, this VNFT can be split into several different VNFTs, with certain properties maintained unchanged but the sum of the units of all split-out VNFTs equals that of the original one. Nevertheless, each VNFT has a 'SLOT' attribute, which labels its logical category. Several VNFTs can be merged into one VNFT if their SLOT attributes indicate that they are of the same category.

"Quantity" is the Core Attribute

ERC721 assumes that each NFT is unique, so by default, its number is 1. Since the number of each NFT is always 1, there's no need to express it explicitly.
Computational NFTs are different. A Computational NFT always contains a quantitative attribute, which is the origin of mathematical calculations it supports. This is why we set "Quantity" as a core attribute in vNFT. For example, let's say you use a vNFT to represent your digital business card and its "Quantity" is 100, which means that the vNFT is not just a business card but a collection of 100 business cards. And of course, this "Quantity" could be just the number of 1.
Quantity as a core attribute of vNFT
As you can see, a vNFT can be either a single, unique NFT or the sum of several similar NFTs. For example, a bond of $100 could be considered as the sum of 100 bonds $1. A bill of lading containing 30 commodities of a certain type could be considered as the sum of 30 bills of lading containing a single commodity. Solv Protocole makes this addition of NFTs possible by setting "Quantity" along with the "ID" information as the first-class attributes in the vNFT token standard. In other words, the addition of two vNFTs is merging one vNFT into another as a whole one with the addition of their quantitative attribute while other attributes of the same types stay unchanged. This is the fundamental of the computability for NFTs.
The inverse operation of addition is subtraction. A direct result of the "Quantity" attribute is vNFT now can be split into several pieces. A vNFT could be split into two pieces as long as the sum of quantitative attributes of the two is equal to the quantitative attribute of the original vNFT. For example, you can split a bond of $100 expressed in vNFT into two bonds - one bond with the face value of $20 and another one with the face value of $80. As a matter of fact, users can split vNFTs into pieces and transfer the split portion to others with the power of the Solv Vouchers platform. At present, the fractionalization and financialization of NFTs is a hot topic to marry DeFi and NFT together, and a few solutions technically feasible are developed but with quite complicated implementations. While using vNFT, the fractionalization of NFTs with abilities to split/merge or partial transfer is born by nature.
The quantity attribute of vNFT is very flexible for practical use and could be used to express the number of investment shares, as well as quantities of various measurements such as acreage, length, weight, price, etc. The vNFT standard allows developers to impose various constraints on these quantitative attributes to meet the needs of various application scenarios, such as maximum value, minimum value, splittable or not, or the minimum unit as a split portion, etc.

The SLOT Mechanism & Split/Merge

The core innovation of vNFT is its SLOT mechanism. Let's explore the details of this mechanism.
The word SLOT means "slot" in English. It is a common implementation for standardized interactions in modern information technology, e.g. USB (Universal Serial Bus) port, PCI-e (Peripheral Component Interconnect Express) slot, Berkeley sockets, etc. Take PCI-e slot as an example, it is the common motherboard interface for personal computer components such as graphics cards, SSDs, etc. No matter which manufacturer produces the graphics card, as long as it follows the PCI-e standards, the slot will connect it with the motherboard and make them work together as a whole. Different types of graphics cards produced by different manufacturers are of course different from each other, but the slot abstracts and unifies them as the same fungible PCI-e standard graphics cards by neglecting their differences at the micro-level.
This is the reason why vNFT adopts the term SLOT as the name of the abstraction and categorization mechanism for Computational NFTs - its mechanism is exactly like the way the slot works in a computer. The implementation of a SLOT in vNFT is a category of a set of specific attributes. Any two vNFTs with the same set of attributes can be "plugged" into the SLOT of the corresponding category. All vNFTs that can be classified into the same SLOT of a category could be considered fungible to each other, and an addition operation could be executed accordingly.
For example, let's say we create a vNFT category representing a bill of lading of books for a book warehouse, specifically, a bill representing the right to take delivery of 100 books. The schematic diagram of this representation in vNFT could be described as follows:
A vNFT representing a bill of lading of books
What is the role SLOT playing for vNFT? A SLOT is a subset of attributes in the vNFT. Let's define a SLOT with three attributes (ISBN, warehouse number, book title), then any two vNFTs with the same three attributes could be grouped as a category.
The SLOT subset of attributes for a bill of lading of books
For example, there are two vNFTs with three attributes each, and both of these three attributes are the same as ("ISBN 978-7-5217-2263-5", "Beijing Haidian Warehouse No.3", "Blockchain and Asset Securitization"). Then no matter what other attributes these two VNFTs have, and whether these attributes are the same or not, both vNFTs could be considered as the same SLOT, which means they are the same class and can be added together as one vNFT with the quantitative attribute as the sum of the previous two.
The addition of two vNFTs representing bills of lading of books
Therefore, SLOT is a classification mechanism by abstraction that allows us to intentionally neglect certain aspects of NFTs to group them as the same category based on the same attributes they have. Once categorized, Non-fungible Tokens could be "re-fungible" to execute numerical calculations.
What is worth mentioning is that the SLOT mechanism actually allows individual vNFTs to customize themselves by stating themselves not belong to a certain category. This means that in practice the Voucher designer could set a special attribute for a SLOT to make a specific vNFT sui generis by the specific value of this attribute. In other words, if we say that a SLOT is a "re-fungible" mechanism, then this special attribute of the SLOT will be an "anti-re-fungible" mechanism. Now you see how flexible our SLOT mechanism is, but we're not going into the details of this advanced usage of the SLOT mechanism.
Split: One token can be split into several tokens, usingsplit(uint256 tokenId, uint256[] calldata units) returns (uint256[] memory newTokenIds);. This will result in several newly generated tokens containing units equal to the parameter units.
splitting rules:
  • MUST revert if _tokenId is not a valid token.
  • MUST revert if msg.sender is neither the owner of _tokenId nor set approval for all.
  • MUST revert if the sum of all _units exceeds the actual amount of units in _tokenId.
  • MUST return an array containing the ids of the generated tokens after splitting.
  • MUST emit the Split event.
Merge: Several tokes with the same SLOT can be merged together using merge(uint256[] calldata tokenIds, uint256 targetTokenId);. targetTokenId should already exist, and cannot be one of tokenIds. After merging, targetTokenId owns all the units from the merged tokens, and the merged tokens will be burned.
merging rules:
  • MUST revert if _targetTokenId or any of _tokenIds is not a valid token.
  • MUST revert if the owner of tokenId is not the owner of _targetTokenId.
  • MUST revert if msg.sender is neither the owner of all _tokenIds and targetTokenId nor having been set approval for all.
  • MUST revert if any of _tokenIds is equal to _targetTokenId.
  • Each of _tokenIds MUST be burnt after being merged.
  • MUST emit the Merge event.

Compatible with ERC721

Computational NFTs could be implemented in many ways. For example, ERC1155 is also an implementation standard for Computational NFTs from a certain point of view, but with a variety of differences in design from the vNFT standard. One of the major differences is that vNFT is compatible with ERC721, and each vNFT is also an ERC721 token (Non-fungible Token). People who are familiar with the concepts of object-oriented programming will easily understand that vNFT could be considered as a derived class of ERC721, so any application that supports ERC721 has already supported vNFT. ERC1155, on the other hand, has set up a separate kitchen by creating a completely new token standard, thus forcing its applications to program specialized code to support itself. There is no doubt that vNFT's backward compatibility with ERC721 has lowered the barriers to its adoption. As a result of the advantage of this compatibility, various Vouchers created on the Solv platform could be directly managed by a variety of NFT wallets and be traded in NFT markets such as OpenSea.
Another advantage of being compatible with ERC721 is the dynamics and the flexibility of vNFT, especially when it is compared to ERC20 and ERC1155. Back to the factory metaphor, ERC20 is an inefficient factory that can only manufacture the same product. If you want to produce a different product, you have to build a new factory for it. ERC721 is an odd factory that could manufacture a variety of products, but with the amount of only one for each product, which is incapable of mass manufacture of the products. ERC1155 is a factory with multiple production lines, which could enable mass manufacture for each product. But to manufacture a new type of product, you have to build a new production line for this product, which means a full upgrade of all distributors, marketing channels, and application scenarios for the support of the new product.
The vNFT is a smart factory that could manufacture unique products with the abilities of massive manufacturing congeneric products and customizing products by distributors or users. And there will be no need for a structural level upgrade when manufacturing a new product. This is vNFT's advantage of the dynamics and the flexibility comparing with ERC20, ERC721, and ERC1155.
Last modified 1mo ago