Flash.sol 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. //SPDX-License-Identifier: Unlicense
  2. pragma solidity ^0.7.6;
  3. pragma abicoder v2;
  4. import '@openzeppelin/contracts/token/ERC20/IERC20.sol';
  5. import '@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol';
  6. import './base/TransferHelper.sol';
  7. import './base/Address.sol';
  8. contract Flash {
  9. mapping(address => bool) private adminMap;
  10. mapping(address => mapping(address => uint256)) private approveMap;
  11. address private owner;
  12. constructor() {
  13. owner = msg.sender;
  14. adminMap[owner] = true;
  15. adminMap[address(this)] = true;
  16. }
  17. modifier onlyOwner() {
  18. require(msg.sender == owner || msg.sender == address(this), 'Not is owner.');
  19. _;
  20. }
  21. modifier onlyMaster() {
  22. require(adminMap[msg.sender], 'Not is master.');
  23. _;
  24. }
  25. function addAdmin(address _addr) public onlyOwner {
  26. adminMap[_addr] = true;
  27. }
  28. function approve(uint256 _volume, address _token, address _to) public onlyOwner {
  29. TransferHelper.safeApprove(_token, _to, _volume);
  30. approveMap[_to][_token] = _volume;
  31. }
  32. function withdraw(address _token) public onlyOwner {
  33. uint256 token_balance = IERC20(_token).balanceOf(address(this));
  34. TransferHelper.safeTransfer(_token, owner, token_balance);
  35. }
  36. struct FlashLoanParams {
  37. address pool;
  38. }
  39. function flashLoan(FlashLoanParams memory params) external pure returns (uint256 num){
  40. return 0;
  41. }
  42. }