0%

Project-开源头像拼图网站-CryptoYoungNFT开发记录

Pre:

看到0xmonkey开源头像拼图,觉得还不错,模仿一个。

效果图:

开源头像拼图网站:

Avatar Generator Website:
20220703202943

Opensea:

Opensea

20220704005920
Free mint on Polygon Now

素材:

下载token图标:

图片来源:

20220721093455

下载top10的token的图标,用来做眼睛的素材

procreate编辑:

将图标插入ipad里的procreate中进行编辑

20220721093653

编辑完,导出图层png到mac

png->svg:

通过在线网站将png格式的图片转换成svg格式

SVG 是一种基于 XML 语法的图像格式,全称是可缩放矢量图(Scalable Vector Graphics)。其他图像格式都是基于像素处理的,SVG 则是属于对图像的形状描述,所以它本质上是文本文件,体积较小,且不管放大多少倍都不会失真。

最后再编辑一下svg文件里眼睛素材的坐标,使得眼睛素材位置对得上

前端:

基于vue-color-avatar前端框架。

修改素材:

src/components/Configurator.vue控制选择素材的控件

前端右边选择栏:可选插件里加入/src/assets/widgets/eyes/new.svg

src/enums/index.ts做相应配置、src/utils/dynamic-data.ts做相应配置

工具脚本:

用脚本批量生成图片:

  1. 前端代码生成

  2. selenium生成 √

自动生成描述文件:

20220721094941
处理成 符合格式的描述文件
20220721094958

再自动下载图片,按递增的序号命名一下,使得描述文件和图片一一匹配。

20220721095131

合约:

deploy:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
constructor(
string memory _initURI,
uint256 _maxBatchSize,
uint256 _collectionSize,
uint256 _maxreserveAmount
)
ERC721A("CryptoYoung", "CryptoYoung", _maxBatchSize, _collectionSize)
{
MAX_MINT = _maxBatchSize;
MAX_SUPPLY = _collectionSize;
maxreserveAmount = _maxreserveAmount;

setBaseURI(_initURI);
}

部署合约时,设置好构造函数的参数:

设置name_symbol_:

1
ERC721A("CryptoYoung", "CryptoYoung"...)

polygon主网合约地址:https://polygonscan.com/address/0xc1e8efe8d62b855c34009013a8d354d093f3e7f1

验证源码:

直接用hardhat插件验证

1
yarn hardhat verify --contract contracts/CryptoYoung.sol:CryptoYoung --constructor-args arguments.ts --network polygon $YourContractAddress

开始mint:

合约所有者通过调用合约,Set Status(1),打开mint开关

然后用户就可以free mint了

合约导入opensea:

合约导入opensea:

  • 测试网: https://testnets.opensea.io/get-listed/step-two

  • 主网: https://opensea.io/get-listed/step-two

然后就可以在opensea,看到mint后的对应图片了。如果图片没正常展示,可点击刷新图片的按钮。

20220721100358

Todo List:

素材:

前端:

合约:

opensea:

github:

Summary:

买 NFT,实际是在买什么?从底层代码视角的分析

我们所说的 NFT ,说到底是一个以太坊的地址上的一个支持 NFT 协议(也就是 ERC721)的智能合约,它支持 tokenURI 等十几个标准函数。

给定一个 Tokend 的 ID,它可以告诉你一个区块链以外的地址,这个地址里面给出了图像,名称等等信息。

我们购买一个 NFT,说到底是购买了某个合约地址里面的某个 TokenID

或者说,就是在那张大大的表上,这个合约地址上的那个 tokenID 这一行的 owner 属性,记录自己的钱包地址。
除此以外的信息,包括上面这张猴子的头像,其实仅仅如包装纸上的图案一样,仅仅是一个赠品

Refs: