我如何将值从合同 1 传输到合同 2

问题描述

我有 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 (将#修改为@)