# 走进科学 | 5. 使用 Remix 调用未开源合约

By [web3eye.eth](https://paragraph.com/@web3eye) · 2022-03-18

---

未开源合约需要获得合约 ABI 信息才能进行调用，获取 ABI 有三种方式：

*   合约开源的情况下从 Etherscan 的 Code 选项中直接复制；
    
*   从网页中解析出 ABI
    
*   反编译合约手动构造
    

本文主要介绍第 2 种获取 ABI 的方法，和前面小节介绍的获取合约地址的方法一致，合约 ABI 的匹配规则为 \[{"inputs"，以国潮 NFT @ChinaChic\_NFT [https://chinachic.club/mint](https://chinachic.club/mint) 为例（国潮 NFT 已开源，此处仅用于演示用途）；另外不建议对未知项目的闭源合约进行调用，可能存在资产损失的风险。

![](https://storage.googleapis.com/papyrus_images/76d1120cf6227d9ec77cf20f3223d0902d87ea7f2d3a23cd39ae5c8064550d4d.png)

图中匹配行则是完整的 ABI 代码，获取到 ABI 信息后，需要转换为可以在 Remix 操作的合约代码，Remix 是以太坊生态中的开发者工具，用于开发、调试、部署合约，也支持在浏览器端使用；打开任意网页，按下 F12 快捷键打开控制台。

    // 在网页中注入 ethers 工具库
    document.write('<script src="https://cdn.ethers.io/lib/ethers-5.2.umd.min.js" type="application/javascript"></script>');
    // 声明 ABI，将上方查找到的 ABI 替换至 []。注意：ABI 的格式为 [{"inputs"....}]
    var abi = [];
    // 将 ABI 转换成可以操作的接口
    new ethers.utils.Interface(abi).format(ethers.utils.FormatTypes.minimal).filter(i => i.includes('function'));
    

![](https://storage.googleapis.com/papyrus_images/6e141bd2047534a8556eea2780944044ff54732da0a8a00a807d8491ddf37a73.png)

可以看到转换后的接口中，publicMint 接口是铸造 NFT 的接口。

    // SPDX-License-Identifier: GPL-3.0
    
    pragma solidity >=0.7.0 <0.9.0;
    
    contract Test {
        string public symbol;
        function publicMint () payable public {
            // do nothing
        }
    }
    

这时，我们可以就通过 Remix 调用合约了，将上面的代码粘贴到 Remix 的代码编辑区，Remix 会自动编译合约，左侧会变成绿色的勾表示编译成功；然后选择环境为 Injected Web3，将粘贴该 NFT 合约地址 0x7BC5d353663C4c94fd022d3df0642B56C174B45c，点击 At Address 即可进行操作；可以点击 symbol 获取 NFT 名称进行确认，然后点击 publicMint 唤醒 MetaMask 弹窗执行铸造交易。

![](https://storage.googleapis.com/papyrus_images/35c7390ac6dfc870975d8ed4ad62c77cb80cfe9ad26bc3cf05cf36863013c8bb.png)

以上就是通过 Remix 的方式调用未开源的合约，但是通过人工手动铸造，效率还是很低，后续小节会介绍通过代码来监控交易和定时执行，快人一步发送交易。

**关于我们**

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

---

*Originally published on [web3eye.eth](https://paragraph.com/@web3eye/5-remix)*
