稳固性错误:事务恢复没有一个原因字符串



我有两个智能合约:TokenContract:

contract BetToken is ERC20, Ownable {
address[] betContractAddresses;
constructor(
string memory _name,
string memory _symbol,
address[] memory _betContractAddresses
) ERC20(_name, _symbol) {
betContractAddresses = _betContractAddresses;
}
function mint(address to, uint256 amount) external {
for (uint256 i; i < betContractAddresses.length; i++) {
if (betContractAddresses[i] == msg.sender) {
_mint(to, amount);
}
}
}

与函数的主契约:

interface Token {
function mint(address to, uint256 amount) external;
}
function testMint(address _address) external onlyOwner {
Token caller = Token(_betTokenAddress);
caller.mint(_address, 1000000);
}

我正在尝试用硬帽测试此函数,并得到此错误:事务返回没有原因字符串。测试代码如下:

it("Testing bets", async () => {
const [owner, address1, address2] = accounts;
const sendToContractTx = await owner.sendTransaction({
to: betContract.address,
value: ethers.utils.parseEther("1.0")
});
await sendToContractTx.wait(1);
const testMintTx = await betContract.testMint(owner.address);
await testMintTx.wait(1);
})

我不知道如何解决这个问题。请帮助

根据您共享的代码,似乎第一个事务失败了:

const sendToContractTx = await owner.sendTransaction({
to: betContract.address,
value: ethers.utils.parseEther("1.0")
});

你的代码没有显示receive()fallback()的特殊函数,所以我假设它们没有出现在合同中。

当你将ETH发送到合约地址时,它需要实现这个功能才能接受转账。

contract BetToken is ERC20, Ownable {
receive() external payable {}
}

相关内容

最新更新