mirror of
				https://github.com/Instadapp/dsa-connectors.git
				synced 2024-07-29 22:37:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
| pragma solidity ^0.7.0;
 | |
| 
 | |
| // import files from common directory
 | |
| import { TokenInterface , MemoryInterface } from "../common/interfaces.sol";
 | |
| import { Stores } from "../common/stores.sol";
 | |
| 
 | |
| interface AccountInterface {
 | |
|     function enable(address) external;
 | |
|     function disable(address) external;
 | |
| }
 | |
| 
 | |
| interface DydxFlashInterface {
 | |
|     function initiateFlashLoan(address _token, uint256 _amount, bytes calldata data) external;
 | |
| }
 | |
| 
 | |
| abstract contract FlashLoanResolver is Stores {
 | |
|     event LogDydxFlashLoan(address indexed token, uint256 tokenAmt);
 | |
| 
 | |
|     /**
 | |
|         * @dev Return ethereum address
 | |
|     */
 | |
|     function getDydxLoanAddr() internal pure returns (address) {
 | |
|         return address(0); // check9898 - change to dydx flash contract address
 | |
|     }
 | |
| 
 | |
|     function getWethAddr() internal pure returns (address) {
 | |
|         return 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @dev Borrow Flashloan and Cast spells.
 | |
|      * @param token Token Address.
 | |
|      * @param tokenAmt Token Amount.
 | |
|      * @param data targets & data for cast.
 | |
|      */
 | |
|     function borrowAndCast(address token, uint tokenAmt, bytes memory data) public payable {
 | |
|         AccountInterface(address(this)).enable(getDydxLoanAddr());
 | |
| 
 | |
|         address _token = token == ethAddr ? getWethAddr() : token;
 | |
| 
 | |
|         DydxFlashInterface(getDydxLoanAddr()).initiateFlashLoan(_token, tokenAmt, data);
 | |
| 
 | |
|         AccountInterface(address(this)).disable(getDydxLoanAddr());
 | |
| 
 | |
|         emit LogDydxFlashLoan(token, tokenAmt);
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 | |
| contract ConnectDydxFlashLoan is FlashLoanResolver {
 | |
|     string public constant name = "dydx-flashloan-v1";
 | |
| }
 | 
