# 一文读懂NFT的前世真生

By [jambestwick](https://paragraph.com/@vatalikbuterin) · 2022-02-18

---

今天来讲讲NFT是什么，投机逻辑，商业价值
---------------------

1.  **什么是NFT**
    
    NFT **non-fungible token,** 是存储在区块链上的不可互换的数据单元，是一种数字[账本](https://en.wikipedia.org/wiki/Blockchain)[形式](https://en.wikipedia.org/wiki/Ledger)，可以出售和交易,不可分割，NFT被永久存储在链上，以TokenID作为一个NFT的编号,再详细的介绍，去看wiki，或者自己搜，多得是，在这不费口舌细讲了。
    
    专业点来讲NFT是一种链上的加密资产，主要有3种协议，ERC721,ERC1155,ERC998
    
    这三种协议均能生成NFT。
    
    NFT发布有四个阶段：部署合约上链-→生成NFT-→生成图片动画等URL绑定NFT-→OpenSea 等NFT销售平台上架
    

![https://blog.csdn.net/JAVA_HHHH/article/details/120325604](https://storage.googleapis.com/papyrus_images/1fecf1d8f22f9282c70573f278ec8ba3a17931fbb7dfa6dd4e3ecc96549460b4.png)

https://blog.csdn.net/JAVA\_HHHH/article/details/120325604

合约主要包含的一些函数方法：

*   mint 初始化，就是将一个NFT生成出来，从00000000000地址生成到指定的用户地址。
    

       function _mint(address to, uint256 tokenId) internal virtual {
            require(to != address(0), "ERC721: mint to the zero address");
            require(!_exists(tokenId), "ERC721: token already minted");
     
            _beforeTokenTransfer(address(0), to, tokenId);
     
            _holderTokens[to].add(tokenId);
     
            _tokenOwners.set(tokenId, to);
     
            emit Transfer(address(0), to, tokenId);
    }
    

*   burn 销毁该NFT，必须是该NFT的持有者才能销毁该NFT
    

      function _burn(uint256 tokenId) internal virtual {
            address owner = ERC721.ownerOf(tokenId); // internal owner
     
            _beforeTokenTransfer(owner, address(0), tokenId);
     
            // Clear approvals
            _approve(address(0), tokenId);
     
            // Clear metadata (if any)
            if (bytes(_tokenURIs[tokenId]).length != 0) {
                delete _tokenURIs[tokenId];
            }
     
            _holderTokens[owner].remove(tokenId);
     
            _tokenOwners.remove(tokenId);
     
            emit Transfer(owner, address(0), tokenId);
        }
    

transfer，交换，就是将你的NFT发送给别人的地址

    
        function _transfer(address from, address to, uint256 tokenId) internal virtual {
            require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); // internal owner
            require(to != address(0), "ERC721: transfer to the zero address");
     
            _beforeTokenTransfer(from, to, tokenId);
     
            // Clear approvals from the previous owner
            _approve(address(0), tokenId);
     
            _holderTokens[from].remove(tokenId);
            _holderTokens[to].add(tokenId);
     
            _tokenOwners.set(tokenId, to);
     
            emit Transfer(from, to, tokenId);
    }
    

*   setTokenURI, 设置NFT令牌的URI(统一资源标识符)，简单来讲就是给这个NFT关联一个图片、动画等网络地址，如果该地址的图片被删了，NFT的图片也就展示不出来了。
    
         function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {
                require(_exists(tokenId), "ERC721Metadata: URI set of nonexistent token");
                _tokenURIs[tokenId] = _tokenURI;
            }
        
    
*   approve ,授权，就是你将你的NFT授权给其他人的地址，一旦授权给别人，他就能取走你的NFT了
    
            function _approve(address to, uint256 tokenId) internal virtual {
                _tokenApprovals[tokenId] = to;
                emit Approval(ERC721.ownerOf(tokenId), to, tokenId); // internal owner
            }
        
    

NFT的操作基本就是这些，大多的项目团队，在做NFT时都会参考

[Open-zeppelin-ERC721](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC721), 这些

![open-zeppelin，NFT库](https://storage.googleapis.com/papyrus_images/3b2ffcca95f19d6ae56958d464fa66ed0121b0cdacc5565353c26b2edf38063d.png)

open-zeppelin，NFT库

创建好合约以后，就可以部署了，部署到链上完成后，就可以开启售卖

![](https://storage.googleapis.com/papyrus_images/87c78d5ce4ae4fcd7dec59a6dab4101d8990a14edc037493ee6613a9cc7c9ee2.png)

![](https://storage.googleapis.com/papyrus_images/2ac9797d6df792ee3225976eb587663ba82a3396c600ab3b408c62ab3c6a7eaa.png)

![](https://storage.googleapis.com/papyrus_images/d4363d09c7e2519413573970ee37c1b2c9557e3f44bab3baf22b8aab77a82df0.png)

这就生成完NFT了，

现在有很多NFT盲盒项目，就是你生成NFT以后，不会马上看到自己的NFT图片长什么样，道理很简单，开发者将NFT的所有图片，放到一个地址集里，到指定的时间，将地址集里的图随件设置给所有的NFT，这样用户就提前看不到哪个NFT长什么样，或者mint的时候随机给一个图片地址，mint完成就能看到，这就是盲盒。

![](https://storage.googleapis.com/papyrus_images/4f97f900b5e9932c29f528f991f3cef478517bbfe0fe8d6bbdfbe3222755a77f.png)

![](https://storage.googleapis.com/papyrus_images/cbe9a0430566919913c08bcc77350ae8029f9b98ac8f6467b50579eb4baec8d2.png)

最后到OpenSea这类的NFT交易平台发布上架就可以了

![](https://storage.googleapis.com/papyrus_images/88bd562c771ba723e3bd43b06494071be5f8b56a34513a1bc0465963d0ef3e8a.png)

一个NFT就制作完成了，NFT相较于Defi合约更加简单，复杂度低，但开发者还是可以设置后门，这个得自己懂。

1.  **NFT的投机逻辑**
    
    NFT相较于其他的代币或者Defi，Game类的项目，出圈度很高，任何人通过工具都能发行自己的NFT，NFT相当于一个藏品，尤其是歌星、影星、名流等发行NFT会有大量的粉丝群体为其买单，这些粉丝有别于币圈的投机者，疯狂的加一买卖；但粉丝忠诚度是比较高的，一旦买了，很可能就作为收藏，不卖了，也使得NFT价格上涨。
    
    像球星内马尔、篮球 史蒂芬.库里 、亚洲的JJ 林俊杰、周杰伦、余文乐等等都购买过很多NFT，无形中吸引很多不懂币圈的外行人注意，吸引很多人的加入。
    
    早年间的**CryptoEggs、Blockheads、Cryptopunks**等等的NFT项目存活下来的极少，基本上一波热度过去就消亡了。
    
    NFT受众群体个人感觉有3类人
    
    *   资金体量较大的人或者机构、或者是明星、政要，他们购买NFT大多是为了娱乐，消遣，本身一个NFT的价格对他们来说九牛一毛。
        
    *   粉丝、收藏者，粉丝和收藏者，这部分群体会跟随自己的偶像，或者看准哪个自己热爱的项目，比如自己从小看着日本《XX》动画片长大，有人发行了XX的NFT，他们就有意愿去购买。
        
    *   炒币者，这类群体占到购买NFT的绝大多数，甚至90%以上，他们购买NFT目的只有一个为了转手，找人接盘，赚取差价。这也是币圈的风气，炒币者通过社群、关注推特、微博、Discord等社交软件，关注一些行内知名人士发布NFT消息，甚至有程序员做工具监控NFT的发布和交易量来监控热度，得到一手咨询、进行选择性购买NFT，并开始炒作，等达到合适价位，赶紧出手，赚取信息差价。
        
        **但是NFT项目本身还是存在巨大风险和漏洞**，比如:
        
        1.NFT项目和其他的代币一样，任何人都能发行，没有监管，存在跑路的风险极高，人性是逐利的，大多数人一旦掌握一定的技术，就会发行NFT炒作，拉高价位，赚钱跑路，当然NFT项目大多也不需要升级功能和维护。
        
        2.NFT开发者暗箱操作，自己通过多个账号不断购买抬高NFT地板价，自己只花取手续费，提高热度，吸引他人接盘。
        
        3.NFT项目方通过预售，白名单、等等操作提前将低价位的一些少数名额，发放给社群大V，或者所谓的行业领袖、专家人士等，靠这些人进行推广炒作，部分这些人不负责任不去甄别项目的好坏、或者压根就不懂看合约、没能力鉴别，互相利用，吸引韭菜们接盘，存在诓骗，欺诈的行为。
        
        4.NFT本身不像代币流动性极差，都是单一交易，也就是说，你的NFT如果没人看好，没人买，即使再低的价格，赔钱，也很可能就砸你手里，等热度一过，就真成了‘’纪念品‘’。
        
        5.NFT开发者恶意留有后门程序，销毁合约，转移资产等操作，使得NFT持有者资产并没有保障。
        
        6.欧美、日韩，尤其是日本的漫画师，插画师等，发现NFT炒作的商机，不断绘制，甚至拿出自己早年间不被认可的作品和项目方联合发行NFT，导致NFT相似度高，发行泛滥成灾，严重影响行业良性发展。
        
        7.明星发行NFT，表面上看会有很好的粉丝效应，带动价格上涨，但仔细想想，明星周边的产品是很多的，可不止NFT一种，还有奶茶店、服装品牌、汽车、日用品等等，NFT可能是最不看好的一种，NFT跟这些实物纪念品甚至商品比起来，显然对粉丝是没有什么优势，粉丝买一件明星的衣服，天天穿，炫耀，和人还能聊相关的天，比NFT给心里的满足感更高，凭什么觉得粉丝一定会买NFT而不是明星代言的车来的更有价值。而且NFT可能都不是明星本人自愿发行，而是身边的经纪人为了迎合市场，炒作行为，明星都不关注的NFT，想想最后会是什么结果。
        
        8.自诩聪明的炒币者，拿到白名单，低价生成NFT后，炒作，同时又出现多个大V关注度高热门的NFT项目，可能其他用户就转战其他更火的NFT项目，手上的NFT也就砸自己手里了，这样的项目数不胜数。
        
        9.认为NFT白名单一定有人接盘、能赚钱的人，其实大概率是项目方的操纵，项目方发行10000个NFT，只推出10个名额，就算推出100个名额，也就只是1%的NFT，而这些名额，会有成千上万的人去关注，去做个人传销任务推广，能中的概率极低，存在朋友、社群暗箱操作给自己人名额，炒币者关注了项目，做了一些列任务，最后还不知道早就被暗箱操作，
        
        项目方、行业大V白白收获大量的人气资源，还有韭菜们为其叫好。
        
        对NFT项目来说这100个白名单名额，自己每个1ETH的买回去，100ETH也不算什么，这就是大多项目能让白名单用户赚点小钱的逻辑。
        
        NFT是一个认知差、咨询差的产品，娱乐下就好，多数炒币者非技术出身、甚至没有多少基础常识，人云亦云，稀里糊涂的购买NFT，给别人接盘。
        
2.  **NFT的商业价值**
    
    NFT与传统的收藏品、实物资产相比，非常便捷、查看度高、不可篡改，唯一标识身份等能力，任何人查看别人的NFT就能看到对方的资金体量，就像现实中有辆豪车，但是很多人不知道，但是通过高价的NFT就能证明自己的资金的实力，是一种身份的象征。因此很多人喜欢他，就像喜欢奢侈品一个道理，而且NFT本身的唯一性，注定了每个人的NFT与众不同。从技术层面讲，它本身和实物就完全不同，是互联网时代，分布式区块链时代的产物，因此才会收到人们追捧，因为大多数人认为，未来会是AI的时代，人们在现实和虚拟世界自由穿梭，人们在链上可以完成社交，建造，娱乐、购物等一系列的操作。
    

总结：NFT的故事讲完了，区块链给了每个人一个公平的机会，任何人都可以发行，部署合约，靠多节点网络运行，在这个毫无约束的自由世界里，显然NFT作为标志是有其意义的，但同时行业乱象丛生，人性的野蛮在这里完全的释放，这可能就是事物的两面性吧。

如有任何问题: 可以互相交流：

wechat: 菜菜龙

twitter: jambestwick

---

*Originally published on [jambestwick](https://paragraph.com/@vatalikbuterin/nft)*
