【发布时间】:2019-08-08 03:29:14
【问题描述】:
首先我预先安装了一个合约 A(address(A))。然后我安装了一个合约B(地址(B))来通过调用接口调用A。最后我使用他的地址(x)调用合约。我是想用address(x)调用A,但实际上address(B)调用A。那我怎么用address(x)调用A呢?"
pragma solidity ^0.4.21;
contract TransferERC20 {
event TransferEvent (
bool _flag,
string _invoiceId,
address _erc20ContractHash,
address indexed _from,
address indexed _to,
uint256 _value
);
function transfer(string _invoiceId, address _erc20ContractHash,address _from, address _to, uint256 _amount) public returns (bool) {
bytes4 methodTransfer = bytes4(keccak256("transfer(address,uint256)"));
if(_erc20ContractHash.call(methodTransfer, _to, _amount)) {
emit TransferEvent(true, _invoiceId, _erc20ContractHash, _from, _to, _amount);
return true;
}
emit TransferEvent(false, _invoiceId, _erc20ContractHash, _from, _to, _amount);
return false;
}
}
上述代码旨在调用预装在以太坊测试网上的ERC20合约。但是我调用失败,因为地址更改为 TransferERC20 地址。如何使用 TransferERC20 调用方地址实现转接功能。谢谢。
【问题讨论】:
标签: ethereum solidity contract