微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决我如何将值从合同 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 举报,一经查实,本站将立刻删除。