问题描述
我有 FundraiserFactory 和 Fundraiser 我通过 FundraiserFactory 创建了 Fundraiser,其中 FundraiserFactory 具有 FundraiserCreated 功能,而 Fundraiser 具有将资金转移给按下此功能的人的功能,但我遇到了向 FundraiserFactory.pay 进行交易时出错的问题:VM 错误:还原。 revert 事务已恢复到初始状态。注意:如果您发送价值并且您发送的价值应小于您当前的余额,则应支付被调用的函数。调试事务以获取更多信息。 FundraiserCreated 已经赋值并被调用。转让所有权。
这是合同 1
pragma solidity ^0.8.1;
import "./Fundraiser.sol";
contract FundraiserFactory {
uint256 constant maxLimit = 20;
Fundraiser[] private _fundraisers;
event FundraiserCreated(Fundraiser indexed fundraiser,address indexed owner);
function createFundraiser (string memory name) public payable {
Fundraiser fundraiser = new Fundraiser( name,msg.value,msg.sender);
_fundraisers.push(fundraiser);
}
function pay() public payable {
_fundraisers[0].pay();
}
这是合约2
pragma solidity ^0.8.1;
import "openzeppelin-contracts/access/Ownable.sol";
import "openzeppelin-contracts/math/SafeMath.sol";
contract Fundraiser is Ownable {
using SafeMath for uint256;
string public name;
uint256 public money;
constructor( string memory _name,uint256 _money,address _custodian )
public payable{
name = _name;
money = _money;
transferOwnership(_custodian); }
function pay() public payable {
uint256 balance = address(this).balance;
address payable employee = payable(msg.sender);
employee.transfer(money);
}
}
我尝试调用 uint256 balance = address(this).balance;然后返回0。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)