1-我将从编写一般配置(系统、版本、智能合约总体思路)开始。
2-然后我将展示主要问题(使用小代码行,我认为它需要编辑)。
3-第三部分我将展示我到现在为止的尝试和结果
4-最后我将添加完整代码的 github 链接。
注意:先生制作的完整原始代码。帕特里克阿尔法 C.
a- 通用配置(系统、版本、智能合约总体思路):
- a1- 操作系统:opensuse 飞跃 15.3
- a2-安全帽版本:2.8.3
- a3-节点版本:v14.18.3
- a4- npm 版本:8.3.0
- a5- metamask钱包插件到 Firefox
- a6-目标区块链:多边形(主网、测试网)
- a7- 智能合约总体思路:使用 svg 创建erc-721 nft,其元数据完全存储在链上(智能合约 mint tokenurl 到多边形链)。
b-主要问题:
一切都很好,因为铸造文件(tokenurl)的大小小于 23.8kb(小于 23.8kb)。我的目标是两倍大小的 mint 文件(每个 tokenurl 等于 50kb)。因此,当尝试使用大小 (23.8 Kb < size < 50 Kb) 的 mint tokenurl 时,我会收到下一条错误消息。
An unexpected error occurred:
Error: ERROR processing /home/naive/demos/secondtry/deploy/01_Deploy_SVGNFT.js:
Error: cannot estimate gas; transaction may fail or may require manual gas limit (error={"name":"ProviderError","code":-
32000,"_isProviderError":true}, method="estimateGas", transaction={"from":"metamask wallet address","to":"contract address",
c-我到现在为止的尝试和结果:
c1-尝试在“hardhat.config”中设置气体限制,但没有产生任何效果(它是在搜索期间,所以我不记得表单或值)。
c2- 在 "01_Deploy_SVGNFT" 中将 gaslimit 添加到 tx,因此代码行如下所示。
- c2-0 编辑前的原始代码行:
tx = await svgNFT.create(svg)
- 编辑后的 c2-1 代码行:
tx = await svgNFT.create(svg, {gasLimit: 3000000 })
- c2-2结果:给我一些关于错误语法的错误消息(论坛,打字)
- c2-0 编辑前的原始代码行:
c3- 在 "01_Deploy_SVGNFT" 中将 gaslimit 添加到 tx,所以代码行如下所示。
c3-0 编辑前的原始代码行:
tx = await svgNFT.create(svg)
编辑后的 c3-1 代码行:
tx = await svgNFT.create({svg}, {gasLimit: 3000000 })
c3-2结果:
- 3-2-0 合约部署、svg 上传、合约验证、metamask 钱包中的 matic 价值下降(gas 价值转移成功)一切看起来都很好。
- 3-2-1 去opensea时没有图像出现。
- 3-2-2 当转到 polyscan 或 etherscan 并使用令牌 id 查看令牌 uri 它什么也不返回(没有出现元数据字符串,什么也不出现)。
d-完整代码的下一个 github 链接(contracts、deploy、hardhat.config.js、helper-hardhat-config.js 和包含(预先生成的 tokenurl)的 img 文件夹
https://github.com/naive2022/onchainfork
希望能帮助我找到在使用多边形测试或多边形主网络时如何创建预先生成的 tokenurl(每个文件大小为 50kb)而不会遇到这个问题。