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