web3eye.eth

Posted on Mar 17, 2022Read on Mirror.xyz

走进科学 | 4. 使用 Etherscan 快速调用合约

通过项目方提供的网页在进行铸造 NFT、参与热门币种打新等操作时,由于网站访问人数较多,或被黑客恶意 DDOS 攻击,经常会导致 502 请求过载错误打不开网页,多次刷新进入网站后,却提示 ”Sold Out“ 显示售罄,错失参与时机后拍断大腿。

之前比较热门的 NFT 项目,比如小幽灵 @WeirdoGhostGang 和 Cool Cats @coolcatsnft 的 Pets 发售时,项目方都通过服务器扩容、限制IP等一系列防护措施保障用户体验,而通过 Etherscan 来调用合约则是提供了另一种更为高效的方式,不再受限于项目方提供的网页加载速度。

Etherscan @etherscan 是支持以太坊公链的区块浏览器,提供友好的界面,让用户能够以更容易理解的方式来访问区块链上的数据。通过前面小节的介绍,相信大家已经可以独立获取到项目的合约地址;以 adidas Originals @adidas 的合约地址为例:https://etherscan.io/address/0x28472a58a490c5e09a238847f66a68a47cc76f0f。通过链接查看合约地址详情,可以看到 Contract 选项右上角有个绿色的勾,表示合约已通过 Etherscan 开源验证。

选中 Contract 选项后,有 Code、Read Contract 和 Write Contract 三个选项;熟悉 Solidity 合约开发语言的开发者可以通过开源的代码审查合约是否存在漏洞,选择 Code 选项即可浏览完整代码,若未通过开源验证则无法查看代码,只能通过反编译合约查看大致逻辑,一般情况下可读性很差,后续文章中再展开反编译合约的详细介绍;Read Contract 可以查看合约中存储的可读数据,比如 NFT 发行的总量、允许铸造的数量、铸造价格;Write Contract 表示可以通过调用合约提供的接口发起链上交易,比如铸造 NFT 或转移 NFT 等操作。

本文着重介绍 Write Contract 的使用,需要向链上发起交易需要先链接钱包,点击 Connect to Web3,根据弹窗提示连接 MetaMask 钱包,这时连接按钮会变成绿色 Connected,表示已连接钱包状态;以铸造 NFT 为例,一般铸造 NFT 的接口名称会命名为 mint、publicMint 或 purchase,选择需要调用的接口后,填写铸造价格(单位:ether)和铸造的数量点击 Write 按钮,会唤醒 MetaMask 钱包进行确认交易,确认后则会向链上发起交易;图中提示的错误表示填写的参数不符合要求,或不满足公开铸造条件,这时就可以暂不发起交易,满足条件后再发送交易,避免浪费交易矿工费。

以上就是通过 Etherscan 直接调用合约的方法,前提是合约要公开源代码,区块浏览器通过源代码解析出合约 ABI(Application Binary Interface),然后再提供可视化的界面供用户进行操作;合约 ABI 就是对合约接口的描述,包含合约的接口列表、接口名称、参数类型和返回值的定义,ABI 信息可以在 Code 选项中查看,下一节将介绍如何调用未开源合约的方法。

关于我们

Web3Eye 是一个专注于技术研究和分享的 Web3 加密技术社区,团队拥有多年区块链研发经验和安全技术能力,以帮助更多人安全地进入 Web3 世界,欢迎关注我们的 Twitter 帐号,了解最新动态。