NFT的“物理实体”
本文比较初级。
我和很多人聊NFT时,发现很难在最底层达成共识,大家都在聊NFT的应用层面,对其底层的实现大家都是模糊的,但我总感觉底层实现如果不理解的话,是会妨碍理解应用层的。所以才写本文。
NFT的标准ERC721
ERC721是一个智能合约标准,可以简单理解为这是一份模板化的合约代码,或者模板化的合同。
智能合约可以简单地理解为部署在以太坊网络上的程序,ERC721就是一套模板化的智能合约程序,开发者可以按这个模板定制一个合约部署在以太坊上。
合约模板和写文章的模板本质是一样的。就是类似于八股文一样,有完整的套路,你照着套路填好符合你自己的个性化资料就可以产生一篇文章。
ERC721这种合约模板定义好了一些标准“方法”(就是程序里的函数)和“事件”(可以简单理解为)
方法就是函数,也可以称之为接口。这些方法就是让用户和其他程序可以和这个NFT项目进行交互的方法。
ERC721标准里第一个方法balanceOf(),就可以查询某个地址持有该NFT的数量。
事件可以简单理解为以太坊的日志模板。当有人调用了这个合约的某个方法,得按日志模板往以太坊上存一些历史记录,方便别人查看。
比如ERC721标准里的第一个事件event Transfer,就是用户转具体某个NFT后,就得在以太坊上按这个模板留下日志记录。
问题:什么样的合约符合ERC721标准?
答案:在ETH上部署了一个合约,只要这个合约包括了ERC721标准里的所有“方法”和“事件”,就是符合ERC721标准。
方法可以超出标准之外,比如也可以提供黑名单。
按照ERC721标准生成的代币就是NFT,但反过来却不成立,因为还有其他NFT标准,甚至还有没有总结成标准的NFT。
生成NFT的过程
NFT代币是怎么来的?
第一步是有一个项目方(简单的就可以是一个开发者)按照ERC721等标准开发一套智能合约,并部署到以太坊上。
这个合约代码会详细定义NFT的具体实现,比如要定义这套NFT的总量是多少,每一个NFT的编号,每一个NFT对应的图片存在哪个URL地址什么的。
第二步用户就可以调用该合约进行铸造NFT,这就是熟悉的mint过程。
一般开发者会设计好调用合约的界面,以方便用户铸造NFT,虽然对“科学家”来说,他们只要有项目开源好的NFT代码,他们可以自己调用。
mint的过程一般会有一个初始价格,即用户要付一定的ETH才允许参与铸造这套NFT,这就是NFT的初次发行。
铸造好具体的NFT后,就在用户的钱包里可以看到了。用户就可以挂到opensea上去卖了。
这里的非同质化的意思就是,这套NFT中的每一个具体的NFT都是各不相同的。
NFT项目和具体的ERC721-NFT代币
这两个概念老容易搞混。这是一个集合,和集合中的元素的关系。
NFT项目是一些具体NFT代币的集合。这里的代币不是说NFT项目发行的ERC20代币,而是用户mint出来的ERC721代币。
一个NFT项目会发行一套NFT,比如猴子BAYC是一个NFT项目,它发行了1万具体的NFT代币,每一个具体的猴子NFT代币在物理实体上映射成了一张图片。
Scan QR code with WeChat