Solidity
發送原生代幣聯繫時使用什麼合約地址
所以我正在建構類似於這個問題 的智能合約接收令牌和乙太(本機 BNB)並通過 pancakeSwap 路由器交換它?
我有我的合約並且它能夠交換 token-2-tokens,但我不知道如何交換原生 BNB 代幣。
我有這段程式碼,它需要 2 個代幣地址並向我顯示最小交換金額,
address[] memory path;
設置方式讓我認為我可以發送原生 BNB 並將這些交換到代幣。但是使用的合約地址是什麼以及如何製作,以便使用者可以將 BNB 發送到合約並接收代幣作為回報。
function getAmountOutMin(address _tokenIn, address _tokenOut, uint256 _amountIn) external view returns (uint256) { uint256 feeAmount = _amountIn.mul(_swapFee).div(100); uint256 totalToSwap = _amountIn.sub(feeAmount); address[] memory path; if (_tokenIn == uniswap.WETH() || _tokenOut == uniswap.WETH()) { path = new address[](2); path[0] = _tokenIn; path[1] = _tokenOut; } else { path = new address[](3); path[0] = _tokenIn; path[1] = uniswap.WETH(); path[2] = _tokenOut; } uint256[] memory amountOutMins = uniswap.getAmountsOut(totalToSwap, path); return amountOutMins[path.length -1]; }
在 EVM 鏈上發送原生代幣是在沒有地址的情況下完成的(一個不同的概念)。這一切都在 msg.value 中。這類似於在乙太坊上發送 ETH: https ://blockchain-academy.hs-mittweida.de/courses/solidity-coding-beginners-to-intermediate/lessons/solidity-2-sending-ether-receiving-ether-emitting-事件/主題/發送-ether-send-vs-transfer-vs-call/
要在大多數這些應用程序上發送本機令牌,您必須先包裝本機令牌: https ://weth.io/