走进科学 | 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 帐号,了解最新动态。

Subscribe to web3eye.eth
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.