如何在Remix中创建Solidity合约调用已部署链上合约获取用户详情
操作步骤及代码实现
一、Remix创建新智能合约流程
- 进入Remix IDE后,点击左侧文件浏览器的「+ 新建文件」按钮
- 为新合约命名,例如
UserQueryContract.sol,确认后即可在编辑器区域编写代码
二、跨合约调用实现逻辑
要从已部署的合约读取数据,只需先定义和原合约函数签名完全一致的接口,再传入原合约的链上地址实例化接口,即可直接调用原合约的公开方法
三、完整代码示例
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.9.0; // 原合约接口,仅声明需要调用的getUser方法即可 interface IOriginalUserContract { function getUser(address _userAddress, string memory _lastName) external view returns (address, string memory, string memory, string memory); } contract UserQueryContract { // 原合约实例变量,immutable修饰节省gas IOriginalUserContract public immutable originalUserContract; // 部署时传入已上链的原合约地址完成初始化 constructor(address _originalContractAddr) { originalUserContract = IOriginalUserContract(_originalContractAddr); } // 对外暴露的查询用户详情方法 function getUserFromOriginalContract(address queryUserAddr, string memory lastName) public view returns ( address walletAddress, string memory userId, string memory firstName, string memory userLastName ) { // 调用原合约的getUser方法获取数据 (walletAddress, userId, firstName, userLastName) = originalUserContract.getUser(queryUserAddr, lastName); return (walletAddress, userId, firstName, userLastName); } }
注意:你提供的原合约中
getUser的_lastName参数没有参与实际逻辑,调用时传任意符合格式的字符串即可
四、部署测试流程
- 代码编写完成后,切换到左侧「Solidity编译器」标签,选择适配的编译器版本(如0.8.20),点击编译按钮,确认无报错
- 切换到「部署与运行交易」标签,选择对应链环境(本地测试选Remix VM,链上操作需连接对应钱包并选对链)
- 在部署按钮旁的输入框填入已上链的原合约地址,点击部署完成新合约的上链
- 部署成功后,展开新合约的方法列表,填入要查询的用户地址和lastName参数,调用查询方法即可得到返回的用户详情
内容的提问来源于stack exchange,提问作者george singh
相关产品推荐
相关产品推荐

