📖foundry-NFT
type
status
date
slug
summary
tags
category
icon
password
项目初始化
- 老样子,新建项目,然后初始化:
- 删除script、src、test下的counter文件。
- 在.gitignore文件的隐藏文件中添加broadcast:
选择ERC721或openzeppelin
- 我选择安装OpenZeppelin:
- 在foundry.toml中添加:
- 在项目src/BasicNft.sol文件下导入:
- 继承:
- 带name和symbol的构造函数:
TokenURI
在IPFS上传图片后,能够得到一个CID。需要我们自己手打一个JSON文件,把这张图片的元数据写入,然后再把JSON文件上传到IPFS,得到这个JSON文件的CID。
注:你可能发现有人的CID是bafy开头,有人是Qm开头,这有区别吗?
实际上,
Qm
(CIDv0)和 bafy
(CIDv1)本质上没有功能性区别,只是编码格式不同。两者都能在 IPFS 网络中正常使用,互相兼容。
如果你想把Qm转化为bafy,可以用以下命令:Mint
BasicNft.sol:
Script
DeployBasicNft.s.sol:
Test
BasicNftTest.t.sol:
安装foundry-devops工具
forge install ChainAccelOrg/foundry-devops --no-commit
Makefile文件
添加.env文件
执行命令:


执行命令:



导入NFT

在Metamask中,点击导入nft,输入上面的合约地址,因为是第一个NFT,所以代币ID为0,然后点击“导入”。

成功!!
SVG
BasicNft.sol:
安装svg插件

svg转换
img/a.svg:
输入命令:
得到:
在浏览器输入框中输入:
转到页面:

注:上传NFT时,我们不只是上传图片本身,而是用JSON存储图片链接成为元数据,再把元数据JSON上传IPFS。
类似的,SVG经过base64处理后,前面加上能够在浏览器打开它的代码“data:image/svg+xml;base64,”,再经过base64处理。
导入base64包:
MoodNft.sol:
SVG文件
分别创建sad.svg和happy.svg。
sad.svg:
happy.svg:
test
MoodNftTest.t.sol:
运行MoodNftTest()可得到:
粘贴至浏览器可得:

再复制Image的内容到浏览器可得:

如果要得到SAD_SVG_URI,就在
testViewTokenURI()
中加一个flipMood(0)
:得到:


成功!!!
Anvil本地链部署
运行

部署
新建shell:


铸造

导入NFT


成功!!!
换表情

导入NFT(先删除之前的NFT):

成功!!!
上一篇
DeFi-StableCoin
下一篇
foundry-ERC20
Loading...