Solidity - 外部合约调用不起作用
Solidity - External contract call not working
所以,我是 solidity 的新手,我一直在尝试制作一个可以调用另一个合约的合约。
我找到了一些描述这个确切问题的文章,例如:https://soliditydeveloper.com/uniswap2
尽管如此,即使使用提供的代码我也无法使其工作。
交易完成,BNB 被转移到合约,尽管调用者没有收到它应该收到的代币,合约也没有收到。
这是我正在处理的代码:
pragma solidity >=0.7.1;
import "https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/interfaces/IUniswapV2Router02.sol";
contract PancakeProxyContract {
address WBNB = 0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd;
address internal constant addr = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1;
IUniswapV2Router02 public uniswapRouter;
constructor() {
uniswapRouter = IUniswapV2Router02(addr);
}
function EthToTokens(uint amountOutMin, address[] memory path,uint deadline) public payable {
uniswapRouter.swapExactETHForTokens{ value: msg.value }(amountOutMin, path, address(this), deadline);
// refund leftover ETH to user
(bool success,) = msg.sender.call{ value: address(this).balance }("");
require(success, "refund failed");
}
receive() payable external {}
}
这是一个交易示例:https://testnet.bscscan.com/tx/0x0b2849412825dc9c279a102161db4db945ffc54bb4a47538f2a25a477c2c6fe4
原来我使用的是我创建合约的地址作为源地址,而不是新合约创建的新地址。
所以,我是 solidity 的新手,我一直在尝试制作一个可以调用另一个合约的合约。
我找到了一些描述这个确切问题的文章,例如:https://soliditydeveloper.com/uniswap2
尽管如此,即使使用提供的代码我也无法使其工作。
交易完成,BNB 被转移到合约,尽管调用者没有收到它应该收到的代币,合约也没有收到。
这是我正在处理的代码:
pragma solidity >=0.7.1;
import "https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/interfaces/IUniswapV2Router02.sol";
contract PancakeProxyContract {
address WBNB = 0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd;
address internal constant addr = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1;
IUniswapV2Router02 public uniswapRouter;
constructor() {
uniswapRouter = IUniswapV2Router02(addr);
}
function EthToTokens(uint amountOutMin, address[] memory path,uint deadline) public payable {
uniswapRouter.swapExactETHForTokens{ value: msg.value }(amountOutMin, path, address(this), deadline);
// refund leftover ETH to user
(bool success,) = msg.sender.call{ value: address(this).balance }("");
require(success, "refund failed");
}
receive() payable external {}
}
这是一个交易示例:https://testnet.bscscan.com/tx/0x0b2849412825dc9c279a102161db4db945ffc54bb4a47538f2a25a477c2c6fe4
原来我使用的是我创建合约的地址作为源地址,而不是新合约创建的新地址。