通过转移功能从托管合同地址发送价值

问题描述

我想调用transferMoney()函数,该函数应使用坚固的传递函数将值(requests [_id] .value)发送到地址地址(uint160(requests [_id] .provider))。当我使用MetaMask通过我的DApp-Frontend调用函数时,首先我得到了确认,但该事务已由EVM恢复。在etherscan上,我看到状态=失败。我的目的是将价值从合同所有者转移到另一个帐户。

什么可能导致问题?

这是etherscan ropsten测试网上的交易哈希:0x30cef6bc33a25aeb4693a7c463ddf5dd597e0bd2c2ceb47feb38f29599feb4aa

// SPDX-License-Identifier: MIT
pragma solidity >=0.4.21 <0.7.0;

contract PrinterMarketplace {
    uint256 public requestCount = 0;
    uint balance;
    address payable escrow = msg.sender;

    mapping(uint256 => Request) public requests;
    struct Request {
        uint256 id;
        string fileName;
        string filehash;
        address payable client;
        address payable provider;
        string price;
        uint256 value;
        string status;
    }
    
    function purchaSEOffer(
        uint256 _id,address payable _client,address payable _provider,string memory _filehash
    ) public payable{
        requests[_id].status = "purchased";
        requests[_id].value = msg.value;
        emit OrderEvent(_id,_filehash,_client,_provider,requests[_id].status);
        escrow.transfer(msg.value);
    }
    
    function transferMoney(
        uint256 _id
        ) public {
        address(uint160(requests[_id].provider)).transfer(requests[_id].value);
        requests[_id].status = "paid";
        }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...