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