Solidity

發送原生代幣聯繫時使用什麼合約地址

  • April 14, 2022

所以我正在建構類似於這個問題 的智能合約接收令牌和乙太(本機 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/

引用自:https://ethereum.stackexchange.com/questions/126141