{"content":{"title":"Chaintool ABI 可视化调用工具介绍","body":"# Chaintool ABI 可视化调用工具介绍\r\n\r\n\r\n\r\n[ABI 可视化调用工具](https://chaintool.tech/abi)（英文称为 **ABI Caller** ）会自动根据 ABI 生成可调用按钮，而不需要手动编写和发送交易。类似 Etherscan 在合约开源之后，提供的读写合约的功能。不过有时候，我们在开发时，合约一开始是不开源的，这个时候使用Chaintool ABI 可视化调用工具就比较方便了。\r\n\r\n\r\n\r\n在ABI 可视化调用工具，很多时候，智能合约开发者需要编写相应的前端或脚本来手动编写和发送交易，这会给开发者带来更多的心智负担，尤其是智能合约开发者可能并不熟悉 JavaScript 等语言。\r\n\r\n\r\n\r\nChaintool ABI 可视化调用工具地址：https://chaintool.tech/abi\r\n\r\n\r\n本文详细介绍一下ABI 可视化调用工具的使用。\r\n\r\n\r\n\r\n## 使用场景\r\n\r\nABI（Application Binary Interface）可视化可以简化开发者的调用合约过程。\r\n\r\n可视化调用工具可应用在下面几种场景：\r\n\r\n1. 智能合约开发：在开发智能合约时，开发者可以使用 ABI 可视化调用来测试智能合约的功能和参数。\r\n2. 辅助 DApp 开发：在 DApp 开发中，开发者需要与智能合约进行交互。通过 ABI 可视化调用，可以方便地调用智能合约并获取返回值，从而实现 DApp 的功能。\r\n3. 合约内测分享：可以把内测阶段的智能合约分享给其他人进行测试，可测试智能合约的功能和参数，以确保智能合约的正确性和稳定性。\r\n4. 辅助智能合约审计：在对智能合约进行审计时，可以方便地查看智能合约的功能和参数，从而更好地发现潜在的安全问题。\r\n5. 其他合约的交互：与一些未开源，但已知 ABI 的合约进行交互。\r\n\r\n\r\n\r\n## 使用方法\r\n\r\nABI 可视化调用工具使用很简单，有两步：**添加合约**和**调用合约**。\r\n\r\n如果是使用他人分享的链接进入ABI 可视化调用工具，则可以直接调用合约。\r\n\r\n\r\n\r\n### 1. 添加合约\r\n\r\n添加合约是让ABI 可视化调用工具能够记录合约的地址、ABI、区块链网络，然后也可以给你的合约进行命名，方便下次使用。\r\n\r\n\r\n\r\n进入到https://chaintool.tech/abi ，点击添加合约按钮。跳出添加合约弹窗后，输入合约名称、区块链网络、合约地址已经ABI后，点击确定按钮，就可以成功添加合约了。 ![截屏2023-03-27 17 25 11](https://user-images.githubusercontent.com/126214064/228123857-6b36abd4-f167-4194-afec-f8c9533d2d99.png) 合约名称：方便区分自己添加的合约，可以自由命名，但不能为空。\r\n\r\n区块链网络：可以选择我们提供的网络选项，也可以选择当前钱包连接的网络。 ![截屏2023-03-27 17 33 55](https://user-images.githubusercontent.com/126214064/228123954-d2dfeaa4-8fbd-4dae-9903-a811e26c7e8b.png)\r\n\r\n合约地址：不能输入不正确的地址。\r\n\r\nABI：除了可以通过直接在输入框中填入，这里还可以通过三种快捷方式填入。\r\n\r\n **快捷方式一**：选择常见的ABI，这种方式收集了几种常见的ABI可供选择。点击即可自动填入。\r\n\r\n![截屏2023-03-27 17 38 26](https://user-images.githubusercontent.com/126214064/228123997-62bc5178-d5af-4ada-9047-59ec8048f38c.png)\r\n\r\n **快捷方式二**：上传ABI文件，这种方式可以将本地的ABI文件进行上传读取，自动填写到输入框中。\r\n\r\n **快捷方式三**：：Etherscan获取，这种方式需要先选择区块链网络并且填写合约地址后，点击即可自动获取并填入。本地网络及未公开的合约无法通过Etherscan获取ABI。\r\n\r\nABI支持[JSON格式，](https://learnblockchain.cn/docs/solidity/abi-spec.html#json) 并且支持[Human-Readable格式](https://learnblockchain.cn/ethers_v5/api/utils/abi/formats/#abi-formats--human-readable-abi)。\r\n\r\n\r\n\r\n当我们添加完合约后，可视化调用工具会加载出合约的函数，如果有需要也可以把加载合约的这个信息分享给朋友。\r\n\r\n\r\n\r\n#### 通过分享加载合约\r\n\r\n我们可以直接通过分享链接，如：https://chaintool.tech/abi/ETH/0xb8d7bA8A84D8d732b6a451197613Cb8974bAfF87  访问加载的合约，此时工具也会自动添加该合约并保存（就如何用户自己添加了该合约一样）。\r\n\r\n\r\n\r\n例如： ![截屏2023-03-27 17 51 49](https://user-images.githubusercontent.com/126214064/228124078-62c74cde-cd07-4e63-9717-e80fe4d30024.png)\r\n\r\n\r\n\r\n分享的链接格式为：https://chaintool.tech/abi/<网络简称/链ID>/<合约地址>\r\n\r\n\r\n\r\n例如，我们需要添加Ethereum Mainnet网络的0xb8d7bA8A84D8d732b6a451197613Cb8974bAfF87。我们通过已支持自动添加的网络表看，可知Ethereum Mainnet网络的网络简称为“ETH”，链ID为“1“。那我们就可以通过下面两个网址来自动添加这个网络。\r\n\r\nhttps://chaintool.tech/abi/ETH/0xb8d7bA8A84D8d732b6a451197613Cb8974bAfF87\r\n\r\nhttps://chaintool.tech/abi/1/0xb8d7bA8A84D8d732b6a451197613Cb8974bAfF87）\r\n\r\n\r\n\r\n对于已添加的合约，也可以通过链接进行访问。会自动打开对应的合约，不会重复添加。\r\n\r\n>  注意：通过别人分享的链接，添加未开源的合约时，请确认真实性。\r\n\r\n\r\n\r\n### 2. 调用函数\r\n\r\n\r\n\r\n合约添加后，我们就可以在侧边栏的中选择合约，再点击对应的函数进行调用![image-20230328110452766](https://user-images.githubusercontent.com/126214064/228124264-14931384-069c-4a5b-b0c0-8a4fe07010f6.png)\r\n\r\n在输入框中输入参数，点击运行按钮就可以成功调用函数了。无参数函数点击选择函数后就会自动运行，无需再点击运行按钮。\r\n\r\n运行后，会在下方显示运行结果。 ![image-20230328110856696](https://user-images.githubusercontent.com/126214064/228124294-db55ae77-ac42-4eae-a389-b5f8dbd8c516.png)\r\n\r\n注意：在输入参数类型为数组或元组的数据时，请采用数组的方式输入。示例如下图。\r\n\r\n![image](https://user-images.githubusercontent.com/126214064/228204399-dfc9634d-62ec-478e-bd41-43d9671348de.png)\r\n\r\n####  结果日志\r\n\r\n默认情况下，每次调用的结果会积累，最后运行的结果会显示在最前面。\r\n\r\n当我们不需要之前调用函数的输出结果时。我们可以点击清空输出按钮，将之前调用函数的输出结果都清空。\r\n\r\n![image-20230328111050139](https://user-images.githubusercontent.com/126214064/228124322-b6ac5a80-1bc2-4af7-b64f-d98849174a23.png)\r\n\r\n## 其他功能\r\n\r\n### 分享\r\n\r\n当我们需要将该合约分享给好友，方便好友快速调用该合约。我们就可以使用这个分享合约功能。\r\n\r\n使用方法：\r\n\r\n点击分享功能后，会将添加当前合约的链接复制到剪切板。我们可以把链接分享给好友，好友访问该链接可快速加载该合约。我们也可以将该链接进行收藏，下次我们访问该链接也可以自动选中该合约。\r\n\r\n![image-20230328112147674](https://user-images.githubusercontent.com/126214064/228143809-7843a473-fd34-4a63-8f71-8db01dc22cb1.png)\r\n\r\n### 查看当前 ABI\r\n\r\n当我们想查看当前 ABI 具体有哪些函数，它们有哪些参数，这个功能就派上用场了。\r\n\r\n这里提供两种格式的 ABI ： **JSON格式** 及 Human-Readable 格式，因此也可以作为 ABI 格式转换的工具。 \r\n\r\n使用方法：\r\n\r\n点击查看ABI功能后，会有一个弹出框显示我们当前选择合约的ABI。\r\n\r\n可以通过上面的按钮，选择JSON格式或者Human-Readable格式查看。默认JSON格式。\r\n\r\n并且提供了复制按钮，点击复制按钮可将当前合约复制到剪切板。 ![image-20230328112752965](https://user-images.githubusercontent.com/126214064/228143892-d2045942-e4ed-4292-8329-b44c038d220c.png)\r\n\r\n### 链接 Etherscan \r\n\r\n当我们调用函数产生交易后，我们就可以通过查看 Etherscan 功能快速查看我们的交易情况。\r\n\r\n使用方法：\r\n\r\n点击查看Etherscan按钮后，将在新窗口打开当前合约对应的区块链浏览器。 ![image-20230328113007549](https://user-images.githubusercontent.com/126214064/228143947-852897ab-cf71-485b-9a65-682d32f7f851.png)\r\n\r\n例如：这里我们是主网下的0xb8d7bA8A84D8d732b6a451197613Cb8974bAfF87合约。点击查看Etherscan按钮后，将在新窗口打开https://etherscan.io/address/0xb8d7bA8A84D8d732b6a451197613Cb8974bAfF87。\r\n\r\n![image-20230328113313894](https://user-images.githubusercontent.com/126214064/228143993-e935421d-c16c-4ea1-85f1-74e7b376b6f8.png)\r\n\r\n### 编辑合约\r\n\r\n当我们想要给合约重新命名，或者需要修改合约的相关信息的时候，我们就可以使用这个编辑功能了。\r\n\r\n使用方法： 点击编辑功能按钮后，会弹出框。可对该合约的所有信息进行编辑。点击确定后，将保存修改合约后的信息。 ![image-20230328113412399](https://user-images.githubusercontent.com/126214064/228144035-cb489189-7784-47c5-a9b0-a8c62f75b8ce.png)\r\n\r\n### 删除合约\r\n\r\n当合约不再需要调用的时候，删除功能就派上用场了。\r\n\r\n使用方法：\r\n\r\n点击删除合约后，该合约将在合约列表中删除。 ![image-20230328113629940](https://user-images.githubusercontent.com/126214064/228144104-157b8ecf-48f0-4bd8-adff-61d6c861cd2a.png)\r\n\r\n\r\n\r\n\r\n\r\n如果你有什么问题，你可以通过[Discord](https://discord.com/invite/mf2yvETAVB) 和 Twitter [@NUpchain](https://twitter.com/NUpchain)  欢迎给我们反馈。\r\n\r\nChaintool 在[登链社区的Discord 服务器](https://discord.com/invite/pZxy3CU8mh)下建了一个子频道，欢迎开发者们来一起交流。"},"author":{"user":"https://learnblockchain.cn/people/14456","address":null},"history":null,"timestamp":1682392816,"version":1}