问题描述
我想调用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 (将#修改为@)