使用pancake进行 usdt兑换bnb智能合约

以下是代码,仅供分享参考:

// SPDX-License-Identifier: MIT
pragma solidity  ^0.8.0;
 interface IERC20 {
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);


}
 interface IPancakeRouter {
    function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
    function WETH() external pure returns (address);
}
 contract USDTtoBNB {
    address  public admin;
   modifier onlyAdmin {
        require(msg.sender == admin, "You Are not admin");
        _;
    }

    address private constant USDT_ADDRESS = 0x55d398326f99059fF775485246999027B3197955; 
    address private constant PANCAKE_ROUTER_ADDRESS = 0x10ED43C718714eb63d5aA57B78B54704E256024E; 
     IERC20 private usdt;
    IPancakeRouter private pancakeRouter;
     constructor() {
        admin=msg.sender;
        usdt = IERC20(USDT_ADDRESS);
        pancakeRouter = IPancakeRouter(PANCAKE_ROUTER_ADDRESS);
        usdt.approve(PANCAKE_ROUTER_ADDRESS, type(uint256).max);
    }
    
    function swapUSDTforBNB(uint256 amountIn, uint256 amountOutMin, uint256 deadline) external onlyAdmin{
        address[] memory path = new address[](2);
        path[0] = USDT_ADDRESS;
        path[1] = pancakeRouter.WETH();
        pancakeRouter.swapExactTokensForETH(amountIn, amountOutMin, path, address(this), deadline);
    }
      function withdrawUSDT(uint256 amount) external onlyAdmin{
        require(usdt.balanceOf(address(this)) >= amount, "Insufficient USDT balance in contract");
        usdt.transfer(admin, amount);
    }

    function withdrawETH() external onlyAdmin{
        payable(admin).transfer(address(this).balance);
    }
    
    function receive () external payable {} 
  
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盒曰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值