You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
手把手教程在这里:手把手教你完成 task 9 (拿 10U 奖励), 坦白来说,我自己其实是做完这个task 之后,才发现有这么个教程的,所以中间还是走了一点弯路的。
简单说下,可能其他小伙伴也可能遇到的坑。
1. 关于合约的验证
这个问题,其实我看评论区小伙伴已经有提到,如果不验证合约,那么其实通过给定合约地址是拿不到ABI的,这里看似是一个废话,但是对于初识合约的我们来说,也许就会因此而困惑不已。这里想要拿到ABI的方式有两种,graph的init命令的tips里也写得其实不是很清楚,它只提到了可以手动在命令行里指定ABI文件地址,其实我们还可以通过验证合约的方式来操作。
在task8,小伙伴们应该已经了解了验证合约,所谓的验证合约,我的理解就是一个将合约代码开源并在etherscan上展示的过程,通过合约开源展示,我们让用户相信我们的合约可以放心地被其他人调用,也就有了验证的过程。
再说回来,由于我自己用的是 scaffold-eth-2 来完成的task 4,5,之前只是部署到了hardhat网络,所以我也说说部署和验证sepolia 网络。
首先是部署,只需要在项目根目录执行,
yarn deploy --network sepolia
当然,在此之前,我们需要配置hardhat/.env 文件,填入我们的钱包密钥以及etherscan的key,如果没有etherscan的key,需要手动地创建账号,此过程也比较简单,是为了之后验证合约做准备
部署完合约之后,我们只需要执行
yarn verify --network sepolia
命令,就会执行验证合约的命令,这样我就可以一次将我的task5中的三个合约一次性都经过验证。验证之后的合约,再去做
graph init
,就能非常顺滑地从合约地址中找到ABI以及contract name等信息了。(这里我踩的坑是不知道verify的命令应该怎样去完成,以为需要传入合约的arguments,后来发现并不需要,只需要把network作为参数传进去)关于mapping.ts
在task的描述里说要编写
mapping.ts
文件,实际上经过graph init
之后,会自动产生一个.ts
文件,并不一定就叫做mapping.ts
,我们可以通过查看subgraph.yaml
文件查看,比如我这里这个对应的文件,其实叫做nft-market.ts
,如果它满足我们的需要,其实甚至可以对它不做任何修改。Beta Was this translation helpful? Give feedback.
All reactions