📖foundry-NFT

type
status
date
slug
summary
tags
category
icon
password

项目初始化

  1. 老样子,新建项目,然后初始化:
  1. 删除script、src、test下的counter文件。
  1. 在.gitignore文件的隐藏文件中添加broadcast:

选择ERC721或openzeppelin

  1. 我选择安装OpenZeppelin:
  1. 在foundry.toml中添加:
  1. 在项目src/BasicNft.sol文件下导入:
  1. 继承:
  1. 带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文件

执行命令:
notion image
notion image
执行命令:
notion image
notion image
notion image

导入NFT

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

SVG

BasicNft.sol:

安装svg插件

notion image

svg转换

img/a.svg:
输入命令:
得到:
在浏览器输入框中输入:
转到页面:
notion image
注:上传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()可得到:
粘贴至浏览器可得:
notion image
再复制Image的内容到浏览器可得:
notion image
如果要得到SAD_SVG_URI,就在testViewTokenURI()中加一个flipMood(0)
得到:
notion image
notion image
成功!!!

Anvil本地链部署

运行

notion image

部署

新建shell:
notion image
notion image

铸造

notion image

导入NFT

notion image
notion image
成功!!!

换表情

notion image
导入NFT(先删除之前的NFT):
notion image
成功!!!
上一篇
DeFi-StableCoin
下一篇
foundry-ERC20
Loading...