You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:36:02