一个NFT是一个token/凭证,有唯一的id和owner以及关联的其他数据,目前有经济价值的NFT项目的发行方式主要分两种形式:
一次性发行一个单独的项目并包含有限个NFT,它们共享一系列特性和数据,比如CryptoPunks
在一个公共的项目里创建一个自己的NFT,比如Foundation
一种最经典的NFT(BAYC,CryptoPunk,…)
基础数据构成
开发者个人钱包或者DAO的钱包发起交易,创建一个ERC721合约,它长这样:
NFT合约里包含什么信息
1.每个token的owner和url
2.实现权限的逻辑,谁可以改合约数据,比如url
项目方权限越小就越去中心化
3.实现transfer和mint的逻辑
transfer是ERC721的接口规范,逻辑大家都一样,mint一般会加一些特别限制
4.实现取钱(withdraw)逻辑,从合约里把钱转到指定账户
一般是项目方个人钱包或者DAO钱包。
什么是mint(铸造)?
合约刚刚部署/创建的时候,合约的数据里面是没有token的,创建一个token的过程就是mint,其实就是在数据库里面新增了一条数据。一般是用户支付给合约一笔钱然后合约生成一个token并且把owner设置成这个用户。
mint出来的一个token至少包含id,url和owner三个信息
几乎所有项目都会限制mint的次数,比如10000个,这就是发行量,人为设定的稀有度
每个id对应的url是合约里按照一个规则设置好的,用户不能自己在mint的时候传
mint时候用户支付给合约的钱就是公开发行价,这笔钱项目方会从合约里取走。
总结一下第一种发行方式,以BAYC为例:
项目方部署一个合约
限量10000个用户可以mint一个自己的NFT
用户每mint一个NFT需要支付0.08个ETH给项目方
每个NFT上都是项目方提前画好的图,项目方就是作者
通过Foundation/Rarible/SuperRare发行NFT
免费mint一个自己的NFT
总结一下第二种发行方式,以Foundation平台为例:
平台只有一个提前部署好的合约
任何人都可以上传一张图并mint一个自己的NFT
用户不需要支付费用给平台
每个NFT上的图是用户自己上传的,用户自己是作者