在合约内创建合约并通过 Web3 访问

问题描述

我正在 Factory 合约中创建合约 (Exchange),我想通过 Web3 访问 Factory 合约。

?

例如,我想添加流动性,为此我需要访问 Exchange 合约。但在我想通过工厂合同中的 getExchange() 函数检查 Exchange() 合同是否已经创建之前。

//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;

import "./Exchange.sol";

contract Factory {
    mapping(address => address) public tokenToExchange;

    function createExchange(address _tokenAddress) public returns (address) {
        require(_tokenAddress != address(0),"invalid token address");
        require(
            tokenToExchange[_tokenAddress] == address(0),"exchange already exists"
        );

        Exchange exchange = new Exchange(_tokenAddress);
        tokenToExchange[_tokenAddress] = address(exchange);

        return address(exchange);
    }

    function getExchange(address _tokenAddress) public view returns (address) {
        return tokenToExchange[_tokenAddress];
    }
}

如果我运行函数 getExchange(tokenAddress) 总是返回 address(0) 0x0000000000000000000000000000000000000000 的地址

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...